refactor: update agent sync behavior, improve freshness detection patterns, and add diagnostic troubleshooting script
This commit is contained in:
@@ -13,11 +13,44 @@ Use this when the user asks for:
|
||||
|
||||
Run sync:
|
||||
|
||||
!`if [ -n "$AIW_MATTERMOST_SYNC_CMD" ]; then bash -lc "$AIW_MATTERMOST_SYNC_CMD"; elif [ -n "$FIDELITY_MATTERMOST_SYNC_CMD" ]; then bash -lc "$FIDELITY_MATTERMOST_SYNC_CMD"; elif [ -f scripts/mattermost/sync.sh ]; then bash scripts/mattermost/sync.sh; else echo "No Mattermost sync command is configured."; fi`
|
||||
!`start=$(date +%s); if [ -n "$AIW_MATTERMOST_SYNC_CMD" ]; then bash -lc "$AIW_MATTERMOST_SYNC_CMD"; elif [ -n "$FIDELITY_MATTERMOST_SYNC_CMD" ]; then bash -lc "$FIDELITY_MATTERMOST_SYNC_CMD"; elif [ -f scripts/mattermost/sync.sh ]; then bash scripts/mattermost/sync.sh; else echo "No Mattermost sync command is configured."; fi; status=$?; end=$(date +%s); echo "__MATTERMOST_SYNC_SECONDS__=$((end - start))"; exit "$status"`
|
||||
|
||||
Read refreshed Mattermost context:
|
||||
Read a focused slice of refreshed Mattermost context:
|
||||
|
||||
!`if [ -s ai/inbox/mattermost-latest.md ]; then cat ai/inbox/mattermost-latest.md; elif [ -s scripts/mattermost/generated/mattermost_context.jsonl ]; then cat scripts/mattermost/generated/mattermost_context.jsonl; else echo "No Mattermost context available after sync."; fi`
|
||||
!`python3 - <<'PY'
|
||||
import json
|
||||
from pathlib import Path
|
||||
|
||||
paths = [
|
||||
Path("ai/inbox/mattermost-latest.md"),
|
||||
Path("scripts/mattermost/generated/mattermost_context.jsonl"),
|
||||
]
|
||||
|
||||
source = next((path for path in paths if path.is_file() and path.stat().st_size > 0), None)
|
||||
if not source:
|
||||
print("No Mattermost context available after sync.")
|
||||
raise SystemExit(0)
|
||||
|
||||
records = []
|
||||
for line in source.read_text().splitlines():
|
||||
line = line.strip()
|
||||
if not line:
|
||||
continue
|
||||
try:
|
||||
records.append(json.loads(line))
|
||||
except json.JSONDecodeError:
|
||||
continue
|
||||
|
||||
manager_names = {"jeff", "jeff.dewitte"}
|
||||
manager_records = [
|
||||
record for record in records
|
||||
if str(record.get("username", "")).lower() in manager_names
|
||||
]
|
||||
|
||||
focused = manager_records[-10:] if manager_records else records[-15:]
|
||||
for record in focused:
|
||||
print(json.dumps(record, ensure_ascii=False))
|
||||
PY`
|
||||
|
||||
User request:
|
||||
|
||||
@@ -26,15 +59,18 @@ $ARGUMENTS
|
||||
Instructions:
|
||||
|
||||
- Do not answer from old conversation memory.
|
||||
- Use only the refreshed Mattermost output above.
|
||||
- Use only the focused refreshed Mattermost output above.
|
||||
- If the user asks for the current manager/stakeholder, filter messages by the profile mapping when visible; for the Fidelity profile, also match `jeff` and `jeff.dewitte`.
|
||||
- If multiple messages match, return the newest matching message first.
|
||||
- Include timestamp, channel, sender, and concise summary.
|
||||
- If the message changes project context, update the appropriate workspace memory after answering, writing to `project-knowledge/` first.
|
||||
- Do not edit workspace memory in this command.
|
||||
- If the message appears to change project context, report it as a memory update candidate and name the likely target file.
|
||||
- Use `/communication-sync` or an explicit user request to promote the fact after the latest-message answer is complete.
|
||||
- If sync fails or no refreshed context is available, say that directly and do not infer from stale context.
|
||||
- If a write or patch attempt fails in this flow, stop immediately and return the latest-message answer plus the failed target; do not retry.
|
||||
|
||||
Return:
|
||||
|
||||
1. Latest matching message
|
||||
2. Why it matters
|
||||
3. Any memory update made
|
||||
3. Memory update candidate, if any
|
||||
|
||||
Reference in New Issue
Block a user