instar 1.3.236 → 1.3.238

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.
Files changed (62) hide show
  1. package/dist/commands/server.d.ts.map +1 -1
  2. package/dist/commands/server.js +35 -2
  3. package/dist/commands/server.js.map +1 -1
  4. package/dist/config/ConfigDefaults.d.ts.map +1 -1
  5. package/dist/config/ConfigDefaults.js +8 -0
  6. package/dist/config/ConfigDefaults.js.map +1 -1
  7. package/dist/core/ParallelActivityIndex.d.ts +62 -0
  8. package/dist/core/ParallelActivityIndex.d.ts.map +1 -0
  9. package/dist/core/ParallelActivityIndex.js +129 -0
  10. package/dist/core/ParallelActivityIndex.js.map +1 -0
  11. package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
  12. package/dist/core/PostUpdateMigrator.js +16 -0
  13. package/dist/core/PostUpdateMigrator.js.map +1 -1
  14. package/dist/core/types.d.ts +37 -0
  15. package/dist/core/types.d.ts.map +1 -1
  16. package/dist/core/types.js.map +1 -1
  17. package/dist/monitoring/GeminiLoopDriver.d.ts +112 -0
  18. package/dist/monitoring/GeminiLoopDriver.d.ts.map +1 -0
  19. package/dist/monitoring/GeminiLoopDriver.js +111 -0
  20. package/dist/monitoring/GeminiLoopDriver.js.map +1 -0
  21. package/dist/monitoring/GeminiLoopRunner.d.ts +93 -0
  22. package/dist/monitoring/GeminiLoopRunner.d.ts.map +1 -0
  23. package/dist/monitoring/GeminiLoopRunner.js +134 -0
  24. package/dist/monitoring/GeminiLoopRunner.js.map +1 -0
  25. package/dist/monitoring/ParallelWorkOverlap.d.ts +59 -0
  26. package/dist/monitoring/ParallelWorkOverlap.d.ts.map +1 -0
  27. package/dist/monitoring/ParallelWorkOverlap.js +86 -0
  28. package/dist/monitoring/ParallelWorkOverlap.js.map +1 -0
  29. package/dist/monitoring/ParallelWorkSentinel.d.ts +59 -0
  30. package/dist/monitoring/ParallelWorkSentinel.d.ts.map +1 -0
  31. package/dist/monitoring/ParallelWorkSentinel.js +79 -0
  32. package/dist/monitoring/ParallelWorkSentinel.js.map +1 -0
  33. package/dist/monitoring/geminiLoopProduction.d.ts +62 -0
  34. package/dist/monitoring/geminiLoopProduction.d.ts.map +1 -0
  35. package/dist/monitoring/geminiLoopProduction.js +124 -0
  36. package/dist/monitoring/geminiLoopProduction.js.map +1 -0
  37. package/dist/providers/adapters/gemini-cli/transport/geminiSpawn.d.ts +14 -0
  38. package/dist/providers/adapters/gemini-cli/transport/geminiSpawn.d.ts.map +1 -1
  39. package/dist/providers/adapters/gemini-cli/transport/geminiSpawn.js +16 -0
  40. package/dist/providers/adapters/gemini-cli/transport/geminiSpawn.js.map +1 -1
  41. package/dist/scaffold/templates.d.ts.map +1 -1
  42. package/dist/scaffold/templates.js +4 -0
  43. package/dist/scaffold/templates.js.map +1 -1
  44. package/dist/server/AgentServer.d.ts +9 -0
  45. package/dist/server/AgentServer.d.ts.map +1 -1
  46. package/dist/server/AgentServer.js +83 -0
  47. package/dist/server/AgentServer.js.map +1 -1
  48. package/dist/server/CapabilityIndex.d.ts.map +1 -1
  49. package/dist/server/CapabilityIndex.js +10 -0
  50. package/dist/server/CapabilityIndex.js.map +1 -1
  51. package/dist/server/routes.d.ts +5 -0
  52. package/dist/server/routes.d.ts.map +1 -1
  53. package/dist/server/routes.js +62 -0
  54. package/dist/server/routes.js.map +1 -1
  55. package/package.json +1 -1
  56. package/src/data/builtin-manifest.json +64 -64
  57. package/src/scaffold/templates.ts +4 -0
  58. package/upgrades/1.3.237.md +82 -0
  59. package/upgrades/1.3.238.md +68 -0
  60. package/upgrades/side-effects/gemini-loop-driver-wiring.md +59 -0
  61. package/upgrades/side-effects/gemini-multi-turn-loop-driver.md +56 -0
  62. package/upgrades/side-effects/parallel-activity-coherence.md +94 -0
@@ -3484,6 +3484,51 @@ export function createRoutes(ctx) {
3484
3484
  }
3485
3485
  res.json(ctx.mcpProcessReaper.snapshot());
3486
3486
  });
3487
+ // GeminiLoopRunner (need-gem-002) — the multi-turn gemini loop-driver. Lets a
3488
+ // caller hand the gemini mentee a goal it works across turns (turn 1 one-shot →
3489
+ // resume by handle, no transcript re-send). A run can take minutes, so POST
3490
+ // ADMITS + launches async and returns a runId immediately; GET polls the result.
3491
+ // Subscription-auth only (the transport strips billing env). Ships DARK
3492
+ // (autonomousSessions.geminiLoopDriver.enabled; developmentAgent gate turns it on
3493
+ // for dev agents). 503 when not wired; 409 when disabled / at capacity / budget.
3494
+ router.post('/gemini-loop/runs', (req, res) => {
3495
+ if (!ctx.geminiLoopRunner) {
3496
+ res.status(503).json({ error: 'gemini loop runner unavailable' });
3497
+ return;
3498
+ }
3499
+ const { goalPrompt, model, maxTurns } = req.body ?? {};
3500
+ if (!goalPrompt || typeof goalPrompt !== 'string') {
3501
+ res.status(400).json({ error: 'goalPrompt (string) is required' });
3502
+ return;
3503
+ }
3504
+ const outcome = ctx.geminiLoopRunner.startRun({ goalPrompt, model, maxTurns });
3505
+ if (!outcome.ok) {
3506
+ // disabled / at-capacity / budget / invalid → 409 (cannot admit right now)
3507
+ const code = outcome.reason === 'invalid' ? 400 : 409;
3508
+ res.status(code).json({ error: outcome.reason, detail: outcome.detail });
3509
+ return;
3510
+ }
3511
+ res.status(202).json({ runId: outcome.runId, status: 'running' });
3512
+ });
3513
+ router.get('/gemini-loop/runs', (_req, res) => {
3514
+ if (!ctx.geminiLoopRunner) {
3515
+ res.status(503).json({ error: 'gemini loop runner unavailable' });
3516
+ return;
3517
+ }
3518
+ res.json({ runs: ctx.geminiLoopRunner.listRuns(), active: ctx.geminiLoopRunner.activeRuns() });
3519
+ });
3520
+ router.get('/gemini-loop/runs/:id', (req, res) => {
3521
+ if (!ctx.geminiLoopRunner) {
3522
+ res.status(503).json({ error: 'gemini loop runner unavailable' });
3523
+ return;
3524
+ }
3525
+ const run = ctx.geminiLoopRunner.getRun(req.params.id);
3526
+ if (!run) {
3527
+ res.status(404).json({ error: 'run not found' });
3528
+ return;
3529
+ }
3530
+ res.json(run);
3531
+ });
3487
3532
  // SleepController (RESPONSIBLE-RESOURCE-USAGE — agent hard-sleep, Stage B). The
3488
3533
  // pull-surface answer to "would this idle agent sleep right now, and if not,
3489
3534
  // which guard is holding it awake?": the live verdict (awake / idle-shallow /
@@ -4070,6 +4115,23 @@ export function createRoutes(ctx) {
4070
4115
  samples: ctx.resourceLedger.recentSamples({ sinceMs, limit, source }),
4071
4116
  });
4072
4117
  });
4118
+ // ── Parallel-Work Awareness (docs/specs/parallel-activity-coherence.md, Phase A) ──
4119
+ // Read-only cross-topic index: every topic with intent state + its current focus +
4120
+ // high-specificity tags + whether a session is live on it. Signal-only; never gates.
4121
+ // 503 when the index is unavailable (no stateDir / init failed).
4122
+ router.get('/parallel-work/activities', (_req, res) => {
4123
+ if (!ctx.parallelActivityIndex) {
4124
+ res.status(503).json({ error: 'parallel-activity index unavailable (no stateDir or init failed)' });
4125
+ return;
4126
+ }
4127
+ const activities = ctx.parallelActivityIndex.activities();
4128
+ res.json({
4129
+ count: activities.length,
4130
+ runningCount: activities.filter((a) => a.running).length,
4131
+ activities,
4132
+ note: 'Cross-topic read over the existing Topic-Intent layer. The overlap sentinel (Phase B) ships separately.',
4133
+ });
4134
+ });
4073
4135
  // ── Per-component framework routing (docs/specs/per-component-framework-routing.md) ──
4074
4136
  // Read-only: what framework each known component resolves to right now (live config),
4075
4137
  // whether that framework is available, and the per-framework breaker isolation. 503