@awak-app/simy-cli 0.7.35 → 0.7.37

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 (35) hide show
  1. package/README.md +50 -46
  2. package/package.json +1 -1
  3. package/src/agent.js +1 -1
  4. package/src/backend-executable.js +1 -1
  5. package/src/cli-contract.js +1 -1
  6. package/src/cli-observability.js +1 -1
  7. package/src/codex-plugins/simy/.codex-plugin/plugin.json +5 -5
  8. package/src/codex-plugins/simy/hooks/README.md +3 -3
  9. package/src/codex-plugins/simy/hooks/delivery-loop.mjs +2 -2
  10. package/src/codex-plugins/simy/skills/continue/SKILL.md +4 -4
  11. package/src/codex-plugins/simy/skills/continue/agents/openai.yaml +3 -3
  12. package/src/codex-plugins/simy/skills/diagnose/SKILL.md +2 -2
  13. package/src/codex-plugins/simy/skills/sqm-loop/SKILL.md +3 -3
  14. package/src/codex-plugins/simy/skills/sqm-loop/agents/openai.yaml +2 -2
  15. package/src/console/app.js +7 -7
  16. package/src/delivery-hooks/claude-workflow.md +1 -1
  17. package/src/delivery-hooks/command.js +5 -5
  18. package/src/desktop-host.js +58 -11
  19. package/src/index.js +1 -1
  20. package/src/local-task.js +1 -1
  21. package/src/orchestrator/presentation.js +1 -1
  22. package/src/runner.js +2 -2
  23. package/src/session-supervision/automatic-continuation.js +11 -11
  24. package/src/session-supervision/continuation-analysis.js +1 -1
  25. package/src/session-supervision/continuation-command.js +3 -3
  26. package/src/session-supervision/continuation-readiness.js +1 -1
  27. package/src/session-supervision/conversation-presentation.js +3 -3
  28. package/src/session-supervision/decision-presentation.js +8 -8
  29. package/src/session-supervision/index.js +13 -13
  30. package/src/session-supervision/owner-transport.js +53 -11
  31. package/src/session-supervision/remote-errors.js +2 -2
  32. package/src/session-supervision/remote-hosts.js +14 -3
  33. package/src/session-supervision/work-state.js +3 -3
  34. package/src/sqm/agent-skill.js +3 -3
  35. package/src/sqm/claude-plugin.js +1 -1
package/README.md CHANGED
@@ -8,7 +8,7 @@ This signs the desktop into SIMY; browser automation uses its own provider conne
8
8
 
9
9
  Technical coding failures retain their task and retry after a persisted 5–30 minute
10
10
  cooldown. Automatic recovery preserves the original goal, usage limits, provider
11
- connection and explicit stops. Enabling automatic continuation can also adopt an
11
+ connection and explicit stops. Turning on Delivery Loop can also adopt an
12
12
  ordinary loop waiting for an external dependency, starting with read-only inspection.
13
13
  A damaged provider-link file can be repaired by **Connect SIMY** for that provider;
14
14
  the original file is retained and the other provider stays disconnected.
@@ -36,7 +36,7 @@ for configuration, tests and remaining host integration requirements.
36
36
 
37
37
  ローカルDelivery Loopの0.6.24候補を版固定で実行するには、[ローカル候補版のインストール・実行](docs/local-delivery-runtime.md)を参照してください。
38
38
 
39
- Local execution agent for SIMY Local Tasks and Agentic Loop runs.
39
+ Local execution agent for SIMY Local Tasks and Delivery Loop runs.
40
40
 
41
41
  To supervise an explicitly requested current goal after a finished Codex run, use
42
42
  `simy delivery followup --provider codex --session SESSION_ID --previous-run-id RUN_ID --objective "Current goal and expected result"`.
@@ -75,7 +75,7 @@ segments, and keep lifetime failure counts after event rotation.
75
75
 
76
76
  Each AI app card separates **SIMY connection: on / stopped** from CLI, sign-in
77
77
  and plugin health. Disconnecting collapses those details and explains that SIMY
78
- monitoring and automatic continuation are stopped. Details can still be opened;
78
+ monitoring and Delivery Loop are stopped. Details can still be opened;
79
79
  reconnecting restores the item statuses. Plugin inspection failure never changes
80
80
  the connection setting or hides its disconnect action.
81
81
 
@@ -116,7 +116,7 @@ The server's durable recovery migration requeues the same failed job and retains
116
116
  its input, history and attempt count; it is required to recover jobs previously
117
117
  held by the server's lifetime retry cap.
118
118
 
119
- Agentic Loop preflight accepts the task's existing requirement, acceptance
119
+ Delivery Loop preflight accepts the task's existing requirement, acceptance
120
120
  criteria, required checks and charter context alongside the repository/provider.
121
121
  Its `startup` summary lists all blockers, unverified conditions and recovery
122
122
  actions together. Environment-only calls remain supported. Task checks reuse the
@@ -135,7 +135,7 @@ remain available for history and usage warnings. The Web controller supports
135
135
  connected local Codex/Claude engines; unsupported cloud execution is refused
136
136
  before dispatch.
137
137
 
138
- A completed Agentic worker's structured result is saved privately before evidence
138
+ A completed Delivery Loop worker's structured result is saved privately before evidence
139
139
  collection and the final observation flush. If the controller restarts after that save,
140
140
  the authorized daemon recovers the same attempt and collects fresh evidence
141
141
  without dispatching the completed worker again. Collector read failures retry up
@@ -157,14 +157,14 @@ repeated on every monitor tick; explicitly continue the same run to recover.
157
157
  Older reviews without a saved CI basis can refresh only when their prior evidence
158
158
  still establishes the complete reviewed identity; otherwise explicitly continue.
159
159
 
160
- For interrupted Agentic work, `GET /v1/agentic-loop/:id/recovery` provides a
160
+ For interrupted Delivery Loop work, `GET /v1/agentic-loop/:id/recovery` provides a
161
161
  read-only objective and checkout fingerprint. Reconcile an uncertain side effect
162
162
  with `POST` to that endpoint (`action: reconcile`, authoritative
163
163
  `operation_status`, `observation`, `evidence_refs`) before resuming. A paused
164
- Agentic run retains `POST /v1/agentic-loop/:id/continuation-ceilings` for an
164
+ Delivery Loop run retains `POST /v1/agentic-loop/:id/continuation-ceilings` for an
165
165
  explicit safety-ceiling extension under the progress policy. Token and retry
166
166
  budgets are notification thresholds: they do not interrupt or stop useful work.
167
- Agentic Loop checks a separate safety ceiling before each new provider call:
167
+ Delivery Loop checks a separate safety ceiling before each new provider call:
168
168
  15,000,000 weighted Provider tokens and 50 executor attempts by default, using
169
169
  existing `provider_token_ceiling` and `attempt_ceiling` settings when present.
170
170
  The final attempt may still be reviewed if token allowance remains. Active
@@ -175,7 +175,7 @@ remaining work, explicitly extend the relevant ceiling within the existing
175
175
  run. A notification-threshold increase alone cannot clear a safety stop; at the
176
176
  maximum ceiling, further automatic calls remain blocked. Extension itself never
177
177
  resets usage or resumes work. Local Task and managed Delivery behavior is not
178
- changed by this Agentic safety gate. Both routes require the original authorized
178
+ changed by this Delivery Loop safety gate. Both routes require the original authorized
179
179
  account, organization and device throughout the request.
180
180
 
181
181
  ## Provider reconnection and saved consent
@@ -244,9 +244,9 @@ after reconnecting permits another probe, with bounded automatic cooldowns.
244
244
  Conversation checks blocked by **Sign-in required** automatically recheck after
245
245
  a fresh Codex or Claude login probe succeeds, including after an app restart.
246
246
  An unchanged ready status cannot repeatedly re-run a failed check. Manual retry
247
- remains available; continuing the conversation still requires **Auto-continue**.
247
+ remains available; continuing the conversation still requires **Continue automatically**.
248
248
 
249
- You can enable **Auto-continue** while a conversation is running when its original
249
+ You can turn on **Continue automatically** while a conversation is running when its original
250
250
  provider configuration is verified. SIMY saves the preference and waits for the
251
251
  current turn to finish before checking remaining work. Configuration and runtime
252
252
  blockers appear in the conversation view with recovery guidance; turning the
@@ -276,16 +276,18 @@ Closing the window keeps the agent running. Open the app again or choose
276
276
  interrupting active tasks. The normal `simy` command remains available.
277
277
 
278
278
  The macOS **Automatic updates** switch saves this Mac's choice across restarts.
279
- Compatible signed installations enable it by default. Patch/minor updates wait
280
- for idle and verify the new runtime before handoff; failed startup restores the
281
- previous installed version. The app then switches to the verified new interface
282
- when no unfinished work or confirmation is pending. Turning the switch off keeps
279
+ Compatible signed installations enable it by default. Patch/minor updates prepare
280
+ and verify the new runtime before a safe handoff; failed startup restores the
281
+ previous installed version. Choose **Update and restart** to open the verified
282
+ new interface, or **Later** to keep using the current window. The window never
283
+ restarts automatically. Turning the switch off keeps
283
284
  manual checks and **Download DMG** available. An explicit `SIMY_AUTO_UPDATE=0`
284
285
  remains authoritative, and major updates continue to use the DMG.
285
286
  **Stop task…** in a task
286
287
  detail asks for confirmation and terminates its local Provider process, keeping
287
- existing output and history. An explicit update can likewise stop active work
288
- after confirmation; automatic updates still wait for idle. **⌘Q** exits SIMY and
288
+ existing output and history. Window updates preserve the same execution owner,
289
+ pending approvals and inputs, and scoped drafts. Older services without this
290
+ capability keep running and wait for a safe update. **⌘Q** exits SIMY and
289
291
  its background services directly, including when work is running. The window shows
290
292
  the app version, and normal app launches select the newer installed interface.
291
293
 
@@ -314,7 +316,7 @@ missing sources. Provider plugin enablement and hook trust remain provider-owned
314
316
 
315
317
  For conversation continuation, select SIMY in the Codex app with `@` and ask
316
318
  `continue this task` (Japanese: `この作業を続けて`). The `continue` skill uses the
317
- running app's existing Auto Continue switch and background coordinator. In
319
+ running app's existing Delivery Loop switch (**Continue automatically**) and background coordinator. In
318
320
  Codex CLI, use its native `$simy:continue` skill selector; in Claude Code use the
319
321
  native `/simy:continue` command. Claude Code does not define `@simy` as a plugin
320
322
  command: use the slash command for an explicit invocation. Merely mentioning
@@ -347,7 +349,7 @@ SIMY**, reopen it, and reconnect; closing the window alone does not restart the
347
349
  background host. Refresh connections and confirm the conversation list returns.
348
350
  Diagnostic `provider connection failed` entries distinguish `reason=update`,
349
351
  `organization_change`, and `shutdown` without including credentials or transcripts.
350
- Reconnection does not sign in to Codex CLI or restore revoked automatic continuation.
352
+ Reconnection does not sign in to Codex CLI or restore a revoked Delivery Loop.
351
353
 
352
354
  The plugin also includes a non-blocking connection reminder. At task startup,
353
355
  resume, and prompt submission it reads the origin-scoped local discovery record
@@ -368,7 +370,7 @@ from the same maintained source as Codex; only provider terminology and hook/man
368
370
  format differ. Installing source files does not imply that either provider has enabled
369
371
  the plugin. Existing Claude settings, unrelated marketplaces, and plugins are preserved.
370
372
 
371
- State-only feature-improvement collection ships with the generated Claude plugin, but uploads require the paired desktop CLI runtime to refresh device consent and drain its local outbox. Without that paired authenticated runtime, the plugin remains default-off and does not enable Auto-continue.
373
+ State-only feature-improvement collection ships with the generated Claude plugin, but uploads require the paired desktop CLI runtime to refresh device consent and drain its local outbox. Without that paired authenticated runtime, the plugin remains default-off and does not turn on Delivery Loop.
372
374
 
373
375
  After that first installation, the daemon checks installed workflows at startup
374
376
  and every hour, including after a CLI automatic upgrade. It updates only existing
@@ -379,7 +381,7 @@ marketplace still points to SIMY’s generated local source. Plugin versions inc
379
381
  receive a fresh cache. Use a new Codex task to pick up updated skills; running
380
382
  tasks are not restarted. Missing or disabled plugins are not enabled automatically.
381
383
  Failed refreshes retry on the next check without blocking daemon startup.
382
- Auto-continue ON saves consent for the selected original conversation; it does not
384
+ **Continue automatically** ON saves consent for the selected original conversation; it does not
383
385
  immediately launch a second turn. A verified desktop discovery admission or an
384
386
  existing exact admission saves this preference without another provider RPC.
385
387
  After the current turn settles, continuation separately rechecks context, the
@@ -399,7 +401,7 @@ probes remain limited to recent conversations and explicitly retained work;
399
401
  older rows remain visible with unverified execution state. The macOS work list then prioritizes verified running
400
402
  conversations, including families with running children, followed by work needing
401
403
  a human response and recent activity. Its All, Running, Needs attention, Completed
402
- and Archived views combine with search. Tracking and auto-continue settings never
404
+ and Archived views combine with search. Tracking and Delivery Loop settings never
403
405
  prove that an AI is running; observations older than 45 seconds or a failed
404
406
  provider refresh display an unknown execution state.
405
407
 
@@ -415,7 +417,7 @@ unfinished children or open PRs keep a completed task out of the Completed view.
415
417
  Codex candidates come from CLI, VS Code and app-server
416
418
  conversation sources; non-interactive exec, unknown sources and delegated agents
417
419
  are excluded. A hook observation alone cannot restore a filtered conversation.
418
- Explicitly tracked, monitored, auto-continue and unsettled supervision records
420
+ Explicitly tracked, monitored, Delivery Loop and unsettled supervision records
419
421
  remain visible even during a provider discovery failure. When a retained Codex conversation is
420
422
  omitted from the recent provider page, SIMY reads its exact metadata without
421
423
  loading turns or taking writer ownership. The same interactive source filter and
@@ -475,7 +477,7 @@ settings can differ, and project-scoped installations are labeled explicitly.
475
477
  missing sources; existing sources still receive updates.
476
478
 
477
479
  This is the recommended installation because the CLI can safely install patch
478
- and minor releases, and the daemon restarts only when no Agentic Loop task is active. To run
480
+ and minor releases, and the daemon restarts only when no Delivery Loop task is active. To run
479
481
  the interactive chat after installation, use `simy`.
480
482
 
481
483
  For a one-time evaluation or source development, these modes remain supported:
@@ -501,7 +503,7 @@ injected runtime context. Dated messages outside the configured lookback are
501
503
  excluded even when their conversation continues today. Legacy transcripts with
502
504
  no message timestamps use the file timestamp as a fallback. The local cursor stores only opaque hashes and
503
505
  timestamps scoped to the connection, account, and device. Uploads require the
504
- `user_conversation.v2` Web, Crew, and Backend contract and exact per-chunk
506
+ SIMY service `user_conversation.v2` contract and exact per-chunk
505
507
  receipts before the cursor advances. Deploy those companion changes before
506
508
  enabling this CLI version; earlier receivers cannot acknowledge v2 history.
507
509
 
@@ -528,18 +530,18 @@ cursor is written under `$SIMY_HOME/work-pattern-history-sync/`.
528
530
 
529
531
  The CLI starts a loopback HTTP agent on a random available port, keeps a
530
532
  48-hour, origin-scoped local session, and opens a native coding chat. The first
531
- chat message creates the remote audit ledger and starts the local Agentic Loop
533
+ chat message creates the remote audit ledger and starts the local Delivery Loop
532
534
  state machine; SIMY Web mirrors the lifecycle but is not required as the task
533
535
  entry point. The CLI also accepts backend-issued launch challenges for Web-led
534
536
  runs. It builds the requirement charter, runs Codex or Claude Code, audits
535
537
  structured completion evidence, and re-instructs the executor while verification shows useful progress.
536
538
 
537
- Before Web creates an Agentic Loop, it classifies whether the request actually
539
+ Before Web creates an Delivery Loop, it classifies whether the request actually
538
540
  needs a managed PR, verification, evidence, and merge lifecycle. A bounded
539
541
  ordinary task is sent to CLI 0.2.2 or newer through the one-time direct executor
540
542
  instead. CLI independently recomputes the guardrail, restricts read-only work at
541
543
  the Provider command boundary, and permits exactly one Provider invocation. It
542
- does not create an Agentic Loop ledger, audit session, or retry lifecycle for
544
+ does not create an Delivery Loop ledger, audit session, or retry lifecycle for
543
545
  that task.
544
546
 
545
547
  ## Local Tasks
@@ -568,13 +570,13 @@ process running as the same OS user.
568
570
 
569
571
 
570
572
  CLI API contract v9 promotes non-coding work to a first-class **Local Task**
571
- runtime. A Local Task is separate from Agentic Loop: it runs one bounded Codex
573
+ runtime. A Local Task is separate from Delivery Loop: it runs one bounded Codex
572
574
  or Claude Code session without Git branches, pull requests, audits, or automatic
573
575
  Provider retries. Knowledge-work deliverables use an isolated task sandbox by
574
576
  default, so they do not require a repository.
575
577
 
576
578
  `POST /v1/local-tasks/start` accepts JSON or the same verified multipart
577
- attachment envelope used by Agentic Loop and requires a stable
579
+ attachment envelope used by Delivery Loop and requires a stable
578
580
  `Idempotency-Key`. Repeating the same request returns the original task; using
579
581
  the same key for different content returns
580
582
  `LOCAL_TASK_IDEMPOTENCY_CONFLICT`. `GET /v1/local-tasks/reconcile` with the same
@@ -664,10 +666,12 @@ original argv once. A process-wide nonce/version guard prevents update loops.
664
666
  Major releases are never installed at startup: `simy update` asks for explicit
665
667
  confirmation (`simy update --yes` is available for non-interactive automation).
666
668
 
667
- The macOS desktop app runs from `/Applications/SIMY.app`. Its signed updater
668
- keeps downloaded releases in the user cache, then replaces the desktop bundle
669
- after the app and its executor have stopped. The previous bundle is retained
670
- for recovery. If permissions or verification prevent replacement, SIMY shows
669
+ The macOS desktop app starts from `/Applications/SIMY.app`. Its signed updater
670
+ keeps downloaded releases in the user cache. An explicit window restart opens
671
+ the validated immutable release while retaining its execution owner. Whole-bundle
672
+ replacement waits for processes using the bundle to exit; a busy bundle is left
673
+ in place and the selected release opens directly. The previous bundle is retained
674
+ for recovery. If permissions or verification prevent installation, SIMY shows
671
675
  an installer recovery action instead of reporting the desktop app as current.
672
676
  Concurrent handoffs share one exclusive installation lock. Packages before
673
677
  0.5.29 may require one system-authorized installer update because their bundle
@@ -724,7 +728,7 @@ Auto-update E2E screenshots are generated locally under
724
728
 
725
729
  ## Executor compatibility
726
730
 
727
- SIMY checks the selected executor with `--version` before an Agentic Loop can
731
+ SIMY checks the selected executor with `--version` before an Delivery Loop can
728
732
  start. The currently validated compatibility floors are Codex `0.144.0` and
729
733
  Claude Code `2.1.200`. A missing, older, or unversioned executable fails the
730
734
  preflight and returns the installed version, required version, and a recovery
@@ -846,7 +850,7 @@ permissions still require validation in the corresponding environment.
846
850
 
847
851
  Normal runs do not require a separate sync command: the CLI
848
852
  uses a verified local cache and revalidates it with TTL and ETag semantics.
849
- The Agentic Loop runs min-check after each code modification and the full check
853
+ The Delivery Loop runs min-check after each code modification and the full check
850
854
  before PR readiness. Findings and the redacted signed-proof summary are recorded
851
855
  in its audit; source text is never uploaded.
852
856
 
@@ -888,7 +892,7 @@ list.
888
892
 
889
893
  ## Interactive console
890
894
 
891
- Running `simy` in a terminal opens the Agentic Loop chat. It discovers the
895
+ Running `simy` in a terminal opens the Delivery Loop chat. It discovers the
892
896
  current GitHub repository and branch, selects an available executor, and keeps
893
897
  the composer active so a natural-language request can start immediately. Each
894
898
  run appears in a selectable list with its lifecycle state, process ID, and a
@@ -988,7 +992,7 @@ Publishing is handled by GitHub Actions in `.github/workflows/publish.yml`.
988
992
 
989
993
  ### Repository system scopes
990
994
 
991
- Version 0.5.7 supports signed `system_scope` snapshots from Quality Monitor.
995
+ Version 0.5.7 supports signed `system_scope` snapshots from SQM.
992
996
  Each check pins the repository's connected component and graph revision. A new
993
997
  check revalidates scoped bundles online; a stale or unavailable scope cannot fall
994
998
  back to an older cached component. Minimum and full check proofs retain the
@@ -1035,13 +1039,13 @@ No twelve-view specification, reconstruction review, traceability matrix or new
1035
1039
  review package is required. Check actual ease, clarity and accuracy using the
1036
1040
  [UX guidance](src/orchestrator/delivery/references/ux-specification.md).
1037
1041
 
1038
- ## Purpose-driven automatic continuation
1042
+ ## Purpose-driven Delivery Loop
1039
1043
 
1040
1044
  The desktop **Continue automatically / 自動で続ける** switch enables purpose-driven
1041
1045
  search: research, experiments, minimal implementation and direct outcome checks.
1042
1046
  A separate review is used for semantic inspection or when explicitly requested. Failed methods trigger replanning; review findings return to repair.
1043
1047
  Independent authorized work can continue while a controller-tracked operation waits.
1044
- The existing Codex auto-continue switch enables read-only diagnosis for uncertain or
1048
+ The existing Codex **Continue automatically** switch enables read-only diagnosis for uncertain or
1045
1049
  information-waiting conversations, then assessed work. No default time/turn cap is
1046
1050
  added; explicitly enrolled purpose budgets and user stops are preserved. Native
1047
1051
  provider approval waits still require the original provider boundary to settle.
@@ -1082,7 +1086,7 @@ model responses or credentials. Historical summaries are not a replacement for
1082
1086
  signed proof files or delivery acceptance. Records from versions that kept
1083
1087
  analysis only in memory cannot be recovered after that process exits.
1084
1088
 
1085
- The CLI Agentic Loop uses [proportionate retry and review decisions](docs/stop-prevention/proportionate-continuation.md): reasoning notes are advisory, and an independent reviewer may explicitly defer or dismiss minor/warning/info findings with a nonempty explanation while retaining them in the receipt. Required acceptance evidence and major safety findings remain protected.
1089
+ The CLI Delivery Loop uses [proportionate retry and review decisions](docs/stop-prevention/proportionate-continuation.md): reasoning notes are advisory, and an independent reviewer may explicitly defer or dismiss minor/warning/info findings with a nonempty explanation while retaining them in the receipt. Required acceptance evidence and major safety findings remain protected.
1086
1090
 
1087
1091
  ### Local coding attempt result collection
1088
1092
 
@@ -1398,8 +1402,8 @@ Search covers the full available catalog, including older conversations. Use
1398
1402
  Each row identifies its provider; identical IDs in Codex and Claude remain
1399
1403
  separate rows. A provider failure preserves the other provider's results with
1400
1404
  an explicit incomplete warning (`complete: false` and `warnings` in JSON).
1401
- This view respects both saved provider connection settings and never enables
1402
- automatic continuation. Disconnected providers are not read.
1405
+ This view respects both saved provider connection settings and never turns on
1406
+ Delivery Loop. Disconnected providers are not read.
1403
1407
 
1404
1408
  The terminal command reads this host and hosts explicitly registered in
1405
1409
  `~/.simy/remote-hosts.json`. Use `--local-only` to skip SSH, and
@@ -1461,7 +1465,7 @@ unsupported-platform error for Claude native control.
1461
1465
 
1462
1466
  Keep Claude available in an unlocked desktop while the operation runs. SIMY
1463
1467
  opens the exact Code-tab conversation and uses Claude's own archive/restore
1464
- control. Running conversations and automatic continuation must be stopped first.
1468
+ control. Running conversations and Delivery Loop must be stopped first.
1465
1469
  Before opening that conversation, SIMY checks Claude's visible windows for
1466
1470
  unsent input, generating responses and dialogs. It leaves the current conversation
1467
1471
  in place if any are present or the window/input state cannot be inspected. The
@@ -1483,7 +1487,7 @@ with `--provider codex`.
1483
1487
  ### Delivery entry routes
1484
1488
 
1485
1489
  Crew owns `sessionLoopOptions` in the distributed loop kernel. Codex enrollment,
1486
- Continue, follow-up, desktop controls and automatic continuation use purpose v2
1490
+ Continue, follow-up, desktop controls and Delivery Loop use purpose v2
1487
1491
  by default; old false/v1 enrollment flags cannot select the retired mode.
1488
1492
  Explicit strict/balanced policies and human acceptance criteria remain binding.
1489
1493
  Compatible saved tasks migrate without replacing identity, history or budget.
@@ -1530,7 +1534,7 @@ occupancy without accepting the task. Long-running tasks transmit current
1530
1534
  recovery context and recent work; the full history remains in durable state
1531
1535
  and can be inspected through `delivery status`.
1532
1536
 
1533
- ### Reusable Auto Continue evaluation inputs
1537
+ ### Reusable Delivery Loop evaluation inputs
1534
1538
 
1535
1539
  For the 20 versioned conversation regression cases, immutable stopping-protocol
1536
1540
  plans, and pinned SWE-bench Pro public-task preparation, see
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@awak-app/simy-cli",
3
- "version": "0.7.35",
3
+ "version": "0.7.37",
4
4
  "description": "Local SIMY executor for non-coding Local Tasks and Agentic Loop runs.",
5
5
  "type": "module",
6
6
  "bin": {
package/src/agent.js CHANGED
@@ -3126,7 +3126,7 @@ export async function startAgent({
3126
3126
  request,
3127
3127
  });
3128
3128
  const runId = String(remoteRun?.id || "");
3129
- if (!runId) throw new Error("SIMY Web did not return an Agentic Loop run id.");
3129
+ if (!runId) throw new Error("SIMY Web did not return a Delivery Loop run id.");
3130
3130
  const run = createRun({ runId, request, session, apiOrigin, localStateRoot: codingRunStateRoot, sqmHistoryRoot: sessionRoot });
3131
3131
  await saveCodingRunSnapshot(codingRunStateRoot, run.snapshot);
3132
3132
  registry.create(run);
@@ -28,7 +28,7 @@ export async function inspectBackendExecutable(
28
28
  backend,
29
29
  { spawnImpl = spawn, candidates, timeoutMs = 5_000, signal, discoveryOptions = {}, minimumVersion, executionEnvironment } = {},
30
30
  ) {
31
- const assertActive = () => { if (signal?.aborted) throw Object.assign(new Error('Backend inspection was cancelled.'), { code: 'cancelled' }); };
31
+ const assertActive = () => { if (signal?.aborted) throw Object.assign(new Error('AI provider inspection was cancelled.'), { code: 'cancelled' }); };
32
32
  assertActive();
33
33
  const policy = versionPolicy(backend);
34
34
  const requiredVersion = minimumVersion || policy.minimumVersion;
@@ -14,7 +14,7 @@ import {
14
14
  } from "./durable-local-task-steps-contract.js";
15
15
  import { buildExecutionCapabilityContract } from "./execution-capability-contract.js";
16
16
 
17
- export const CLI_VERSION = "0.7.35";
17
+ export const CLI_VERSION = "0.7.37";
18
18
  export const CLI_API_CONTRACT_VERSION = 10;
19
19
 
20
20
  export function narrativeImageCapabilityMetadata() {
@@ -7,7 +7,7 @@ import { execFile } from 'node:child_process';
7
7
  import { promisify } from 'node:util';
8
8
  import { webApiHeaders, webApiUrl } from './web-api.js';
9
9
  // Keep this leaf module package-safe: hooks load it before the full CLI contract.
10
- const CLI_VERSION = '0.7.35';
10
+ const CLI_VERSION = '0.7.37';
11
11
 
12
12
  const STORE = 'cli-observability-state.json';
13
13
  const LEGACY_CONFIG = 'cli-observability.json';
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "simy",
3
3
  "version": "0.1.0",
4
- "description": "SIMY Auto Continue, quality checks and PR review through the original conversation's existing controls.",
4
+ "description": "SIMY Delivery Loop, SQM checks and PR review through the original conversation's existing controls.",
5
5
  "author": {
6
6
  "name": "Specialist Doctors Inc.",
7
7
  "url": "https://github.com/SpecialistDoctors-Inc"
@@ -17,17 +17,17 @@
17
17
  "interface": {
18
18
  "displayName": "SIMY",
19
19
  "shortDescription": "Continue, check and review.",
20
- "longDescription": "Ask SIMY to continue unfinished work in the original conversation through the running CLI app's existing Auto Continue controller, or request quality checks and PR reviews. Read the same real work state and next action as the app. Saved delegation is not execution proof. Stops, permission waits and opt-outs are preserved. Retired local delivery agents stay retired.",
20
+ "longDescription": "Ask SIMY to continue unfinished work in the original conversation through the running CLI app's existing Delivery Loop controller (Continue automatically), or request SQM checks and PR reviews. Read the same real work state and next action as the app. Saved delegation is not execution proof. Stops, permission waits and opt-outs are preserved. Retired local delivery agents stay retired.",
21
21
  "developerName": "Specialist Doctors Inc.",
22
22
  "category": "Developer Tools",
23
23
  "capabilities": [
24
- "Auto Continue",
24
+ "Delivery Loop",
25
25
  "Quality",
26
26
  "Review"
27
27
  ],
28
28
  "defaultPrompt": [
29
- "Enable SIMY Auto Continue for this conversation and show its actual progress.",
30
- "Run the SIMY SQM Loop for the current thread.",
29
+ "Continue this conversation automatically with SIMY and show its actual progress.",
30
+ "Run a SIMY SQM check for the current thread.",
31
31
  "Review the current pull request with SIMY."
32
32
  ],
33
33
  "composerIcon": "./assets/logo.png",
@@ -27,7 +27,7 @@ including when SessionStart was missed. No per-project enable command is needed.
27
27
  preserve it. Existing loops, explicit stops, session opt-outs and revoked provider
28
28
  consent remain authoritative. No hook grants provider trust. Stop checks that
29
29
  session's checkpoint and returns bounded next-step instructions. Approval/input
30
- blocks, interruption, completion, failures and missing progress stop automatic continuation.
30
+ blocks, interruption, completion, failures and missing progress stop Delivery Loop.
31
31
  Provider errors/exits are surfaced to SIMY's desktop; a dead provider is not
32
32
  silently restarted. No hook writes trust, permission settings, or SQM evidence.
33
33
 
@@ -35,7 +35,7 @@ Private state is under `SIMY_HOME/delivery-hooks` (default `~/.simy/delivery-hoo
35
35
  keyed by provider and session ID and bound to the canonical working directory.
36
36
  Historical hook observations do not prove hooks are still enabled. See the
37
37
  CLI delivery command documentation for checkpoint commands and explicit recovery.
38
- The local Codex delivery-loop skill is retired; request the CLI Agentic Loop
38
+ The local Codex delivery-loop skill is retired; request the CLI Delivery Loop
39
39
  explicitly for new delivery work. Existing lifecycle hooks do not start it.
40
40
 
41
41
  SIMY does not limit a task's elapsed time, number of turns or provider tokens.
@@ -47,7 +47,7 @@ criteria cannot manufacture progress, and activity alone does not prove it.
47
47
  Required approvals, manual stops and unreconciled effects still block dispatch.
48
48
 
49
49
  Context-first tasks without host-checkable acceptance pause rather than fail at
50
- that limit, so Auto-continue stays available after review. An explicit resume,
50
+ that limit, so Delivery Loop stays available after review. An explicit resume,
51
51
  answer or approval resets both no-progress attempt counters and the progress clock,
52
52
  even before a threshold was reached. Failure counts and verified criterion history
53
53
  remain; reusing old evidence cannot count as fresh progress.
@@ -996,7 +996,7 @@ function hookDeliveryContext(record, automatic = false) {
996
996
  const identity = `SIMY connected to this ${provider} conversation: ${session}.`;
997
997
  if (!run && automatic && !record.automaticStartBlocked && !record.providerArchived && !record.parentSession && !(record.autoContinue === false && record.autoContinueEpoch)) return `${identity} Automatic Delivery Loop start is enabled for this workspace. The next nonempty user prompt starts checkpoint tracking in this conversation; do not issue a duplicate start. Provider permissions and user stops remain authoritative.`;
998
998
  if (!run) return `${identity} Delivery Loop has not started. When the user requests it, use simy delivery start --provider ${provider} --session ${session} with the agreed objective and next step. For future conversations in this workspace, the user can enable automatic start once with simy delivery auto on --provider ${provider}. Never enable, trust, resume, or reset a loop without the user's request.`;
999
- return `${identity} Existing loop: ${run.state}. ${deliveryAcceptanceContext(run)} ` +
999
+ return `${identity} Existing Delivery Loop: ${run.state}. ${deliveryAcceptanceContext(run)} ` +
1000
1000
  (['active', 'reported_done', 'completed'].includes(run.state) ? `${correctiveFollowupInstruction} ` : '') +
1001
1001
  (provider === 'codex' && ['completed', 'reported_done'].includes(run.state) ? `Finished run ID: ${run.id}. Its completion does not supervise later user requests. If the user explicitly requests supervision of the current goal, use simy delivery followup --provider codex --session ${session} --previous-run-id ${run.id} --objective CURRENT_GOAL. A different goal archives the old run; the same ordinary reported_done goal retains identity and budgets for read-only reconciliation. A new prompt alone is not consent to run this command. ` : '') +
1002
1002
  (run.state === 'active' && !run.managed ? `Before ending the turn, submit an honest JSON checkpoint with simy delivery checkpoint --provider ${provider} --session ${session} --file -. Use status in_progress with summary, remainingWork and nextStep for remaining work; completed with summary, acceptanceMet:true and evidence for finished work; or blocked with summary and blocker missing_information or authorization. The first completed checkpoint requests an outcome check in this conversation; inspect the actual result and submit a fresh checkpoint. If requested work remains, perform the first authorized step instead of ending with self-evaluation or a plan. Completion is provider-reported, not independently verified. ${informationWaitInstruction} ` : '') +
@@ -1051,7 +1051,7 @@ export async function startDelivery({ root = rootDirectory(), provider, session,
1051
1051
  if ((following || reconciling) && (provider !== 'codex' || !admitted || !managedState?.autoRecovery || managedState.capability !== 'codex_app_server' || managedState.initialAction.kind !== 'read' || managedState.contextBootstrap)) throw new Error('Follow-up requires exact-session managed supervision, a concrete goal and read-only reconciliation.');
1052
1052
  if (upgrading && (!managedState?.autonomyPolicy || managedState.initialAction.kind !== 'read' || managedState.contextBootstrap)) throw new Error('Upgrade requires read-only reconciliation and frozen acceptance of the original objective.');
1053
1053
  if (!managedState && continuationMode(continuationPolicy) === 'progress') throw new Error('Progress continuation requires frozen managed acceptance criteria.');
1054
- if (followupAutoContinue && !(following || reconciling)) throw new Error('Auto-continue follow-up requires the exact finished run.');
1054
+ if (followupAutoContinue && !(following || reconciling)) throw new Error('Delivery Loop follow-up requires the exact finished run.');
1055
1055
  if (autoContinueEpoch && managedState) managedState.autoContinueEpoch = autoContinueEpoch;
1056
1056
  if (managedState && previous.associationTaskId) {
1057
1057
  managedState.taskId = previous.associationTaskId;
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: continue
3
- description: Start SIMY Auto Continue for the original conversation when the user explicitly asks SIMY or @simy to take over or continue unfinished work. Also read its real execution status or turn automatic continuation off. This is a controller entry, not an independent delivery agent or an SQM check.
3
+ description: Turn on SIMY Delivery Loop (Continue automatically) for the original conversation when the user explicitly asks SIMY or @simy to take over or continue unfinished work. Also read its real execution status or turn Delivery Loop off for this conversation. This is a controller entry, not an independent delivery agent or an SQM check.
4
4
  ---
5
5
 
6
6
  # Continue the original conversation with SIMY
@@ -32,8 +32,8 @@ existing conversation reference before changing anything.
32
32
  Use this command on the original local host. Preserve a remote selection's host
33
33
  and use its existing SIMY remote controls instead of treating it as local.
34
34
 
35
- This command delegates to the running SIMY app's existing Auto Continue control
36
- and background coordinator. It preserves the original goal, task history,
35
+ This command delegates to the running SIMY app's existing Delivery Loop control
36
+ (the Continue automatically switch) and background coordinator. It preserves the original goal, task history,
37
37
  corrections, permissions, failure budgets and approvals. It does not start a
38
38
  second provider process, create a replacement task, change accounts or models,
39
39
  trust hooks, or grant native permissions. The original current turn continues
@@ -51,7 +51,7 @@ result and acceptance. Continue already-authorized work in this conversation.
51
51
  To inspect again, use the same exact target with `auto-continue status` in place
52
52
  of `auto-continue on`. If the response was lost or status reading failed after
53
53
  saving, query status; never automatically repeat a mutation to infer success.
54
- When asked to turn automatic continuation off, use `auto-continue off` for the
54
+ When asked to turn Delivery Loop off, use `auto-continue off` for the
55
55
  same target. OFF preserves the current native turn; an explicit stop uses the
56
56
  existing task Stop control. A stopped, rejected, archived, settled, disconnected
57
57
  or unavailable task stays within its existing boundary: report the returned
@@ -1,6 +1,6 @@
1
1
  interface:
2
- display_name: "SIMY Auto Continue"
3
- short_description: "Continue the original task through SIMY"
4
- default_prompt: "Use $simy:continue to enable SIMY Auto Continue for this conversation and report its actual work state."
2
+ display_name: "SIMY Continue automatically"
3
+ short_description: "Turn on Delivery Loop for this conversation"
4
+ default_prompt: "Use $simy:continue to turn on SIMY Delivery Loop for this conversation and report its actual work state."
5
5
  policy:
6
6
  allow_implicit_invocation: true
@@ -1,9 +1,9 @@
1
1
  ---
2
2
  name: diagnose
3
- description: Diagnose a stopped or unresponsive SIMY task when the user says “SIMY CLIに相談して”, asks why it stopped, or requests manual SIMY diagnosis. Distinguish read-only diagnosis from an explicit request to repair and continue the original work.
3
+ description: Check why it stopped (停止理由の確認) for a stopped or unresponsive SIMY task when the user says “SIMY CLIに相談して” or asks why it stopped. Distinguish a read-only check from an explicit request to repair and continue the original work. Environment diagnosis is `simy doctor`, not this entry.
4
4
  ---
5
5
 
6
- # Consult SIMY CLI
6
+ # Check why it stopped (停止理由の確認)
7
7
 
8
8
  Use this entry for an explicit consultation, diagnosis, or repair-and-continue request, independently of Delivery Loop enrollment or permission to resume. Prefer `$SIMY_HOME/bin/simy` or `$HOME/.simy/bin/simy`. Inspect `--version` and `delivery --help` to confirm `consult` is available. If only `diagnose` exists, use the legacy command below for diagnosis and report repair as unavailable; never reinterpret a failed consult invocation as execution. An older installed CLI is a compatibility gap, never permission to switch its live runtime.
9
9
 
@@ -1,9 +1,9 @@
1
1
  ---
2
2
  name: sqm-loop
3
- description: Run the SIMY Software Quality Monitor against the repository and changes discussed in the current Codex thread. Use when the user asks SIMY to start SQM, quality-check the current work, or prepare a PR quality proof.
3
+ description: Run a SIMY SQM check on the repository and changes discussed in the current Codex thread, on request. Use when the user asks SIMY to start SQM or quality-check the current work now. The opted-in pre-PR gate is the separate simy-sqm-pr-check skill.
4
4
  ---
5
5
 
6
- # SIMY SQM Loop
6
+ # SIMY SQM check
7
7
 
8
8
  Treat the current Codex thread, its attachments, and the active repository as the request context. Convert that context into explicit quality expectations, then verify the actual repository state; do not merely summarize the conversation.
9
9
 
@@ -22,7 +22,7 @@ Investigate and repair authorized reversible setup; preserve real account,
22
22
  organization, device and provider authority. Do not guess credentials or invent a
23
23
  successful scope. A connected scope is not quality acceptance.
24
24
 
25
- ## Run the quality loop
25
+ ## Run the SQM check
26
26
 
27
27
  1. Identify the repository root and the user-visible behavior or incident discussed in the current thread.
28
28
  2. Preserve unrelated user changes and follow repository instructions.
@@ -1,6 +1,6 @@
1
1
  interface:
2
- display_name: "SIMY SQM Loop"
3
- short_description: "Run SQM from the current Codex thread"
2
+ display_name: "SIMY SQM check"
3
+ short_description: "Run an SQM check on the current work"
4
4
  default_prompt: "Use $sqm-loop to quality-check the work in this thread."
5
5
  policy:
6
6
  allow_implicit_invocation: true
@@ -176,7 +176,7 @@ export function AgenticLoopConsole({ agent, onQuit = () => {}, remoteConnections
176
176
  }
177
177
  if (!selectedRun) {
178
178
  if (command.type !== "guidance") {
179
- setNotice("That command requires a selected Agentic Loop run.");
179
+ setNotice("That command requires a selected Delivery Loop run.");
180
180
  return;
181
181
  }
182
182
  setBusy(true);
@@ -213,12 +213,12 @@ export function AgenticLoopConsole({ agent, onQuit = () => {}, remoteConnections
213
213
  setNotice("Guidance queued for the next executor handoff.");
214
214
  } else {
215
215
  await agent.controls.continue(selectedRun, command.message);
216
- setNotice("Human guidance accepted. The agentic loop is continuing.");
216
+ setNotice("Human guidance accepted. The Delivery Loop is continuing.");
217
217
  }
218
218
  break;
219
219
  case "decision":
220
220
  await agent.controls.applyDecision(selectedRun, command);
221
- setNotice("Human decision recorded. The agentic loop is continuing.");
221
+ setNotice("Human decision recorded. The Delivery Loop is continuing.");
222
222
  break;
223
223
  case "recheck":
224
224
  await agent.controls.recheck(selectedRun);
@@ -297,7 +297,7 @@ export function AgenticLoopConsole({ agent, onQuit = () => {}, remoteConnections
297
297
  await agent.controls.selectRepository(selectedRun, match);
298
298
  setDetailOpen(true);
299
299
  setDetailScrollFromEnd(0);
300
- setNotice(`Authorized ${match.repository}. The same Agentic Loop run is continuing.`);
300
+ setNotice(`Authorized ${match.repository}. The same Delivery Loop run is continuing.`);
301
301
  } else if (selectedRun) {
302
302
  setNotice(
303
303
  `${selectedRun.request.repository} was not found under ${result.root}. Run /scan <path> for another authorized root.`,
@@ -328,7 +328,7 @@ export function AgenticLoopConsole({ agent, onQuit = () => {}, remoteConnections
328
328
  setRepositoryPicker(null);
329
329
  setDetailOpen(true);
330
330
  setDetailScrollFromEnd(0);
331
- setNotice(`Authorized ${selected.repository}. The same Agentic Loop run is continuing.`);
331
+ setNotice(`Authorized ${selected.repository}. The same Delivery Loop run is continuing.`);
332
332
  } else {
333
333
  const verified = await agent.controls.selectRepository(null, selected);
334
334
  setDraft((current) => ({
@@ -510,7 +510,7 @@ export function AgenticLoopConsole({ agent, onQuit = () => {}, remoteConnections
510
510
  if (confirmStop) void execute("/stop");
511
511
  else {
512
512
  setConfirmStop(true);
513
- setNotice("Press x again to stop the selected Agentic Loop run.");
513
+ setNotice("Press x again to stop the selected Delivery Loop run.");
514
514
  }
515
515
  return;
516
516
  }
@@ -641,7 +641,7 @@ function NewTask({ draft, loginUrl, width }) {
641
641
  dimColor: true,
642
642
  wrap: "wrap",
643
643
  children:
644
- "Describe the outcome. SIMY will choose a one-time Local Task or an Agentic Loop.",
644
+ "Describe the outcome. SIMY will choose a one-time Local Task or a Delivery Loop.",
645
645
  }),
646
646
  jsx(Text, { children: " " }),
647
647
  jsx(Text, {