instar 0.28.48 → 0.28.50
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.js +93 -93
- package/dist/commands/init.js.map +1 -1
- package/dist/core/PostUpdateMigrator.d.ts +14 -0
- package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
- package/dist/core/PostUpdateMigrator.js +46 -0
- package/dist/core/PostUpdateMigrator.js.map +1 -1
- package/package.json +1 -1
- package/scripts/pre-push-gate.js +6 -3
- package/src/data/builtin-manifest.json +43 -43
- package/upgrades/0.28.49.md +52 -0
- package/upgrades/0.28.50.md +59 -0
- package/upgrades/side-effects/0.28.49.md +90 -0
- package/upgrades/side-effects/pre-push-gate-ci-scope.md +104 -0
- package/upgrades/side-effects/skill-port-dynamic-resolution.md +104 -0
package/dist/commands/init.js
CHANGED
|
@@ -1164,7 +1164,7 @@ Your identity is not fixed at creation. It grows through experience. As you work
|
|
|
1164
1164
|
- Jobs: \`.instar/jobs.json\`
|
|
1165
1165
|
- Users: \`.instar/users.json\`
|
|
1166
1166
|
- Server: \`instar server start\` (port ${port})
|
|
1167
|
-
- Status: \`curl http://localhost
|
|
1167
|
+
- Status: \`curl http://localhost:\${INSTAR_PORT:-${port}}/health\`
|
|
1168
1168
|
|
|
1169
1169
|
### Reporting Issues & Feedback (IMPORTANT — Read This First)
|
|
1170
1170
|
|
|
@@ -1173,7 +1173,7 @@ Your identity is not fixed at creation. It grows through experience. As you work
|
|
|
1173
1173
|
When something isn't working with instar, or the user wants a feature, use your feedback API:
|
|
1174
1174
|
|
|
1175
1175
|
\`\`\`bash
|
|
1176
|
-
curl -X POST http://localhost
|
|
1176
|
+
curl -X POST http://localhost:\${INSTAR_PORT:-${port}}/feedback \\
|
|
1177
1177
|
-H 'Content-Type: application/json' \\
|
|
1178
1178
|
-d '{"type":"bug","title":"Short description","description":"Full details with context"}'
|
|
1179
1179
|
\`\`\`
|
|
@@ -1181,21 +1181,21 @@ curl -X POST http://localhost:${port}/feedback \\
|
|
|
1181
1181
|
This routes feedback to the Instar maintainers automatically. Valid types: \`bug\`, \`feature\`, \`improvement\`, \`question\`, \`hallucination\`.
|
|
1182
1182
|
|
|
1183
1183
|
**NEVER use \`gh issue\`, \`gh api\`, or GitHub CLI to file issues.** The feedback API is your channel.
|
|
1184
|
-
- View submitted feedback: \`curl http://localhost
|
|
1185
|
-
- Retry failed forwards: \`curl -X POST http://localhost
|
|
1184
|
+
- View submitted feedback: \`curl http://localhost:\${INSTAR_PORT:-${port}}/feedback\`
|
|
1185
|
+
- Retry failed forwards: \`curl -X POST http://localhost:\${INSTAR_PORT:-${port}}/feedback/retry\`
|
|
1186
1186
|
|
|
1187
1187
|
### What You Have (Capabilities)
|
|
1188
1188
|
|
|
1189
1189
|
**Feedback System** — Report bugs, request features, suggest improvements. All via \`POST /feedback\`. NOT GitHub.
|
|
1190
1190
|
|
|
1191
1191
|
**Job Scheduler** — Run tasks on a schedule. Jobs are defined in \`.instar/jobs.json\`.
|
|
1192
|
-
- View jobs: \`curl http://localhost
|
|
1193
|
-
- Trigger a job: \`curl -X POST http://localhost
|
|
1192
|
+
- View jobs: \`curl http://localhost:\${INSTAR_PORT:-${port}}/jobs\`
|
|
1193
|
+
- Trigger a job: \`curl -X POST http://localhost:\${INSTAR_PORT:-${port}}/jobs/SLUG/trigger\`
|
|
1194
1194
|
- **Create new jobs**: Edit \`.instar/jobs.json\`. Each job has a slug, schedule (cron), priority, and either a prompt (Claude session), script (shell command), or skill.
|
|
1195
1195
|
|
|
1196
1196
|
**Sessions** — Spawn and manage Claude Code sessions.
|
|
1197
|
-
- List: \`curl http://localhost
|
|
1198
|
-
- Spawn: \`curl -X POST http://localhost
|
|
1197
|
+
- List: \`curl http://localhost:\${INSTAR_PORT:-${port}}/sessions\`
|
|
1198
|
+
- Spawn: \`curl -X POST http://localhost:\${INSTAR_PORT:-${port}}/sessions/spawn -H 'Content-Type: application/json' -d '{"name":"task","prompt":"do something"}'\`
|
|
1199
1199
|
|
|
1200
1200
|
**Scripts** — Create shell/python scripts in \`.claude/scripts/\` for reusable capabilities.
|
|
1201
1201
|
|
|
@@ -1226,7 +1226,7 @@ Skills compound over time. Each one makes future sessions more capable. You are
|
|
|
1226
1226
|
Before EVER saying "I don't have", "I can't", or "this isn't available" — check what actually exists:
|
|
1227
1227
|
|
|
1228
1228
|
\`\`\`bash
|
|
1229
|
-
curl http://localhost
|
|
1229
|
+
curl http://localhost:\${INSTAR_PORT:-${port}}/capabilities
|
|
1230
1230
|
\`\`\`
|
|
1231
1231
|
|
|
1232
1232
|
This returns your full capability matrix: scripts, hooks, Telegram status, jobs, relationships, and more. It is the source of truth about what you can do. **Never hallucinate about missing capabilities — verify first.**
|
|
@@ -1287,7 +1287,7 @@ Instar has a built-in feedback loop. When something isn't working, your user can
|
|
|
1287
1287
|
|
|
1288
1288
|
**A rising tide lifts all ships** — every user's feedback improves the platform for everyone. Updates are applied automatically.
|
|
1289
1289
|
|
|
1290
|
-
- Report: \`curl -X POST http://localhost
|
|
1290
|
+
- Report: \`curl -X POST http://localhost:\${INSTAR_PORT:-${port}}/feedback -d '{"issue":"description","context":"relevant logs"}'\`
|
|
1291
1291
|
- Check updates: \`npm outdated -g instar\`
|
|
1292
1292
|
|
|
1293
1293
|
### Evolution System
|
|
@@ -1295,27 +1295,27 @@ Instar has a built-in feedback loop. When something isn't working, your user can
|
|
|
1295
1295
|
You have a built-in evolution system with four subsystems. This is not a metaphor — it's infrastructure that tracks your growth.
|
|
1296
1296
|
|
|
1297
1297
|
**Evolution Queue** — Staged self-improvement proposals.
|
|
1298
|
-
- View: \`curl http://localhost
|
|
1298
|
+
- View: \`curl http://localhost:\${INSTAR_PORT:-${port}}/evolution/proposals\`
|
|
1299
1299
|
- Propose: \`/evolve\` skill or \`POST /evolution/proposals\`
|
|
1300
1300
|
- The \`evolution-review\` job evaluates and implements proposals every 6 hours.
|
|
1301
1301
|
|
|
1302
1302
|
**Learning Registry** — Structured, searchable insights.
|
|
1303
|
-
- View: \`curl http://localhost
|
|
1303
|
+
- View: \`curl http://localhost:\${INSTAR_PORT:-${port}}/evolution/learnings\`
|
|
1304
1304
|
- Record: \`/learn\` skill or \`POST /evolution/learnings\`
|
|
1305
1305
|
- The \`insight-harvest\` job synthesizes patterns into proposals every 8 hours.
|
|
1306
1306
|
|
|
1307
1307
|
**Capability Gaps** — Track what you're missing.
|
|
1308
|
-
- View: \`curl http://localhost
|
|
1308
|
+
- View: \`curl http://localhost:\${INSTAR_PORT:-${port}}/evolution/gaps\`
|
|
1309
1309
|
- Report: \`/gaps\` skill or \`POST /evolution/gaps\`
|
|
1310
1310
|
|
|
1311
1311
|
**Action Queue** — Commitments with follow-through tracking.
|
|
1312
|
-
- View: \`curl http://localhost
|
|
1312
|
+
- View: \`curl http://localhost:\${INSTAR_PORT:-${port}}/evolution/actions\`
|
|
1313
1313
|
- Create: \`/commit-action\` skill or \`POST /evolution/actions\`
|
|
1314
1314
|
- The \`commitment-check\` job surfaces overdue items every 4 hours.
|
|
1315
1315
|
|
|
1316
1316
|
**Dashboard** — Full evolution health:
|
|
1317
1317
|
\`\`\`bash
|
|
1318
|
-
curl http://localhost
|
|
1318
|
+
curl http://localhost:\${INSTAR_PORT:-${port}}/evolution
|
|
1319
1319
|
\`\`\`
|
|
1320
1320
|
|
|
1321
1321
|
**Skills:** \`/evolve\`, \`/learn\`, \`/gaps\`, \`/commit-action\`
|
|
@@ -1367,7 +1367,7 @@ Propose an evolution improvement. Use this when you identify something about you
|
|
|
1367
1367
|
4. **Submit the proposal**:
|
|
1368
1368
|
|
|
1369
1369
|
\`\`\`bash
|
|
1370
|
-
curl -s -X POST http://localhost
|
|
1370
|
+
curl -s -X POST http://localhost:\${INSTAR_PORT:-${port}}/evolution/proposals \\
|
|
1371
1371
|
-H 'Content-Type: application/json' \\
|
|
1372
1372
|
-d '{"title":"TITLE","source":"WHERE_YOU_NOTICED","description":"WHAT_AND_WHY","type":"TYPE","impact":"medium","effort":"medium"}'
|
|
1373
1373
|
\`\`\`
|
|
@@ -1375,7 +1375,7 @@ curl -s -X POST http://localhost:${port}/evolution/proposals \\
|
|
|
1375
1375
|
5. **Check the dashboard** for context:
|
|
1376
1376
|
|
|
1377
1377
|
\`\`\`bash
|
|
1378
|
-
curl -s http://localhost
|
|
1378
|
+
curl -s http://localhost:\${INSTAR_PORT:-${port}}/evolution
|
|
1379
1379
|
\`\`\`
|
|
1380
1380
|
|
|
1381
1381
|
## When to Use
|
|
@@ -1413,7 +1413,7 @@ Record a learning or insight. Use this when you discover something worth remembe
|
|
|
1413
1413
|
4. **Submit**:
|
|
1414
1414
|
|
|
1415
1415
|
\`\`\`bash
|
|
1416
|
-
curl -s -X POST http://localhost
|
|
1416
|
+
curl -s -X POST http://localhost:\${INSTAR_PORT:-${port}}/evolution/learnings \\
|
|
1417
1417
|
-H 'Content-Type: application/json' \\
|
|
1418
1418
|
-d '{"title":"TITLE","category":"CATEGORY","description":"FULL_INSIGHT","source":{"discoveredAt":"DATE","platform":"WHERE","session":"SESSION_ID"},"tags":["tag1","tag2"]}'
|
|
1419
1419
|
\`\`\`
|
|
@@ -1467,7 +1467,7 @@ Report a capability gap. Use this when you discover something you should be able
|
|
|
1467
1467
|
6. **Submit**:
|
|
1468
1468
|
|
|
1469
1469
|
\`\`\`bash
|
|
1470
|
-
curl -s -X POST http://localhost
|
|
1470
|
+
curl -s -X POST http://localhost:\${INSTAR_PORT:-${port}}/evolution/gaps \\
|
|
1471
1471
|
-H 'Content-Type: application/json' \\
|
|
1472
1472
|
-d '{"title":"TITLE","category":"CATEGORY","severity":"medium","description":"WHAT_IS_MISSING","context":"WHEN_DID_YOU_NOTICE","currentState":"CURRENT_WORKAROUND","proposedSolution":"HOW_TO_FIX"}'
|
|
1473
1473
|
\`\`\`
|
|
@@ -1483,7 +1483,7 @@ curl -s -X POST http://localhost:${port}/evolution/gaps \\
|
|
|
1483
1483
|
## View Current Gaps
|
|
1484
1484
|
|
|
1485
1485
|
\`\`\`bash
|
|
1486
|
-
curl -s http://localhost
|
|
1486
|
+
curl -s http://localhost:\${INSTAR_PORT:-${port}}/evolution/gaps
|
|
1487
1487
|
\`\`\`
|
|
1488
1488
|
`,
|
|
1489
1489
|
},
|
|
@@ -1510,7 +1510,7 @@ Create a tracked action item. Use this when you promise to do something, identif
|
|
|
1510
1510
|
5. **Submit**:
|
|
1511
1511
|
|
|
1512
1512
|
\`\`\`bash
|
|
1513
|
-
curl -s -X POST http://localhost
|
|
1513
|
+
curl -s -X POST http://localhost:\${INSTAR_PORT:-${port}}/evolution/actions \\
|
|
1514
1514
|
-H 'Content-Type: application/json' \\
|
|
1515
1515
|
-d '{"title":"TITLE","description":"WHAT_TO_DO","priority":"medium","dueBy":"2026-03-01T00:00:00Z","commitTo":"WHO_OR_WHAT","tags":["tag1"]}'
|
|
1516
1516
|
\`\`\`
|
|
@@ -1518,7 +1518,7 @@ curl -s -X POST http://localhost:${port}/evolution/actions \\
|
|
|
1518
1518
|
6. **When complete**, mark it done:
|
|
1519
1519
|
|
|
1520
1520
|
\`\`\`bash
|
|
1521
|
-
curl -s -X PATCH http://localhost
|
|
1521
|
+
curl -s -X PATCH http://localhost:\${INSTAR_PORT:-${port}}/evolution/actions/ACT-XXX \\
|
|
1522
1522
|
-H 'Content-Type: application/json' \\
|
|
1523
1523
|
-d '{"status":"completed","resolution":"What was done"}'
|
|
1524
1524
|
\`\`\`
|
|
@@ -1535,10 +1535,10 @@ curl -s -X PATCH http://localhost:${port}/evolution/actions/ACT-XXX \\
|
|
|
1535
1535
|
|
|
1536
1536
|
\`\`\`bash
|
|
1537
1537
|
# All pending actions
|
|
1538
|
-
curl -s http://localhost
|
|
1538
|
+
curl -s http://localhost:\${INSTAR_PORT:-${port}}/evolution/actions?status=pending
|
|
1539
1539
|
|
|
1540
1540
|
# Overdue actions
|
|
1541
|
-
curl -s http://localhost
|
|
1541
|
+
curl -s http://localhost:\${INSTAR_PORT:-${port}}/evolution/actions/overdue
|
|
1542
1542
|
\`\`\`
|
|
1543
1543
|
|
|
1544
1544
|
## The Commitment Check
|
|
@@ -1563,7 +1563,7 @@ You have a built-in feedback system. When something isn't working, is missing, o
|
|
|
1563
1563
|
## Quick Submit
|
|
1564
1564
|
|
|
1565
1565
|
\`\`\`bash
|
|
1566
|
-
curl -s -X POST http://localhost
|
|
1566
|
+
curl -s -X POST http://localhost:\${INSTAR_PORT:-${port}}/feedback \\
|
|
1567
1567
|
-H 'Content-Type: application/json' \\
|
|
1568
1568
|
-d '{
|
|
1569
1569
|
"type": "bug",
|
|
@@ -1611,10 +1611,10 @@ Include enough context for a fix:
|
|
|
1611
1611
|
|
|
1612
1612
|
\`\`\`bash
|
|
1613
1613
|
# View submitted feedback
|
|
1614
|
-
curl -s http://localhost
|
|
1614
|
+
curl -s http://localhost:\${INSTAR_PORT:-${port}}/feedback | python3 -m json.tool
|
|
1615
1615
|
|
|
1616
1616
|
# Retry failed forwards
|
|
1617
|
-
curl -s -X POST http://localhost
|
|
1617
|
+
curl -s -X POST http://localhost:\${INSTAR_PORT:-${port}}/feedback/retry
|
|
1618
1618
|
\`\`\`
|
|
1619
1619
|
|
|
1620
1620
|
## How It Works
|
|
@@ -1657,13 +1657,13 @@ If no findings exist, report "No pending findings" and stop.
|
|
|
1657
1657
|
3. **Assess each valid finding**:
|
|
1658
1658
|
- Is it actionable? Does it describe a real issue or improvement?
|
|
1659
1659
|
- Is it a duplicate of something already proposed?
|
|
1660
|
-
- Check existing evolution proposals: \\\`curl -s -H "Authorization: Bearer $AUTH" http://localhost
|
|
1660
|
+
- Check existing evolution proposals: \\\`curl -s -H "Authorization: Bearer $AUTH" http://localhost:\${INSTAR_PORT:-${port}}/evolution/proposals\\\`
|
|
1661
1661
|
|
|
1662
1662
|
4. **Route the finding** (one of):
|
|
1663
1663
|
|
|
1664
1664
|
**a. Promote to Evolution proposal** (for actionable findings):
|
|
1665
1665
|
\\\`\\\`\\\`bash
|
|
1666
|
-
curl -s -X POST http://localhost
|
|
1666
|
+
curl -s -X POST http://localhost:\${INSTAR_PORT:-${port}}/evolution/proposals \\\\
|
|
1667
1667
|
-H "Authorization: Bearer $AUTH" \\\\
|
|
1668
1668
|
-H 'Content-Type: application/json' \\\\
|
|
1669
1669
|
-d '{"title":"FINDING_TITLE","source":"serendipity:FINDING_ID","description":"FINDING_DESCRIPTION","type":"TYPE","impact":"IMPACT","effort":"EFFORT","tags":["serendipity","from-subagent"]}'
|
|
@@ -1675,7 +1675,7 @@ If no findings exist, report "No pending findings" and stop.
|
|
|
1675
1675
|
**c. Flag for manual review** (for findings you're uncertain about):
|
|
1676
1676
|
Queue an attention item:
|
|
1677
1677
|
\\\`\\\`\\\`bash
|
|
1678
|
-
curl -s -X POST http://localhost
|
|
1678
|
+
curl -s -X POST http://localhost:\${INSTAR_PORT:-${port}}/attention \\\\
|
|
1679
1679
|
-H "Authorization: Bearer $AUTH" \\\\
|
|
1680
1680
|
-H 'Content-Type: application/json' \\\\
|
|
1681
1681
|
-d '{"title":"Serendipity finding needs review: TITLE","body":"DESCRIPTION","priority":"low","source":"serendipity"}'
|
|
@@ -1755,7 +1755,7 @@ cat .instar/soul.md
|
|
|
1755
1755
|
|
|
1756
1756
|
2. **Review recent experience** — Check for identity-relevant learnings:
|
|
1757
1757
|
\\\`\\\`\\\`bash
|
|
1758
|
-
curl -s -H "Authorization: Bearer $AUTH" http://localhost
|
|
1758
|
+
curl -s -H "Authorization: Bearer $AUTH" http://localhost:\${INSTAR_PORT:-${port}}/evolution/learnings?applied=false
|
|
1759
1759
|
\\\`\\\`\\\`
|
|
1760
1760
|
|
|
1761
1761
|
3. **Ask yourself these questions** (not all will apply every time):
|
|
@@ -1772,7 +1772,7 @@ curl -s -H "Authorization: Bearer $AUTH" http://localhost:${port}/evolution/lear
|
|
|
1772
1772
|
|
|
1773
1773
|
4. **Update soul.md** — For each section that needs updating:
|
|
1774
1774
|
\\\`\\\`\\\`bash
|
|
1775
|
-
curl -s -X PATCH http://localhost
|
|
1775
|
+
curl -s -X PATCH http://localhost:\${INSTAR_PORT:-${port}}/identity/soul \\\\
|
|
1776
1776
|
-H 'Content-Type: application/json' \\\\
|
|
1777
1777
|
-H "Authorization: Bearer $AUTH" \\\\
|
|
1778
1778
|
-d '{"section":"SECTION","operation":"append|replace","content":"YOUR_CONTENT","source":"reflect-skill"}'
|
|
@@ -1782,7 +1782,7 @@ curl -s -X PATCH http://localhost:${port}/identity/soul \\\\
|
|
|
1782
1782
|
|
|
1783
1783
|
5. **Version it** — If you made meaningful changes, update the Evolution History:
|
|
1784
1784
|
\\\`\\\`\\\`bash
|
|
1785
|
-
curl -s -X PATCH http://localhost
|
|
1785
|
+
curl -s -X PATCH http://localhost:\${INSTAR_PORT:-${port}}/identity/soul \\\\
|
|
1786
1786
|
-H 'Content-Type: application/json' \\\\
|
|
1787
1787
|
-H "Authorization: Bearer $AUTH" \\\\
|
|
1788
1788
|
-d '{"section":"evolution-history","operation":"append","content":"| X.X | DATE | What changed |","source":"reflect-skill"}'
|
|
@@ -1790,7 +1790,7 @@ curl -s -X PATCH http://localhost:${port}/identity/soul \\\\
|
|
|
1790
1790
|
|
|
1791
1791
|
6. **Check drift** — See how far you've come from your initial state:
|
|
1792
1792
|
\\\`\\\`\\\`bash
|
|
1793
|
-
curl -s -H "Authorization: Bearer $AUTH" http://localhost
|
|
1793
|
+
curl -s -H "Authorization: Bearer $AUTH" http://localhost:\${INSTAR_PORT:-${port}}/identity/soul/drift
|
|
1794
1794
|
\\\`\\\`\\\`
|
|
1795
1795
|
|
|
1796
1796
|
## When to Use
|
|
@@ -1839,7 +1839,7 @@ Check each area:
|
|
|
1839
1839
|
### 1. Topic-Project Bindings
|
|
1840
1840
|
|
|
1841
1841
|
\\\`\\\`\\\`
|
|
1842
|
-
curl -s -H "Authorization: Bearer $AUTH" http://localhost
|
|
1842
|
+
curl -s -H "Authorization: Bearer $AUTH" http://localhost:\${INSTAR_PORT:-${port}}/topic-bindings
|
|
1843
1843
|
\\\`\\\`\\\`
|
|
1844
1844
|
|
|
1845
1845
|
- Are all bindings still valid?
|
|
@@ -1849,7 +1849,7 @@ curl -s -H "Authorization: Bearer $AUTH" http://localhost:${port}/topic-bindings
|
|
|
1849
1849
|
### 2. Project Map Freshness
|
|
1850
1850
|
|
|
1851
1851
|
\\\`\\\`\\\`
|
|
1852
|
-
curl -s -H "Authorization: Bearer $AUTH" http://localhost
|
|
1852
|
+
curl -s -H "Authorization: Bearer $AUTH" http://localhost:\${INSTAR_PORT:-${port}}/project-map
|
|
1853
1853
|
\\\`\\\`\\\`
|
|
1854
1854
|
|
|
1855
1855
|
- Check the \\\`generatedAt\\\` timestamp.
|
|
@@ -1868,7 +1868,7 @@ Flag any that are missing, empty, or contain invalid JSON. Look for stale entrie
|
|
|
1868
1868
|
### 4. Context Segments
|
|
1869
1869
|
|
|
1870
1870
|
\\\`\\\`\\\`
|
|
1871
|
-
curl -s -H "Authorization: Bearer $AUTH" http://localhost
|
|
1871
|
+
curl -s -H "Authorization: Bearer $AUTH" http://localhost:\${INSTAR_PORT:-${port}}/context
|
|
1872
1872
|
\\\`\\\`\\\`
|
|
1873
1873
|
|
|
1874
1874
|
- Are all expected segments present?
|
|
@@ -1931,7 +1931,7 @@ For each feature with **3+ repeated degradations** — this is a PATTERN, not a
|
|
|
1931
1931
|
Submit feedback for each pattern:
|
|
1932
1932
|
|
|
1933
1933
|
\\\`\\\`\\\`
|
|
1934
|
-
curl -s -X POST http://localhost
|
|
1934
|
+
curl -s -X POST http://localhost:\${INSTAR_PORT:-${port}}/feedback \\
|
|
1935
1935
|
-H "Authorization: Bearer $AUTH" \\
|
|
1936
1936
|
-H 'Content-Type: application/json' \\
|
|
1937
1937
|
-d '{"type":"bug","title":"Repeated degradation: FEATURE","description":"FEATURE has degraded N times. Primary: X. Fallback: Y. Most recent reason: Z. This pattern indicates the primary path needs fixing."}'
|
|
@@ -1977,7 +1977,7 @@ AUTH=$(python3 -c "import json; print(json.load(open('.instar/config.json')).get
|
|
|
1977
1977
|
If \\\`.instar/state/active-job.json\\\` exists, verify the session it references is actually running:
|
|
1978
1978
|
|
|
1979
1979
|
\\\`\\\`\\\`
|
|
1980
|
-
curl -s -H "Authorization: Bearer $AUTH" http://localhost
|
|
1980
|
+
curl -s -H "Authorization: Bearer $AUTH" http://localhost:\${INSTAR_PORT:-${port}}/sessions
|
|
1981
1981
|
\\\`\\\`\\\`
|
|
1982
1982
|
|
|
1983
1983
|
Check if the session name matches. If the session is dead but active-job.json persists, it's orphaned — delete it.
|
|
@@ -1987,7 +1987,7 @@ Check if the session name matches. If the session is dead but active-job.json pe
|
|
|
1987
1987
|
Read \\\`.instar/state/job-topic-mappings.json\\\`. For each mapping, verify the topic ID is reachable:
|
|
1988
1988
|
|
|
1989
1989
|
\\\`\\\`\\\`
|
|
1990
|
-
curl -s -H "Authorization: Bearer $AUTH" http://localhost
|
|
1990
|
+
curl -s -H "Authorization: Bearer $AUTH" http://localhost:\${INSTAR_PORT:-${port}}/telegram/topics
|
|
1991
1991
|
\\\`\\\`\\\`
|
|
1992
1992
|
|
|
1993
1993
|
If topics have been deleted, the mapping is stale — flag it.
|
|
@@ -2005,7 +2005,7 @@ Report bloated files and prune where safe.
|
|
|
2005
2005
|
Read \\\`.instar/config.json\\\`. If Telegram is configured, verify the bot is connected:
|
|
2006
2006
|
|
|
2007
2007
|
\\\`\\\`\\\`
|
|
2008
|
-
curl -s -H "Authorization: Bearer $AUTH" http://localhost
|
|
2008
|
+
curl -s -H "Authorization: Bearer $AUTH" http://localhost:\${INSTAR_PORT:-${port}}/health
|
|
2009
2009
|
\\\`\\\`\\\`
|
|
2010
2010
|
|
|
2011
2011
|
Check if the telegram field shows connected. If config says telegram but health says disconnected, report the discrepancy.
|
|
@@ -2079,7 +2079,7 @@ Are entries grouped by topic? Is the structure navigable? Reorganize if needed.
|
|
|
2079
2079
|
- Log a learning if you discover a pattern:
|
|
2080
2080
|
|
|
2081
2081
|
\\\`\\\`\\\`
|
|
2082
|
-
curl -s -X POST http://localhost
|
|
2082
|
+
curl -s -X POST http://localhost:\${INSTAR_PORT:-${port}}/evolution/learnings \\
|
|
2083
2083
|
-H "Authorization: Bearer $AUTH" \\
|
|
2084
2084
|
-H 'Content-Type: application/json' \\
|
|
2085
2085
|
-d '{"category":"memory","insight":"...","confidence":"high"}'
|
|
@@ -2123,7 +2123,7 @@ AUTH=$(python3 -c "import json; print(json.load(open('.instar/config.json')).get
|
|
|
2123
2123
|
### 1. Job Health
|
|
2124
2124
|
|
|
2125
2125
|
\\\`\\\`\\\`
|
|
2126
|
-
curl -s -H "Authorization: Bearer $AUTH" http://localhost
|
|
2126
|
+
curl -s -H "Authorization: Bearer $AUTH" http://localhost:\${INSTAR_PORT:-${port}}/jobs
|
|
2127
2127
|
\\\`\\\`\\\`
|
|
2128
2128
|
|
|
2129
2129
|
For each enabled job, check:
|
|
@@ -2135,7 +2135,7 @@ For each enabled job, check:
|
|
|
2135
2135
|
### 2. Skip Ledger Trends
|
|
2136
2136
|
|
|
2137
2137
|
\\\`\\\`\\\`
|
|
2138
|
-
curl -s -H "Authorization: Bearer $AUTH" http://localhost
|
|
2138
|
+
curl -s -H "Authorization: Bearer $AUTH" http://localhost:\${INSTAR_PORT:-${port}}/skip-ledger/workloads
|
|
2139
2139
|
\\\`\\\`\\\`
|
|
2140
2140
|
|
|
2141
2141
|
If any job has been skipped more than 10 times by its gate, the gate may be misconfigured (always returning skip), or the feature it monitors is permanently broken.
|
|
@@ -2151,7 +2151,7 @@ Read \\\`.instar/state/degradation-events.json\\\` — if events exist but none
|
|
|
2151
2151
|
### 5. Session Monitor
|
|
2152
2152
|
|
|
2153
2153
|
\\\`\\\`\\\`
|
|
2154
|
-
curl -s -H "Authorization: Bearer $AUTH" http://localhost
|
|
2154
|
+
curl -s -H "Authorization: Bearer $AUTH" http://localhost:\${INSTAR_PORT:-${port}}/sessions
|
|
2155
2155
|
\\\`\\\`\\\`
|
|
2156
2156
|
|
|
2157
2157
|
Are there zombie sessions (status: running but started > 30 minutes ago for a job that should take 5)?
|
|
@@ -2199,7 +2199,7 @@ AUTH=$(python3 -c "import json; print(json.load(open('.instar/config.json')).get
|
|
|
2199
2199
|
### 1. Recent Sessions
|
|
2200
2200
|
|
|
2201
2201
|
\\\`\\\`\\\`
|
|
2202
|
-
curl -s -H "Authorization: Bearer $AUTH" http://localhost
|
|
2202
|
+
curl -s -H "Authorization: Bearer $AUTH" http://localhost:\${INSTAR_PORT:-${port}}/sessions
|
|
2203
2203
|
\\\`\\\`\\\`
|
|
2204
2204
|
|
|
2205
2205
|
Get sessions that completed in the last 8 hours.
|
|
@@ -2490,7 +2490,7 @@ function getDefaultJobs(port) {
|
|
|
2490
2490
|
enabled: true,
|
|
2491
2491
|
execute: {
|
|
2492
2492
|
type: 'prompt',
|
|
2493
|
-
value: `Run a quick health check: verify the instar server is responding (curl http://localhost
|
|
2493
|
+
value: `Run a quick health check: verify the instar server is responding (curl http://localhost:\${INSTAR_PORT:-${port}}/health), check disk space (df -h), and report any issues. Only send a message if something needs attention — silence means healthy. IMPORTANT: If you find issues, describe them in plain conversational language. Never dump raw JSON, field names, error codes, or structured data. The user reads these on their phone — write like you're texting them a quick heads-up. If the health response includes a degradationSummary array, relay those narrative strings directly.`,
|
|
2494
2494
|
},
|
|
2495
2495
|
tags: ['cat:guardian'],
|
|
2496
2496
|
},
|
|
@@ -2529,7 +2529,7 @@ echo ""
|
|
|
2529
2529
|
echo "If you find genuine learnings:"
|
|
2530
2530
|
echo "1. Update .instar/MEMORY.md with the insight (append to the file)"
|
|
2531
2531
|
echo "2. Be specific: include what was learned, why it matters, and how it should guide future work"
|
|
2532
|
-
echo "3. Signal completion: curl -s -X POST http://localhost
|
|
2532
|
+
echo "3. Signal completion: curl -s -X POST http://localhost:\${INSTAR_PORT:-${port}}/reflection/record -H 'Content-Type: application/json' -d '{\"type\":\"quick\"}'"
|
|
2533
2533
|
echo ""
|
|
2534
2534
|
echo "If nothing significant, do nothing. Silence means continuity is working as expected."`,
|
|
2535
2535
|
},
|
|
@@ -2559,10 +2559,10 @@ echo "If nothing significant, do nothing. Silence means continuity is working as
|
|
|
2559
2559
|
expectedDurationMinutes: 1,
|
|
2560
2560
|
model: 'haiku',
|
|
2561
2561
|
enabled: true,
|
|
2562
|
-
gate: `curl -sf http://localhost
|
|
2562
|
+
gate: `curl -sf http://localhost:\${INSTAR_PORT:-${port}}/health >/dev/null 2>&1`,
|
|
2563
2563
|
execute: {
|
|
2564
2564
|
type: 'script',
|
|
2565
|
-
value: `RESULT=$(curl -s -X POST http://localhost
|
|
2565
|
+
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."`,
|
|
2566
2566
|
},
|
|
2567
2567
|
tags: ['cat:infrastructure'],
|
|
2568
2568
|
},
|
|
@@ -2575,10 +2575,10 @@ echo "If nothing significant, do nothing. Silence means continuity is working as
|
|
|
2575
2575
|
expectedDurationMinutes: 3,
|
|
2576
2576
|
model: 'opus',
|
|
2577
2577
|
enabled: true,
|
|
2578
|
-
gate: `curl -sf -H "Authorization: Bearer $INSTAR_AUTH_TOKEN" http://localhost
|
|
2578
|
+
gate: `curl -sf -H "Authorization: Bearer $INSTAR_AUTH_TOKEN" 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)"`,
|
|
2579
2579
|
execute: {
|
|
2580
2580
|
type: 'prompt',
|
|
2581
|
-
value: `Harvest and synthesize learnings: curl -s http://localhost
|
|
2581
|
+
value: `Harvest and synthesize learnings: curl -s http://localhost:\${INSTAR_PORT:-${port}}/evolution/learnings?applied=false
|
|
2582
2582
|
|
|
2583
2583
|
Review unapplied learnings and look for:
|
|
2584
2584
|
1. **Patterns**: Multiple learnings pointing to the same conclusion
|
|
@@ -2586,10 +2586,10 @@ Review unapplied learnings and look for:
|
|
|
2586
2586
|
3. **Cross-domain connections**: Insights from one area that apply to another
|
|
2587
2587
|
|
|
2588
2588
|
For each actionable pattern found, create an evolution proposal:
|
|
2589
|
-
curl -s -X POST http://localhost
|
|
2589
|
+
curl -s -X POST http://localhost:\${INSTAR_PORT:-${port}}/evolution/proposals -H 'Content-Type: application/json' -d '{"title":"...","source":"insight-harvest from LRN-XXX","description":"...","type":"...","impact":"...","effort":"..."}'
|
|
2590
2590
|
|
|
2591
2591
|
Then mark the relevant learnings as applied:
|
|
2592
|
-
curl -s -X PATCH http://localhost
|
|
2592
|
+
curl -s -X PATCH http://localhost:\${INSTAR_PORT:-${port}}/evolution/learnings/LRN-XXX/apply -H 'Content-Type: application/json' -d '{"appliedTo":"EVO-XXX"}'
|
|
2593
2593
|
|
|
2594
2594
|
Also update MEMORY.md with any patterns worth preserving long-term.
|
|
2595
2595
|
|
|
@@ -2606,18 +2606,18 @@ If no actionable patterns found, exit silently.`,
|
|
|
2606
2606
|
expectedDurationMinutes: 2,
|
|
2607
2607
|
model: 'haiku',
|
|
2608
2608
|
enabled: true,
|
|
2609
|
-
gate: `curl -sf -H "Authorization: Bearer $INSTAR_AUTH_TOKEN" http://localhost
|
|
2609
|
+
gate: `curl -sf -H "Authorization: Bearer $INSTAR_AUTH_TOKEN" 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)"`,
|
|
2610
2610
|
execute: {
|
|
2611
2611
|
type: 'prompt',
|
|
2612
|
-
value: `Check for overdue commitments: curl -s http://localhost
|
|
2612
|
+
value: `Check for overdue commitments: curl -s http://localhost:\${INSTAR_PORT:-${port}}/evolution/actions/overdue
|
|
2613
2613
|
|
|
2614
2614
|
For each overdue action:
|
|
2615
2615
|
1. Assess: Can this be completed now? Is it still relevant?
|
|
2616
2616
|
2. If actionable, attempt to complete it or advance it
|
|
2617
|
-
3. If no longer relevant, cancel it: curl -s -X PATCH http://localhost
|
|
2617
|
+
3. If no longer relevant, cancel it: curl -s -X PATCH http://localhost:\${INSTAR_PORT:-${port}}/evolution/actions/ACT-XXX -H 'Content-Type: application/json' -d '{"status":"cancelled","resolution":"No longer relevant because..."}'
|
|
2618
2618
|
4. If blocked, escalate to the user via Telegram (if configured)
|
|
2619
2619
|
|
|
2620
|
-
Also check pending actions (curl -s http://localhost
|
|
2620
|
+
Also check pending actions (curl -s http://localhost:\${INSTAR_PORT:-${port}}/evolution/actions?status=pending) for items that have been pending more than 48 hours without a due date — these are forgotten commitments.
|
|
2621
2621
|
|
|
2622
2622
|
If no overdue or stale items, exit silently.`,
|
|
2623
2623
|
},
|
|
@@ -2632,10 +2632,10 @@ If no overdue or stale items, exit silently.`,
|
|
|
2632
2632
|
expectedDurationMinutes: 1,
|
|
2633
2633
|
model: 'haiku',
|
|
2634
2634
|
enabled: true,
|
|
2635
|
-
gate: `curl -sf http://localhost
|
|
2635
|
+
gate: `curl -sf http://localhost:\${INSTAR_PORT:-${port}}/health >/dev/null 2>&1`,
|
|
2636
2636
|
execute: {
|
|
2637
2637
|
type: 'script',
|
|
2638
|
-
value: `RESULT=$(curl -s -X POST http://localhost
|
|
2638
|
+
value: `RESULT=$(curl -s -X POST http://localhost:\${INSTAR_PORT:-${port}}/project-map/refresh -H "Authorization: Bearer $(python3 -c "import json; print(json.load(open('.instar/config.json')).get('authToken',''))" 2>/dev/null)" 2>/dev/null); echo "$RESULT" | python3 -c "import sys,json; d=json.load(sys.stdin); print(f'Project map refreshed: {d.get(\"totalFiles\",0)} files, {d.get(\"directories\",0)} dirs')" 2>/dev/null || echo "Project map refresh: done"`,
|
|
2639
2639
|
},
|
|
2640
2640
|
tags: ['cat:maintenance', 'role:worker', 'exec:script'],
|
|
2641
2641
|
},
|
|
@@ -2648,7 +2648,7 @@ If no overdue or stale items, exit silently.`,
|
|
|
2648
2648
|
expectedDurationMinutes: 2,
|
|
2649
2649
|
model: 'haiku',
|
|
2650
2650
|
enabled: true,
|
|
2651
|
-
gate: `curl -sf http://localhost
|
|
2651
|
+
gate: `curl -sf http://localhost:\${INSTAR_PORT:-${port}}/health >/dev/null 2>&1`,
|
|
2652
2652
|
execute: {
|
|
2653
2653
|
type: 'skill',
|
|
2654
2654
|
value: 'coherence-audit',
|
|
@@ -2680,7 +2680,7 @@ If no overdue or stale items, exit silently.`,
|
|
|
2680
2680
|
expectedDurationMinutes: 1,
|
|
2681
2681
|
model: 'haiku',
|
|
2682
2682
|
enabled: true,
|
|
2683
|
-
gate: `curl -sf http://localhost
|
|
2683
|
+
gate: `curl -sf http://localhost:\${INSTAR_PORT:-${port}}/health >/dev/null 2>&1`,
|
|
2684
2684
|
execute: {
|
|
2685
2685
|
type: 'skill',
|
|
2686
2686
|
value: 'state-integrity-check',
|
|
@@ -2716,7 +2716,7 @@ If no overdue or stale items, exit silently.`,
|
|
|
2716
2716
|
expectedDurationMinutes: 2,
|
|
2717
2717
|
model: 'haiku',
|
|
2718
2718
|
enabled: true,
|
|
2719
|
-
gate: `curl -sf http://localhost
|
|
2719
|
+
gate: `curl -sf http://localhost:\${INSTAR_PORT:-${port}}/health >/dev/null 2>&1`,
|
|
2720
2720
|
execute: {
|
|
2721
2721
|
type: 'skill',
|
|
2722
2722
|
value: 'guardian-pulse',
|
|
@@ -2732,7 +2732,7 @@ If no overdue or stale items, exit silently.`,
|
|
|
2732
2732
|
expectedDurationMinutes: 2,
|
|
2733
2733
|
model: 'haiku',
|
|
2734
2734
|
enabled: true,
|
|
2735
|
-
gate: `curl -sf http://localhost
|
|
2735
|
+
gate: `curl -sf http://localhost:\${INSTAR_PORT:-${port}}/health >/dev/null 2>&1`,
|
|
2736
2736
|
execute: {
|
|
2737
2737
|
type: 'skill',
|
|
2738
2738
|
value: 'session-continuity-check',
|
|
@@ -2748,10 +2748,10 @@ If no overdue or stale items, exit silently.`,
|
|
|
2748
2748
|
expectedDurationMinutes: 1,
|
|
2749
2749
|
model: 'haiku',
|
|
2750
2750
|
enabled: true,
|
|
2751
|
-
gate: `curl -sf http://localhost
|
|
2751
|
+
gate: `curl -sf http://localhost:\${INSTAR_PORT:-${port}}/health >/dev/null 2>&1 && AUTH=$(python3 -c "import json; print(json.load(open('.instar/config.json')).get('authToken',''))" 2>/dev/null) && curl -sf -H "Authorization: Bearer $AUTH" http://localhost:\${INSTAR_PORT:-${port}}/semantic/stats >/dev/null 2>&1`,
|
|
2752
2752
|
execute: {
|
|
2753
2753
|
type: 'script',
|
|
2754
|
-
value: `AUTH=$(python3 -c "import json; print(json.load(open('.instar/config.json')).get('authToken',''))" 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
|
|
2754
|
+
value: `AUTH=$(python3 -c "import json; print(json.load(open('.instar/config.json')).get('authToken',''))" 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."`,
|
|
2755
2755
|
},
|
|
2756
2756
|
tags: ['cat:maintenance', 'role:worker', 'exec:script'],
|
|
2757
2757
|
},
|
|
@@ -2781,10 +2781,10 @@ If no overdue or stale items, exit silently.`,
|
|
|
2781
2781
|
expectedDurationMinutes: 1,
|
|
2782
2782
|
model: 'haiku',
|
|
2783
2783
|
enabled: true,
|
|
2784
|
-
gate: `curl -sf http://localhost
|
|
2784
|
+
gate: `curl -sf http://localhost:\${INSTAR_PORT:-${port}}/health >/dev/null 2>&1`,
|
|
2785
2785
|
execute: {
|
|
2786
2786
|
type: 'script',
|
|
2787
|
-
value: `AUTH=$(python3 -c "import json; print(json.load(open('.instar/config.json')).get('authToken',''))" 2>/dev/null); REFRESH=$(curl -s -X POST -H "Authorization: Bearer $AUTH" http://localhost
|
|
2787
|
+
value: `AUTH=$(python3 -c "import json; print(json.load(open('.instar/config.json')).get('authToken',''))" 2>/dev/null); REFRESH=$(curl -s -X POST -H "Authorization: Bearer $AUTH" http://localhost:\${INSTAR_PORT:-${port}}/capability-map/refresh 2>/dev/null); DRIFT=$(curl -s -H "Authorization: Bearer $AUTH" 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`,
|
|
2788
2788
|
},
|
|
2789
2789
|
grounding: {
|
|
2790
2790
|
requiresIdentity: false,
|
|
@@ -2801,22 +2801,22 @@ If no overdue or stale items, exit silently.`,
|
|
|
2801
2801
|
expectedDurationMinutes: 5,
|
|
2802
2802
|
model: 'opus',
|
|
2803
2803
|
enabled: true,
|
|
2804
|
-
gate: `curl -sf http://localhost
|
|
2804
|
+
gate: `curl -sf http://localhost:\${INSTAR_PORT:-${port}}/health >/dev/null 2>&1 && test -f .instar/soul.md`,
|
|
2805
2805
|
execute: {
|
|
2806
2806
|
type: 'prompt',
|
|
2807
2807
|
value: `Identity review — check your identity coherence and growth.
|
|
2808
2808
|
|
|
2809
2809
|
AUTH=$(python3 -c "import json; print(json.load(open('.instar/config.json')).get('authToken',''))" 2>/dev/null)
|
|
2810
2810
|
|
|
2811
|
-
1. **Check soul.md drift**: curl -s -H "Authorization: Bearer $AUTH" http://localhost
|
|
2811
|
+
1. **Check soul.md drift**: curl -s -H "Authorization: Bearer $AUTH" http://localhost:\${INSTAR_PORT:-${port}}/identity/soul/drift
|
|
2812
2812
|
- If anyAboveThreshold is true, review the divergence. Is this healthy growth or unexpected drift?
|
|
2813
2813
|
- If drift looks healthy, mark it reviewed: the growth is intentional.
|
|
2814
2814
|
- If drift looks concerning, flag with [ATTENTION] so the user is notified.
|
|
2815
2815
|
|
|
2816
|
-
2. **Check pending changes**: curl -s -H "Authorization: Bearer $AUTH" http://localhost
|
|
2816
|
+
2. **Check pending changes**: curl -s -H "Authorization: Bearer $AUTH" http://localhost:\${INSTAR_PORT:-${port}}/identity/soul/pending
|
|
2817
2817
|
- If pending changes exist, surface them to the user via Telegram (the user should approve/reject these).
|
|
2818
2818
|
|
|
2819
|
-
3. **Check for identity-relevant learnings**: curl -s -H "Authorization: Bearer $AUTH" http://localhost
|
|
2819
|
+
3. **Check for identity-relevant learnings**: curl -s -H "Authorization: Bearer $AUTH" http://localhost:\${INSTAR_PORT:-${port}}/evolution/learnings?applied=false
|
|
2820
2820
|
- For each unapplied learning, assess: is this about operational knowledge (how to do something) or about your values, beliefs, or self-understanding?
|
|
2821
2821
|
- If you find 3+ identity-relevant learnings since your last soul.md update, consider running /reflect.
|
|
2822
2822
|
- Don't force it — if none of the learnings touch on identity, that's fine. Exit silently.
|
|
@@ -2826,7 +2826,7 @@ AUTH=$(python3 -c "import json; print(json.load(open('.instar/config.json')).get
|
|
|
2826
2826
|
- Is the Self-Observations section populated? If you've noticed behavioral patterns, document them.
|
|
2827
2827
|
- Update Identity History if you make changes.
|
|
2828
2828
|
|
|
2829
|
-
5. **Integrity check**: curl -s -H "Authorization: Bearer $AUTH" http://localhost
|
|
2829
|
+
5. **Integrity check**: curl -s -H "Authorization: Bearer $AUTH" http://localhost:\${INSTAR_PORT:-${port}}/identity/soul/integrity
|
|
2830
2830
|
- If integrity fails, flag with [ATTENTION] — soul.md may have been modified outside normal channels.
|
|
2831
2831
|
|
|
2832
2832
|
If everything is coherent and no reflection is needed, exit silently. Only report via [ATTENTION] if drift is concerning, integrity fails, or pending changes need user action.`,
|
|
@@ -2847,10 +2847,10 @@ If everything is coherent and no reflection is needed, exit silently. Only repor
|
|
|
2847
2847
|
expectedDurationMinutes: 3,
|
|
2848
2848
|
model: 'sonnet',
|
|
2849
2849
|
enabled: true,
|
|
2850
|
-
gate: `curl -sf -H "Authorization: Bearer $INSTAR_AUTH_TOKEN" http://localhost
|
|
2850
|
+
gate: `curl -sf -H "Authorization: Bearer $INSTAR_AUTH_TOKEN" 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)"`,
|
|
2851
2851
|
execute: {
|
|
2852
2852
|
type: 'prompt',
|
|
2853
|
-
value: `Review pending evolution proposals: curl -s http://localhost
|
|
2853
|
+
value: `Review pending evolution proposals: curl -s http://localhost:\${INSTAR_PORT:-${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 http://localhost:\${INSTAR_PORT:-${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 http://localhost:\${INSTAR_PORT:-${port}}/evolution — report any highlights to the user if they seem important.\n\nIf no proposals need attention, exit silently.`,
|
|
2854
2854
|
},
|
|
2855
2855
|
tags: ['cat:learning', 'role:worker', 'exec:prompt', 'pair:evolution-proposal-implement'],
|
|
2856
2856
|
},
|
|
@@ -2863,10 +2863,10 @@ If everything is coherent and no reflection is needed, exit silently. Only repor
|
|
|
2863
2863
|
expectedDurationMinutes: 10,
|
|
2864
2864
|
model: 'opus',
|
|
2865
2865
|
enabled: true,
|
|
2866
|
-
gate: `curl -sf -H "Authorization: Bearer $INSTAR_AUTH_TOKEN" http://localhost
|
|
2866
|
+
gate: `curl -sf -H "Authorization: Bearer $INSTAR_AUTH_TOKEN" 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)"`,
|
|
2867
2867
|
execute: {
|
|
2868
2868
|
type: 'prompt',
|
|
2869
|
-
value: `Implement approved evolution proposals: curl -s http://localhost
|
|
2869
|
+
value: `Implement approved evolution proposals: curl -s http://localhost:\${INSTAR_PORT:-${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 http://localhost:\${INSTAR_PORT:-${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.`,
|
|
2870
2870
|
},
|
|
2871
2871
|
grounding: {
|
|
2872
2872
|
requiresIdentity: true,
|
|
@@ -2883,10 +2883,10 @@ If everything is coherent and no reflection is needed, exit silently. Only repor
|
|
|
2883
2883
|
expectedDurationMinutes: 1,
|
|
2884
2884
|
model: 'haiku',
|
|
2885
2885
|
enabled: true,
|
|
2886
|
-
gate: `curl -sf http://localhost
|
|
2886
|
+
gate: `curl -sf http://localhost:\${INSTAR_PORT:-${port}}/health >/dev/null 2>&1`,
|
|
2887
2887
|
execute: {
|
|
2888
2888
|
type: 'prompt',
|
|
2889
|
-
value: `Scan recent messages for commitments and promises.\n\nAUTH=$(python3 -c "import json; print(json.load(open('.instar/config.json')).get('authToken',''))" 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
|
|
2889
|
+
value: `Scan recent messages for commitments and promises.\n\nAUTH=$(python3 -c "import json; print(json.load(open('.instar/config.json')).get('authToken',''))" 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.`,
|
|
2890
2890
|
},
|
|
2891
2891
|
tags: ['cat:evolution', 'role:worker', 'exec:prompt', 'pair:evolution-overdue-check'],
|
|
2892
2892
|
},
|
|
@@ -2899,10 +2899,10 @@ If everything is coherent and no reflection is needed, exit silently. Only repor
|
|
|
2899
2899
|
expectedDurationMinutes: 1,
|
|
2900
2900
|
model: 'haiku',
|
|
2901
2901
|
enabled: true,
|
|
2902
|
-
gate: `curl -sf http://localhost
|
|
2902
|
+
gate: `curl -sf http://localhost:\${INSTAR_PORT:-${port}}/health >/dev/null 2>&1`,
|
|
2903
2903
|
execute: {
|
|
2904
2904
|
type: 'script',
|
|
2905
|
-
value: `AUTH=$(python3 -c "import json; print(json.load(open('.instar/config.json')).get('authToken','')).strip()" 2>/dev/null) && curl -sf -X POST -H "Authorization: Bearer $AUTH" http://localhost
|
|
2905
|
+
value: `AUTH=$(python3 -c "import json; print(json.load(open('.instar/config.json')).get('authToken','')).strip()" 2>/dev/null) && curl -sf -X POST -H "Authorization: Bearer $AUTH" http://localhost:\${INSTAR_PORT:-${port}}/telegram/dashboard-refresh`,
|
|
2906
2906
|
},
|
|
2907
2907
|
tags: ['cat:infrastructure', 'role:worker', 'exec:script'],
|
|
2908
2908
|
telegramNotify: false,
|
|
@@ -2918,7 +2918,7 @@ If everything is coherent and no reflection is needed, exit silently. Only repor
|
|
|
2918
2918
|
enabled: true,
|
|
2919
2919
|
execute: {
|
|
2920
2920
|
type: 'prompt',
|
|
2921
|
-
value: `You are a Category Overseer for the GUARDIAN category. Your job is to review all guardian/monitoring jobs and assess the health of the monitoring system itself.\n\n1. Fetch the category report: curl -H "Authorization: Bearer $AUTH" http://localhost
|
|
2921
|
+
value: `You are a Category Overseer for the GUARDIAN category. Your job is to review all guardian/monitoring jobs and assess the health of the monitoring system itself.\n\n1. Fetch the category report: curl -H "Authorization: Bearer $AUTH" http://localhost:\${INSTAR_PORT:-${port}}/jobs/category-report/guardian?sinceHours=24\n2. Analyze the report for:\n - Jobs with high failure rates or consecutive failures\n - Jobs that are being skipped excessively (especially for quota reasons)\n - Schedule mismatches (jobs running too often or not often enough for their purpose)\n - Model over-allocation (could any job use a cheaper model?)\n - Contradictions between job findings (e.g., health-check says healthy but degradation-digest found issues)\n - Coverage gaps (are there monitoring blind spots?)\n3. Read the handoff notes from each job — do they tell a coherent story?\n4. If you find actionable issues, write a clear summary. If everything is healthy, say so briefly.\n\nWrite your findings in [HANDOFF] tags for the next overseer run. Focus on trends and cross-job insights that individual jobs can't see.`,
|
|
2922
2922
|
},
|
|
2923
2923
|
tags: ['cat:overseer', 'role:supervisor'],
|
|
2924
2924
|
telegramNotify: 'on-alert',
|
|
@@ -2934,7 +2934,7 @@ If everything is coherent and no reflection is needed, exit silently. Only repor
|
|
|
2934
2934
|
enabled: true,
|
|
2935
2935
|
execute: {
|
|
2936
2936
|
type: 'prompt',
|
|
2937
|
-
value: `You are a Category Overseer for the LEARNING category. Your job is to review all evolution/learning jobs and assess whether the learning pipeline is producing genuine value.\n\n1. Fetch the category report: curl -H "Authorization: Bearer $AUTH" http://localhost
|
|
2937
|
+
value: `You are a Category Overseer for the LEARNING category. Your job is to review all evolution/learning jobs and assess whether the learning pipeline is producing genuine value.\n\n1. Fetch the category report: curl -H "Authorization: Bearer $AUTH" http://localhost:\${INSTAR_PORT:-${port}}/jobs/category-report/learning?sinceHours=48\n2. Analyze:\n - Are evolution proposals being generated AND accepted? What's the accept/reject ratio?\n - Is insight-harvest finding novel insights or recycling stale ones?\n - Are commitments being tracked and completed, or piling up?\n - Is reflection-trigger producing meaningful MEMORY.md updates?\n - Are any learning jobs consistently skipped due to quota? This means the learning pipeline is being starved.\n - Model costs: reflection-trigger uses opus — is the quality difference worth it vs sonnet?\n3. Look for the meta-pattern: is the agent actually getting smarter over time, or is the learning pipeline just busy-work?\n4. Check handoff notes for patterns across runs.\n\nWrite findings in [HANDOFF] tags. Flag if the learning pipeline is producing diminishing returns.`,
|
|
2938
2938
|
},
|
|
2939
2939
|
tags: ['cat:overseer', 'role:supervisor'],
|
|
2940
2940
|
telegramNotify: 'on-alert',
|
|
@@ -2950,7 +2950,7 @@ If everything is coherent and no reflection is needed, exit silently. Only repor
|
|
|
2950
2950
|
enabled: true,
|
|
2951
2951
|
execute: {
|
|
2952
2952
|
type: 'prompt',
|
|
2953
|
-
value: `You are a Category Overseer for the MAINTENANCE category. Your job is to review all housekeeping/maintenance jobs and ensure they're keeping the system clean.\n\n1. Fetch the category report: curl -H "Authorization: Bearer $AUTH" http://localhost
|
|
2953
|
+
value: `You are a Category Overseer for the MAINTENANCE category. Your job is to review all housekeeping/maintenance jobs and ensure they're keeping the system clean.\n\n1. Fetch the category report: curl -H "Authorization: Bearer $AUTH" http://localhost:\${INSTAR_PORT:-${port}}/jobs/category-report/maintenance?sinceHours=48\n2. Analyze:\n - Is memory-hygiene actually reducing stale entries, or finding nothing each run?\n - Is project-map-refresh keeping the map accurate? How often does it find drift?\n - Is coherence-audit finding real misalignments or just confirming everything is fine?\n - Are any maintenance jobs redundant with each other? (e.g., overlapping checks)\n - Are skill-type jobs (coherence-audit, memory-hygiene) running correctly?\n - Workload trends: are jobs processing fewer items over time (diminishing returns)?\n3. Maintenance jobs should trend toward finding LESS work over time. If they consistently find issues, something upstream is broken.\n\nWrite findings in [HANDOFF] tags. Recommend disabling or reducing frequency of jobs that consistently find nothing.`,
|
|
2954
2954
|
},
|
|
2955
2955
|
tags: ['cat:overseer', 'role:supervisor'],
|
|
2956
2956
|
telegramNotify: 'on-alert',
|
|
@@ -2966,7 +2966,7 @@ If everything is coherent and no reflection is needed, exit silently. Only repor
|
|
|
2966
2966
|
enabled: true,
|
|
2967
2967
|
execute: {
|
|
2968
2968
|
type: 'prompt',
|
|
2969
|
-
value: `You are a Category Overseer for the INFRASTRUCTURE category. Your job is to review infrastructure/plumbing jobs.\n\n1. Fetch the category report: curl -H "Authorization: Bearer $AUTH" http://localhost
|
|
2969
|
+
value: `You are a Category Overseer for the INFRASTRUCTURE category. Your job is to review infrastructure/plumbing jobs.\n\n1. Fetch the category report: curl -H "Authorization: Bearer $AUTH" http://localhost:\${INSTAR_PORT:-${port}}/jobs/category-report/infrastructure?sinceHours=48\n2. Analyze:\n - Is git-sync succeeding? Any merge conflicts or divergence?\n - Is dashboard-link-refresh keeping links current? Could it run less often?\n - Is feedback-retry actually retrying anything, or is the queue always empty?\n - Model allocation: git-sync uses high priority — is that justified by its failure rate?\n - Are any infrastructure jobs causing issues for other jobs (e.g., git-sync holding sessions)?\n3. Infrastructure jobs should be boring and reliable. Any excitement is a problem.\n\nWrite findings in [HANDOFF] tags. Keep it brief — infrastructure overseers should be the quietest.`,
|
|
2970
2970
|
},
|
|
2971
2971
|
tags: ['cat:overseer', 'role:supervisor'],
|
|
2972
2972
|
telegramNotify: 'on-alert',
|
|
@@ -2982,7 +2982,7 @@ If everything is coherent and no reflection is needed, exit silently. Only repor
|
|
|
2982
2982
|
enabled: true,
|
|
2983
2983
|
execute: {
|
|
2984
2984
|
type: 'prompt',
|
|
2985
|
-
value: `You are a Category Overseer for the DEVELOPMENT category. Your job is to review development-focused jobs.\n\n1. Fetch the category report: curl -H "Authorization: Bearer $AUTH" http://localhost
|
|
2985
|
+
value: `You are a Category Overseer for the DEVELOPMENT category. Your job is to review development-focused jobs.\n\n1. Fetch the category report: curl -H "Authorization: Bearer $AUTH" http://localhost:\${INSTAR_PORT:-${port}}/jobs/category-report/development?sinceHours=48\n2. Analyze:\n - Are development jobs consuming appropriate resources for their value?\n - Are there CI/testing patterns that could be automated?\n3. Development jobs are only valuable when there's active development. If the codebase is stable, these could be reduced.\n\nWrite findings in [HANDOFF] tags.`,
|
|
2986
2986
|
},
|
|
2987
2987
|
tags: ['cat:overseer', 'role:supervisor'],
|
|
2988
2988
|
telegramNotify: 'on-alert',
|
|
@@ -3223,7 +3223,7 @@ function refreshClaudeMd(projectDir, stateDir) {
|
|
|
3223
3223
|
**This is critical.** You are running on infrastructure (instar) that is actively evolving. When something breaks, feels wrong, or could be better — **you are the first line of detection.** Do not silently absorb errors. Do not work around bugs without reporting them. Every issue you surface helps every agent on the platform.
|
|
3224
3224
|
|
|
3225
3225
|
**What to watch for:**
|
|
3226
|
-
- Server errors: API calls to localhost
|
|
3226
|
+
- Server errors: API calls to localhost:\${INSTAR_PORT:-${port}} failing, unexpected responses, timeouts
|
|
3227
3227
|
- Hook failures: hooks throwing errors, not firing when expected, blocking when they shouldn't
|
|
3228
3228
|
- Job issues: jobs not running on schedule, failing silently, taking too long
|
|
3229
3229
|
- Session problems: sessions not spawning, not being tracked, zombie sessions
|
|
@@ -3234,7 +3234,7 @@ function refreshClaudeMd(projectDir, stateDir) {
|
|
|
3234
3234
|
|
|
3235
3235
|
**When you detect an issue, report it immediately:**
|
|
3236
3236
|
\`\`\`bash
|
|
3237
|
-
curl -s -X POST http://localhost
|
|
3237
|
+
curl -s -X POST http://localhost:\${INSTAR_PORT:-${port}}/feedback \\
|
|
3238
3238
|
-H 'Content-Type: application/json' \\
|
|
3239
3239
|
-d '{"type":"bug","title":"CONCISE_TITLE","description":"FULL_CONTEXT_WITH_ERROR_MESSAGES"}'
|
|
3240
3240
|
\`\`\`
|
|
@@ -3252,22 +3252,22 @@ Types: \`bug\`, \`feature\`, \`improvement\`, \`question\`, \`hallucination\`
|
|
|
3252
3252
|
You have a built-in evolution system with four subsystems that track your growth.
|
|
3253
3253
|
|
|
3254
3254
|
**Evolution Queue** — Staged self-improvement proposals.
|
|
3255
|
-
- View: \`curl http://localhost
|
|
3255
|
+
- View: \`curl http://localhost:\${INSTAR_PORT:-${port}}/evolution/proposals\`
|
|
3256
3256
|
- Propose: \`/evolve\` skill or \`POST /evolution/proposals\`
|
|
3257
3257
|
|
|
3258
3258
|
**Learning Registry** — Structured, searchable insights.
|
|
3259
|
-
- View: \`curl http://localhost
|
|
3259
|
+
- View: \`curl http://localhost:\${INSTAR_PORT:-${port}}/evolution/learnings\`
|
|
3260
3260
|
- Record: \`/learn\` skill or \`POST /evolution/learnings\`
|
|
3261
3261
|
|
|
3262
3262
|
**Capability Gaps** — Track what you're missing.
|
|
3263
|
-
- View: \`curl http://localhost
|
|
3263
|
+
- View: \`curl http://localhost:\${INSTAR_PORT:-${port}}/evolution/gaps\`
|
|
3264
3264
|
- Report: \`/gaps\` skill or \`POST /evolution/gaps\`
|
|
3265
3265
|
|
|
3266
3266
|
**Action Queue** — Commitments with follow-through tracking.
|
|
3267
|
-
- View: \`curl http://localhost
|
|
3267
|
+
- View: \`curl http://localhost:\${INSTAR_PORT:-${port}}/evolution/actions\`
|
|
3268
3268
|
- Create: \`/commit-action\` skill or \`POST /evolution/actions\`
|
|
3269
3269
|
|
|
3270
|
-
**Dashboard**: \`curl http://localhost
|
|
3270
|
+
**Dashboard**: \`curl http://localhost:\${INSTAR_PORT:-${port}}/evolution\`
|
|
3271
3271
|
**Skills**: \`/evolve\`, \`/learn\`, \`/gaps\`, \`/commit-action\`
|
|
3272
3272
|
`);
|
|
3273
3273
|
}
|