instar 1.3.968 → 1.3.970
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +33 -23
- package/dist/commands/init.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +29 -29
- package/src/scaffold/templates/jobs/instar/evolution-overdue-check.md +7 -3
- package/src/scaffold/templates/jobs/instar/evolution-proposal-evaluate.md +7 -3
- package/src/scaffold/templates/jobs/instar/evolution-proposal-implement.md +6 -2
- package/src/scaffold/templates/jobs/instar/identity-review.md +1 -1
- package/src/scaffold/templates/jobs/instar/insight-harvest.md +7 -3
- package/src/scaffold/templates/jobs/instar/reflection-trigger.md +4 -2
- package/upgrades/1.3.969.md +35 -0
- package/upgrades/1.3.970.md +33 -0
- package/upgrades/side-effects/evo007-canonical-source-auth.eli16.md +47 -0
- package/upgrades/side-effects/evo007-canonical-source-auth.md +147 -0
- package/upgrades/side-effects/evo007-job-template-auth.eli16.md +51 -0
- package/upgrades/side-effects/evo007-job-template-auth.md +160 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AA6DH,UAAU,WAAW;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,yFAAyF;IACzF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,aAAa,GAAG,WAAW,GAAG,YAAY,GAAG,QAAQ,GAAG,MAAM,CAAC;CAC5E;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,aAAa,GAAG,WAAW,GAAG,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GACjF,aAAa,CAAC,aAAa,GAAG,WAAW,GAAG,YAAY,GAAG,QAAQ,CAAC,CAatE;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAAC,aAAa,GAAG,WAAW,GAAG,YAAY,GAAG,QAAQ,CAIjG,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,aAAa,GAAG,WAAW,GAAG,YAAY,GAAG,QAAQ,CAEvG;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBrE;AA24CD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CA2yC1E;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,4MAWrB,CAAC;AAEX;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAa/D;AA8ID,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AA6DH,UAAU,WAAW;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,yFAAyF;IACzF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,aAAa,GAAG,WAAW,GAAG,YAAY,GAAG,QAAQ,GAAG,MAAM,CAAC;CAC5E;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,aAAa,GAAG,WAAW,GAAG,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GACjF,aAAa,CAAC,aAAa,GAAG,WAAW,GAAG,YAAY,GAAG,QAAQ,CAAC,CAatE;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAAC,aAAa,GAAG,WAAW,GAAG,YAAY,GAAG,QAAQ,CAIjG,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,aAAa,GAAG,WAAW,GAAG,YAAY,GAAG,QAAQ,CAEvG;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBrE;AA24CD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CA2yC1E;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,4MAWrB,CAAC;AAEX;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAa/D;AA8ID,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CA4hBrD;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAqElF"}
|
package/dist/commands/init.js
CHANGED
|
@@ -2061,7 +2061,7 @@ Verify that the agent's awareness infrastructure is healthy: topic bindings poin
|
|
|
2061
2061
|
Read the auth token once:
|
|
2062
2062
|
|
|
2063
2063
|
\\\`\\\`\\\`
|
|
2064
|
-
AUTH
|
|
2064
|
+
AUTH="\${INSTAR_AUTH_TOKEN:-$(python3 -c "import json; v=json.load(open('.instar/config.json')).get('authToken',''); print(v if isinstance(v, str) else '')" 2>/dev/null)}"
|
|
2065
2065
|
\\\`\\\`\\\`
|
|
2066
2066
|
|
|
2067
2067
|
Check each area:
|
|
@@ -2133,7 +2133,7 @@ Review degradation events logged by the DegradationReporter, group repeated patt
|
|
|
2133
2133
|
Read the auth token:
|
|
2134
2134
|
|
|
2135
2135
|
\\\`\\\`\\\`
|
|
2136
|
-
AUTH
|
|
2136
|
+
AUTH="\${INSTAR_AUTH_TOKEN:-$(python3 -c "import json; v=json.load(open('.instar/config.json')).get('authToken',''); print(v if isinstance(v, str) else '')" 2>/dev/null)}"
|
|
2137
2137
|
\\\`\\\`\\\`
|
|
2138
2138
|
|
|
2139
2139
|
### 1. Read Events
|
|
@@ -2199,7 +2199,7 @@ Cross-validate agent state files for logical consistency. Detect orphaned refere
|
|
|
2199
2199
|
Read the auth token:
|
|
2200
2200
|
|
|
2201
2201
|
\\\`\\\`\\\`
|
|
2202
|
-
AUTH
|
|
2202
|
+
AUTH="\${INSTAR_AUTH_TOKEN:-$(python3 -c "import json; v=json.load(open('.instar/config.json')).get('authToken',''); print(v if isinstance(v, str) else '')" 2>/dev/null)}"
|
|
2203
2203
|
\\\`\\\`\\\`
|
|
2204
2204
|
|
|
2205
2205
|
### 1. Active Job Orphan
|
|
@@ -2272,7 +2272,7 @@ Review \\\`.instar/MEMORY.md\\\` for quality and hygiene. Memory is identity —
|
|
|
2272
2272
|
Read the auth token:
|
|
2273
2273
|
|
|
2274
2274
|
\\\`\\\`\\\`
|
|
2275
|
-
AUTH
|
|
2275
|
+
AUTH="\${INSTAR_AUTH_TOKEN:-$(python3 -c "import json; v=json.load(open('.instar/config.json')).get('authToken',''); print(v if isinstance(v, str) else '')" 2>/dev/null)}"
|
|
2276
2276
|
\\\`\\\`\\\`
|
|
2277
2277
|
|
|
2278
2278
|
Read the full file: \\\`cat .instar/MEMORY.md\\\`
|
|
@@ -2347,7 +2347,7 @@ Check whether the guardians themselves are healthy. Monitors job execution, skip
|
|
|
2347
2347
|
Read the auth token:
|
|
2348
2348
|
|
|
2349
2349
|
\\\`\\\`\\\`
|
|
2350
|
-
AUTH
|
|
2350
|
+
AUTH="\${INSTAR_AUTH_TOKEN:-$(python3 -c "import json; v=json.load(open('.instar/config.json')).get('authToken',''); print(v if isinstance(v, str) else '')" 2>/dev/null)}"
|
|
2351
2351
|
\\\`\\\`\\\`
|
|
2352
2352
|
|
|
2353
2353
|
### 1. Job Health
|
|
@@ -2452,7 +2452,7 @@ Check whether recent sessions contributed to long-term knowledge. Detects contin
|
|
|
2452
2452
|
Read the auth token:
|
|
2453
2453
|
|
|
2454
2454
|
\\\`\\\`\\\`
|
|
2455
|
-
AUTH
|
|
2455
|
+
AUTH="\${INSTAR_AUTH_TOKEN:-$(python3 -c "import json; v=json.load(open('.instar/config.json')).get('authToken',''); print(v if isinstance(v, str) else '')" 2>/dev/null)}"
|
|
2456
2456
|
\\\`\\\`\\\`
|
|
2457
2457
|
|
|
2458
2458
|
### 1. Recent Sessions
|
|
@@ -2998,7 +2998,7 @@ export function getDefaultJobs(port) {
|
|
|
2998
2998
|
enabled: true,
|
|
2999
2999
|
execute: {
|
|
3000
3000
|
type: 'prompt',
|
|
3001
|
-
value: `AUTH
|
|
3001
|
+
value: `AUTH="\${INSTAR_AUTH_TOKEN:-$(python3 -c "import json; v=json.load(open('.instar/config.json')).get('authToken',''); print(v if isinstance(v, str) else '')" 2>/dev/null)}"
|
|
3002
3002
|
|
|
3003
3003
|
# Read recent activity logs to understand what happened in last 4 hours
|
|
3004
3004
|
RECENT_LOGS=$(ls -t .instar/logs/activity-*.jsonl 2>/dev/null | head -1)
|
|
@@ -3008,7 +3008,9 @@ fi
|
|
|
3008
3008
|
|
|
3009
3009
|
# Extract recent session activity and key events (filter out noise, keep significant events)
|
|
3010
3010
|
echo "=== RECENT ACTIVITY (Last 4 Hours) ==="
|
|
3011
|
-
tail -500 "$RECENT_LOGS" 2>/dev/null | jq -r 'select(.type
|
|
3011
|
+
tail -500 "$RECENT_LOGS" 2>/dev/null | jq -r 'select(.type | IN("job_triggered","job_gate_skip","job_skipped") | not) | "\(.timestamp) [\(.type)] \(.summary // .metadata.slug // "")"' | tail -100
|
|
3012
|
+
echo "--- volume summary (noise types excluded above) ---"
|
|
3013
|
+
tail -500 "$RECENT_LOGS" 2>/dev/null | jq -r '.type' 2>/dev/null | sort | uniq -c | sort -rn
|
|
3012
3014
|
|
|
3013
3015
|
echo ""
|
|
3014
3016
|
echo "=== YOUR TASK ==="
|
|
@@ -3022,7 +3024,7 @@ echo ""
|
|
|
3022
3024
|
echo "If you find genuine learnings:"
|
|
3023
3025
|
echo "1. Update .instar/MEMORY.md with the insight (append to the file)"
|
|
3024
3026
|
echo "2. Be specific: include what was learned, why it matters, and how it should guide future work"
|
|
3025
|
-
echo "3. Signal completion: curl -s -X POST http://localhost:\${INSTAR_PORT:-${port}}/reflection/record -H 'Content-Type: application/json' -d '{
|
|
3027
|
+
echo "3. Signal completion: curl -s -X POST -H \\"Authorization: Bearer \\$INSTAR_AUTH_TOKEN\\" -H \\"X-Instar-AgentId: \\$INSTAR_AGENT_ID\\" http://localhost:\${INSTAR_PORT:-${port}}/reflection/record -H 'Content-Type: application/json' -d '{\\"type\\":\\"quick\\"}'"
|
|
3026
3028
|
echo ""
|
|
3027
3029
|
echo "If nothing significant, do nothing. Silence means continuity is working as expected."`,
|
|
3028
3030
|
},
|
|
@@ -3055,7 +3057,7 @@ echo "If nothing significant, do nothing. Silence means continuity is working as
|
|
|
3055
3057
|
gate: `curl -sf http://localhost:\${INSTAR_PORT:-${port}}/health >/dev/null 2>&1`,
|
|
3056
3058
|
execute: {
|
|
3057
3059
|
type: 'script',
|
|
3058
|
-
value: `RESULT=$(curl -s -X POST http://localhost:\${INSTAR_PORT:-${port}}/feedback/retry 2>/dev/null); COUNT=$(echo "$RESULT" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('retried',0))" 2>/dev/null || echo 0); [ "$COUNT" -gt "0" ] && echo "Feedback retry: $COUNT item(s) forwarded." || echo "Feedback retry: nothing pending."`,
|
|
3060
|
+
value: `AUTH="\${INSTAR_AUTH_TOKEN:-$(python3 -c "import json; v=json.load(open('.instar/config.json')).get('authToken',''); print(v if isinstance(v, str) else '')" 2>/dev/null)}"; RESULT=$(curl -s -X POST -H "Authorization: Bearer $AUTH" -H "X-Instar-AgentId: $INSTAR_AGENT_ID" http://localhost:\${INSTAR_PORT:-${port}}/feedback/retry 2>/dev/null); COUNT=$(echo "$RESULT" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('retried',0))" 2>/dev/null || echo 0); [ "$COUNT" -gt "0" ] && echo "Feedback retry: $COUNT item(s) forwarded." || echo "Feedback retry: nothing pending."`,
|
|
3059
3061
|
},
|
|
3060
3062
|
tags: ['cat:infrastructure'],
|
|
3061
3063
|
},
|
|
@@ -3071,7 +3073,11 @@ echo "If nothing significant, do nothing. Silence means continuity is working as
|
|
|
3071
3073
|
gate: `curl -sf -H "Authorization: Bearer $INSTAR_AUTH_TOKEN" -H "X-Instar-AgentId: $INSTAR_AGENT_ID" http://localhost:\${INSTAR_PORT:-${port}}/evolution/learnings?applied=false 2>/dev/null | python3 -c "import sys,json; d=json.load(sys.stdin); exit(0 if len(d.get('learnings',[])) > 0 else 1)"`,
|
|
3072
3074
|
execute: {
|
|
3073
3075
|
type: 'prompt',
|
|
3074
|
-
value: `
|
|
3076
|
+
value: `AUTH="\${INSTAR_AUTH_TOKEN:-$(python3 -c "import json; v=json.load(open('.instar/config.json')).get('authToken',''); print(v if isinstance(v, str) else '')" 2>/dev/null)}"
|
|
3077
|
+
AGENT_ID="\${INSTAR_AGENT_ID:-$(python3 -c "import json; print(json.load(open('.instar/config.json')).get('projectName',''))" 2>/dev/null)}"
|
|
3078
|
+
PORT="\${INSTAR_PORT:-${port}}"
|
|
3079
|
+
|
|
3080
|
+
Harvest and synthesize learnings: curl -s -H "Authorization: Bearer $AUTH" -H "X-Instar-AgentId: $AGENT_ID" "http://localhost:$PORT/evolution/learnings?applied=false"
|
|
3075
3081
|
|
|
3076
3082
|
Review unapplied learnings and look for:
|
|
3077
3083
|
1. **Patterns**: Multiple learnings pointing to the same conclusion
|
|
@@ -3079,10 +3085,10 @@ Review unapplied learnings and look for:
|
|
|
3079
3085
|
3. **Cross-domain connections**: Insights from one area that apply to another
|
|
3080
3086
|
|
|
3081
3087
|
For each actionable pattern found, create an evolution proposal:
|
|
3082
|
-
curl -s -X POST http://localhost
|
|
3088
|
+
curl -s -X POST -H "Authorization: Bearer $AUTH" -H "X-Instar-AgentId: $AGENT_ID" http://localhost:$PORT/evolution/proposals -H 'Content-Type: application/json' -d '{"title":"...","source":"insight-harvest from LRN-XXX","description":"...","type":"...","impact":"...","effort":"..."}'
|
|
3083
3089
|
|
|
3084
3090
|
Then mark the relevant learnings as applied:
|
|
3085
|
-
curl -s -X PATCH http://localhost
|
|
3091
|
+
curl -s -X PATCH -H "Authorization: Bearer $AUTH" -H "X-Instar-AgentId: $AGENT_ID" http://localhost:$PORT/evolution/learnings/LRN-XXX/apply -H 'Content-Type: application/json' -d '{"appliedTo":"EVO-XXX"}'
|
|
3086
3092
|
|
|
3087
3093
|
Also update MEMORY.md with any patterns worth preserving long-term.
|
|
3088
3094
|
|
|
@@ -3102,15 +3108,19 @@ If no actionable patterns found, exit silently.`,
|
|
|
3102
3108
|
gate: `curl -sf -H "Authorization: Bearer $INSTAR_AUTH_TOKEN" -H "X-Instar-AgentId: $INSTAR_AGENT_ID" http://localhost:\${INSTAR_PORT:-${port}}/evolution/actions/overdue 2>/dev/null | python3 -c "import sys,json; d=json.load(sys.stdin); exit(0 if len(d.get('overdue',[])) > 0 else 1)"`,
|
|
3103
3109
|
execute: {
|
|
3104
3110
|
type: 'prompt',
|
|
3105
|
-
value: `
|
|
3111
|
+
value: `AUTH="\${INSTAR_AUTH_TOKEN:-$(python3 -c "import json; v=json.load(open('.instar/config.json')).get('authToken',''); print(v if isinstance(v, str) else '')" 2>/dev/null)}"
|
|
3112
|
+
AGENT_ID="\${INSTAR_AGENT_ID:-$(python3 -c "import json; print(json.load(open('.instar/config.json')).get('projectName',''))" 2>/dev/null)}"
|
|
3113
|
+
PORT="\${INSTAR_PORT:-${port}}"
|
|
3114
|
+
|
|
3115
|
+
Check for overdue commitments: curl -s -H "Authorization: Bearer $AUTH" -H "X-Instar-AgentId: $AGENT_ID" http://localhost:$PORT/evolution/actions/overdue
|
|
3106
3116
|
|
|
3107
3117
|
For each overdue action:
|
|
3108
3118
|
1. Assess: Can this be completed now? Is it still relevant?
|
|
3109
3119
|
2. If actionable, attempt to complete it or advance it
|
|
3110
|
-
3. If no longer relevant, cancel it: curl -s -X PATCH http://localhost
|
|
3120
|
+
3. If no longer relevant, cancel it: curl -s -X PATCH -H "Authorization: Bearer $AUTH" -H "X-Instar-AgentId: $AGENT_ID" http://localhost:$PORT/evolution/actions/ACT-XXX -H 'Content-Type: application/json' -d '{"status":"cancelled","resolution":"No longer relevant because..."}'
|
|
3111
3121
|
4. If blocked, escalate to the user via Telegram (if configured)
|
|
3112
3122
|
|
|
3113
|
-
Also check pending actions (curl -s http://localhost
|
|
3123
|
+
Also check pending actions (curl -s -H "Authorization: Bearer $AUTH" -H "X-Instar-AgentId: $AGENT_ID" "http://localhost:$PORT/evolution/actions?status=pending") for items that have been pending more than 48 hours without a due date — these are forgotten commitments.
|
|
3114
3124
|
|
|
3115
3125
|
If no overdue or stale items, exit silently.`,
|
|
3116
3126
|
},
|
|
@@ -3260,10 +3270,10 @@ If no overdue or stale items, exit silently.`,
|
|
|
3260
3270
|
expectedDurationMinutes: 1,
|
|
3261
3271
|
model: 'haiku',
|
|
3262
3272
|
enabled: true,
|
|
3263
|
-
gate: `curl -sf http://localhost:\${INSTAR_PORT:-${port}}/health >/dev/null 2>&1 && AUTH
|
|
3273
|
+
gate: `curl -sf http://localhost:\${INSTAR_PORT:-${port}}/health >/dev/null 2>&1 && AUTH="\${INSTAR_AUTH_TOKEN:-$(python3 -c "import json; v=json.load(open('.instar/config.json')).get('authToken',''); print(v if isinstance(v, str) else '')" 2>/dev/null)}" && curl -sf -H "Authorization: Bearer $AUTH" -H "X-Instar-AgentId: $INSTAR_AGENT_ID" http://localhost:\${INSTAR_PORT:-${port}}/semantic/stats >/dev/null 2>&1`,
|
|
3264
3274
|
execute: {
|
|
3265
3275
|
type: 'script',
|
|
3266
|
-
value: `AUTH
|
|
3276
|
+
value: `AUTH="\${INSTAR_AUTH_TOKEN:-$(python3 -c "import json; v=json.load(open('.instar/config.json')).get('authToken',''); print(v if isinstance(v, str) else '')" 2>/dev/null)}"; AGENT=$(python3 -c "import json; print(json.load(open('.instar/config.json')).get('agentName','Agent'))" 2>/dev/null); RESULT=$(curl -s -X POST -H "Authorization: Bearer $AUTH" -H "Content-Type: application/json" -d "{\\"filePath\\":\\".instar/MEMORY.md\\",\\"agentName\\":\\"$AGENT\\"}" http://localhost:\${INSTAR_PORT:-${port}}/semantic/export-memory 2>/dev/null); COUNT=$(echo "$RESULT" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('entityCount',0))" 2>/dev/null || echo 0); EXCLUDED=$(echo "$RESULT" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('excludedCount',0))" 2>/dev/null || echo 0); [ "$COUNT" -gt "0" ] && echo "Memory export: $COUNT entities written to MEMORY.md ($EXCLUDED excluded below threshold)." || echo "Memory export: no entities to export."`,
|
|
3267
3277
|
},
|
|
3268
3278
|
tags: ['cat:maintenance', 'role:worker', 'exec:script'],
|
|
3269
3279
|
},
|
|
@@ -3296,7 +3306,7 @@ If no overdue or stale items, exit silently.`,
|
|
|
3296
3306
|
gate: `curl -sf http://localhost:\${INSTAR_PORT:-${port}}/health >/dev/null 2>&1`,
|
|
3297
3307
|
execute: {
|
|
3298
3308
|
type: 'script',
|
|
3299
|
-
value: `AUTH
|
|
3309
|
+
value: `AUTH="\${INSTAR_AUTH_TOKEN:-$(python3 -c "import json; v=json.load(open('.instar/config.json')).get('authToken',''); print(v if isinstance(v, str) else '')" 2>/dev/null)}"; REFRESH=$(curl -s -X POST -H "Authorization: Bearer $AUTH" -H "X-Instar-AgentId: $INSTAR_AGENT_ID" http://localhost:\${INSTAR_PORT:-${port}}/capability-map/refresh 2>/dev/null); DRIFT=$(curl -s -H "Authorization: Bearer $AUTH" -H "X-Instar-AgentId: $INSTAR_AGENT_ID" http://localhost:\${INSTAR_PORT:-${port}}/capability-map/drift 2>/dev/null); ADDED=$(echo "$DRIFT" | python3 -c "import sys,json; d=json.load(sys.stdin); print(len(d.get('added',[])))" 2>/dev/null || echo 0); REMOVED=$(echo "$DRIFT" | python3 -c "import sys,json; d=json.load(sys.stdin); print(len(d.get('removed',[])))" 2>/dev/null || echo 0); CHANGED=$(echo "$DRIFT" | python3 -c "import sys,json; d=json.load(sys.stdin); print(len(d.get('changed',[])))" 2>/dev/null || echo 0); UNMAPPED=$(echo "$DRIFT" | python3 -c "import sys,json; d=json.load(sys.stdin); print(len(d.get('unmapped',[])))" 2>/dev/null || echo 0); if [ "$ADDED" -gt "0" ] || [ "$REMOVED" -gt "0" ] || [ "$CHANGED" -gt "0" ] || [ "$UNMAPPED" -gt "0" ]; then echo "Capability drift detected: +$ADDED -$REMOVED ~$CHANGED ?$UNMAPPED"; echo "$DRIFT" | python3 -c "import sys,json; d=json.load(sys.stdin); [print(f' + {c[\"id\"]}') for c in d.get('added',[])]; [print(f' - {r[\"id\"]}') for r in d.get('removed',[])]; [print(f' ~ {c[\"id\"]} ({c[\"field\"]})') for c in d.get('changed',[])]" 2>/dev/null; else echo "Capability audit: no drift detected."; fi`,
|
|
3300
3310
|
},
|
|
3301
3311
|
grounding: {
|
|
3302
3312
|
requiresIdentity: false,
|
|
@@ -3318,7 +3328,7 @@ If no overdue or stale items, exit silently.`,
|
|
|
3318
3328
|
type: 'prompt',
|
|
3319
3329
|
value: `Identity review — check your identity coherence and growth.
|
|
3320
3330
|
|
|
3321
|
-
AUTH
|
|
3331
|
+
AUTH="\${INSTAR_AUTH_TOKEN:-$(python3 -c "import json; v=json.load(open('.instar/config.json')).get('authToken',''); print(v if isinstance(v, str) else '')" 2>/dev/null)}"
|
|
3322
3332
|
|
|
3323
3333
|
1. **Check soul.md drift**: curl -s -H "Authorization: Bearer $AUTH" -H "X-Instar-AgentId: $INSTAR_AGENT_ID" http://localhost:\${INSTAR_PORT:-${port}}/identity/soul/drift
|
|
3324
3334
|
- If anyAboveThreshold is true, review the divergence. Is this healthy growth or unexpected drift?
|
|
@@ -3362,7 +3372,7 @@ If everything is coherent and no reflection is needed, exit silently. Only repor
|
|
|
3362
3372
|
gate: `curl -sf -H "Authorization: Bearer $INSTAR_AUTH_TOKEN" -H "X-Instar-AgentId: $INSTAR_AGENT_ID" http://localhost:\${INSTAR_PORT:-${port}}/evolution/proposals?status=proposed 2>/dev/null | python3 -c "import sys,json; d=json.load(sys.stdin); exit(0 if len(d.get('proposals',[])) > 0 else 1)"`,
|
|
3363
3373
|
execute: {
|
|
3364
3374
|
type: 'prompt',
|
|
3365
|
-
value: `
|
|
3375
|
+
value: `AUTH="\${INSTAR_AUTH_TOKEN:-$(python3 -c "import json; v=json.load(open('.instar/config.json')).get('authToken',''); print(v if isinstance(v, str) else '')" 2>/dev/null)}"\nAGENT_ID="\${INSTAR_AGENT_ID:-$(python3 -c "import json; print(json.load(open('.instar/config.json')).get('projectName',''))" 2>/dev/null)}"\nPORT="\${INSTAR_PORT:-${port}}"\n\nReview pending evolution proposals: curl -s -H "Authorization: Bearer $AUTH" -H "X-Instar-AgentId: $AGENT_ID" "http://localhost:$PORT/evolution/proposals?status=proposed"\n\nFor each proposal:\n1. Read the title, description, type, and source\n2. Evaluate: Is this a genuine improvement? Is the effort worth the impact? Does it align with our goals?\n3. If approved, update status: curl -s -X PATCH -H "Authorization: Bearer $AUTH" -H "X-Instar-AgentId: $AGENT_ID" http://localhost:$PORT/evolution/proposals/EVO-XXX -H 'Content-Type: application/json' -d '{"status":"approved"}'\n4. If rejected or deferred, update with reason.\n\nDo NOT implement approved proposals — that's handled by the paired evolution-proposal-implement job.\n\nAlso check the dashboard: curl -s -H "Authorization: Bearer $AUTH" -H "X-Instar-AgentId: $AGENT_ID" http://localhost:$PORT/evolution — report any highlights to the user if they seem important.\n\nIf no proposals need attention, exit silently.`,
|
|
3366
3376
|
},
|
|
3367
3377
|
tags: ['cat:learning', 'role:worker', 'exec:prompt', 'pair:evolution-proposal-implement'],
|
|
3368
3378
|
},
|
|
@@ -3378,7 +3388,7 @@ If everything is coherent and no reflection is needed, exit silently. Only repor
|
|
|
3378
3388
|
gate: `curl -sf -H "Authorization: Bearer $INSTAR_AUTH_TOKEN" -H "X-Instar-AgentId: $INSTAR_AGENT_ID" http://localhost:\${INSTAR_PORT:-${port}}/evolution/proposals?status=approved 2>/dev/null | python3 -c "import sys,json; d=json.load(sys.stdin); exit(0 if len(d.get('proposals',[])) > 0 else 1)"`,
|
|
3379
3389
|
execute: {
|
|
3380
3390
|
type: 'prompt',
|
|
3381
|
-
value: `
|
|
3391
|
+
value: `AUTH="\${INSTAR_AUTH_TOKEN:-$(python3 -c "import json; v=json.load(open('.instar/config.json')).get('authToken',''); print(v if isinstance(v, str) else '')" 2>/dev/null)}"\nAGENT_ID="\${INSTAR_AGENT_ID:-$(python3 -c "import json; print(json.load(open('.instar/config.json')).get('projectName',''))" 2>/dev/null)}"\nPORT="\${INSTAR_PORT:-${port}}"\n\nImplement approved evolution proposals: curl -s -H "Authorization: Bearer $AUTH" -H "X-Instar-AgentId: $AGENT_ID" "http://localhost:$PORT/evolution/proposals?status=approved"\n\nFor each approved proposal:\n1. Read the full description and understand what needs to be built\n2. Implement it: create the skill/hook/job/config change described\n3. After implementation, mark complete: curl -s -X PATCH -H "Authorization: Bearer $AUTH" -H "X-Instar-AgentId: $AGENT_ID" http://localhost:$PORT/evolution/proposals/EVO-XXX -H 'Content-Type: application/json' -d '{"status":"implemented","resolution":"What was done"}'\n\nIf no approved proposals exist, exit silently.`,
|
|
3382
3392
|
},
|
|
3383
3393
|
grounding: {
|
|
3384
3394
|
requiresIdentity: true,
|
|
@@ -3398,7 +3408,7 @@ If everything is coherent and no reflection is needed, exit silently. Only repor
|
|
|
3398
3408
|
gate: `curl -sf http://localhost:\${INSTAR_PORT:-${port}}/health >/dev/null 2>&1`,
|
|
3399
3409
|
execute: {
|
|
3400
3410
|
type: 'prompt',
|
|
3401
|
-
value: `Scan recent messages for commitments and promises.\n\nAUTH
|
|
3411
|
+
value: `Scan recent messages for commitments and promises.\n\nAUTH="\${INSTAR_AUTH_TOKEN:-$(python3 -c "import json; v=json.load(open('.instar/config.json')).get('authToken',''); print(v if isinstance(v, str) else '')" 2>/dev/null)}"\n\n1. Read your bookmark: cat .instar/state/commitment-detection-bookmark.json 2>/dev/null || echo '{"lastProcessedId": 0}'\n2. Fetch new messages since bookmark from Telegram message log: tail -100 .instar/telegram-messages.jsonl\n3. For each new message, check: does it contain a commitment, promise, or action item? Look for patterns like 'I will', 'let me', 'I\\'ll build', 'we should', 'TODO', 'action item', deadlines, etc.\n4. For each detected commitment, register it: curl -s -X POST http://localhost:\${INSTAR_PORT:-${port}}/evolution/actions -H "Authorization: Bearer $AUTH" -H 'Content-Type: application/json' -d '{"title":"...","source":"commitment-detection","description":"...","dueDate":"..."}'\n5. Update bookmark with the last processed message ID.\n\nOnly process NEW messages since last bookmark. Exit silently if no new commitments found.`,
|
|
3402
3412
|
},
|
|
3403
3413
|
tags: ['cat:evolution', 'role:worker', 'exec:prompt', 'pair:evolution-overdue-check'],
|
|
3404
3414
|
},
|