opensquid 0.5.399 → 0.5.403

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/cli.js CHANGED
@@ -46,6 +46,7 @@ import { registerPermissions } from './setup/cli/permissions.js';
46
46
  import { registerSchedule } from './setup/cli/schedule.js';
47
47
  import { registerTraceCommand } from './setup/cli/trace.js';
48
48
  import { registerTriggers } from './setup/cli/triggers.js';
49
+ import { registerUpdate } from './setup/cli/update.js';
49
50
  import { registerWebhooks } from './setup/cli/webhooks.js';
50
51
  // CAT.1d — internal worker entrypoint short-circuit. `chat-daemon-worker` is
51
52
  // the argv token `src/channels/daemon/lifecycle.startDaemon` re-invokes this
@@ -71,7 +72,44 @@ function readPackageVersion() {
71
72
  return '0.0.0';
72
73
  }
73
74
  }
75
+ /** UPD.1 (wg-7091e922881b): the once-per-day update notice. Cache-read only
76
+ * on the hot path (ZERO network); fire-and-forget — NEVER awaited; a stale
77
+ * cache spawns a detached `update --check-only` refresher that writes the
78
+ * cache for the NEXT invocation. Marked reviewer subagent trees skip the
79
+ * refresher spawn (cleanliness — they shouldn't fan out children). */
80
+ function maybeNotifyUpdate(current) {
81
+ // Re-entry guard: the detached refresher IS a CLI invocation (`update
82
+ // --check-only`) — without this, it would see the same stale cache and
83
+ // fan out another refresher before its own probe lands. The `update`
84
+ // verb family handles its own probing; the notice adds nothing there.
85
+ if (process.argv[2] === 'update')
86
+ return;
87
+ void (async () => {
88
+ try {
89
+ const { readUpdateCache, writeUpdateCache, noticeLine, isStale } = await import('./runtime/update_check.js');
90
+ const cache = await readUpdateCache();
91
+ const now = Date.now();
92
+ const line = noticeLine(cache, current, now);
93
+ if (line !== null && cache !== null) {
94
+ process.stderr.write(`${line}\n`);
95
+ await writeUpdateCache({ ...cache, notified_at: new Date(now).toISOString() });
96
+ }
97
+ if (isStale(cache, now) && process.env.OPENSQUID_SUBAGENT !== '1') {
98
+ const { spawn } = await import('node:child_process');
99
+ const { fileURLToPath } = await import('node:url');
100
+ spawn(process.execPath, [fileURLToPath(import.meta.url), 'update', '--check-only'], {
101
+ detached: true,
102
+ stdio: 'ignore',
103
+ }).unref();
104
+ }
105
+ }
106
+ catch {
107
+ /* the notice must never break a CLI command */
108
+ }
109
+ })();
110
+ }
74
111
  function runCli() {
112
+ maybeNotifyUpdate(readPackageVersion());
75
113
  const program = new Command()
76
114
  .name('opensquid')
77
115
  .description('Tracks for your AI agent — destination-first.')
@@ -225,6 +263,11 @@ function runCli() {
225
263
  // 1 = any red. NEVER spawns commands that don't match the opensquid regex
226
264
  // (security gate against running arbitrary user-configured commands).
227
265
  registerDoctor(program);
266
+ // UPD.2 — `opensquid update`: install-mode-aware self-update (refuses
267
+ // linked-dev/npx/local-dep with the right manual action; runs the user's
268
+ // own package manager for the global modes). `--check-only` is the UPD.1
269
+ // detached refresher's entrypoint.
270
+ registerUpdate(program);
228
271
  // GF.2 — `opensquid gate commit|push|install`. The owned-boundary EXECUTE gate: the
229
272
  // installed git pre-commit/pre-push hooks `exec opensquid gate <boundary>`, which reads
230
273
  // the real staged/pushed diff + the live session FSM/phase state and blocks a code
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"handoff_session_start.d.ts","sourceRoot":"","sources":["../../src/functions/handoff_session_start.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,QAAA,MAAM,MAAM,iDAAwB,CAAC;AAErC,UAAU,YAAY;IACpB,IAAI,EAAE,gBAAgB,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB;AAUD,eAAO,MAAM,mBAAmB,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,EAAE,YAAY,GAAG,IAAI,CAuDxF,CAAC"}
1
+ {"version":3,"file":"handoff_session_start.d.ts","sourceRoot":"","sources":["../../src/functions/handoff_session_start.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,QAAA,MAAM,MAAM,iDAAwB,CAAC;AAErC,UAAU,YAAY;IACpB,IAAI,EAAE,gBAAgB,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB;AAUD,eAAO,MAAM,mBAAmB,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,EAAE,YAAY,GAAG,IAAI,CAyDxF,CAAC"}
@@ -52,17 +52,6 @@ export const HandoffSessionStart = {
52
52
  const stamp = sessionStateFile(ctx.sessionId, 'handoff-read');
53
53
  if ((await mtimeOf(stamp)) !== null)
54
54
  return ok(null);
55
- // SUB.3 (wg-627effbb2c38): a "dead" sid with a fresh tool-ledger /
56
- // active-task mtime is a LIVE session (nested child, second terminal)
57
- // — dumping it would clobber its in-flight resume surfaces (observed
58
- // live 2026-06-11: the MEMORY.md managed block overwritten twice
59
- // mid-run by exactly this path). Skip WITHOUT writing the
60
- // handoff-read stamp: if the session actually just crashed, the next
61
- // fresh session retries once FRESH_MS lapses — the loss is transient
62
- // by construction, never pinned by a stale stamp.
63
- const liveness = await isSessionPlausible(deadSid);
64
- if (liveness.plausible)
65
- return ok(null);
66
55
  const umbrellaRoot = await umbrellaRootFor(cwd);
67
56
  const fsmPath = sessionStateFile(deadSid, 'fsm-coding-flow');
68
57
  const fsmM = await mtimeOf(fsmPath);
@@ -74,7 +63,21 @@ export const HandoffSessionStart = {
74
63
  // which day it was generated (the date-keyed path missed yesterday's).
75
64
  docPath = handoverDocPath(umbrellaRoot, deadSid);
76
65
  const docM = await mtimeOf(docPath);
77
- if (docM === null || fsmM === null || docM < fsmM) {
66
+ const docCurrent = docM !== null && fsmM !== null && docM >= fsmM;
67
+ if (!docCurrent) {
68
+ // SUB.3 refined by FXK.2 (0.5.403): liveness gates GENERATION
69
+ // ONLY — injecting a CURRENT doc clobbers nothing (the observed
70
+ // MEMORY.md overwrites were regeneration writes), so graceful-
71
+ // death quick restarts inject instantly. A plausibly-LIVE "dead"
72
+ // sid (nested child, second terminal) skips WITHOUT writing the
73
+ // handoff-read stamp, so a later session retries once the window
74
+ // lapses. freshMs = 10min: the longest a LIVE session goes quiet
75
+ // on its probed files is the 340s audit wait (wg-bc291cb0cef4's
76
+ // inner-window sizing) + margin — 5min would re-open the clobber,
77
+ // 30min over-suppressed kill-9 resumes (the shipped SUB.3 flaw).
78
+ const liveness = await isSessionPlausible(deadSid, { freshMs: 10 * 60_000 });
79
+ if (liveness.plausible)
80
+ return ok(null);
78
81
  const result = await runHandoff(deadSid, cwd); // generate from disk
79
82
  docPath = result.docPath;
80
83
  }
@@ -1 +1 @@
1
- {"version":3,"file":"handoff_session_start.js","sourceRoot":"","sources":["../../src/functions/handoff_session_start.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handoff_session_start.js","sourceRoot":"","sources":["../../src/functions/handoff_session_start.ts"],"names":[],"mappings":"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"}
@@ -10,17 +10,22 @@
10
10
  *
11
11
  * running ──close──────────────► closed (resolve/reject by exit code)
12
12
  * running ──spawn 'error'──────► spawn_failed (reject)
13
- * running ──timeout────────────► term_sent (reject NOW; grace timer armed, REF'D)
14
- * term_sent ──close────────────► closed_late (clear grace; child obeyed SIGTERM)
13
+ * running ──timeout────────────► term_sent (reject NOW; grace timer armed, REF'D;
14
+ * sync 'exit' kill handler registered)
15
+ * term_sent ──close────────────► closed_late (clear grace + remove the exit handler;
16
+ * child obeyed SIGTERM)
15
17
  * term_sent ──grace expiry─────► group_killed (kill(-pid) sweep; ESRCH = already gone)
18
+ * term_sent ──supervisor exit──► group_killed (FXK.1, 0.5.402: the sync 'exit' handler
19
+ * — hook bins call process.exit() ms after
20
+ * the rejection, which destroys ANY timer,
21
+ * ref'd or not; reproduced in isolation
22
+ * before this fix. 'exit' listeners run
23
+ * synchronously under explicit exit and
24
+ * process.kill is sync — spiked, not
25
+ * assumed.)
16
26
  *
17
- * `term_sent supervisor SIGKILLed externally` leaks the child by design
18
- * enumerated residual: the REF'D grace timer holds the supervisor alive
19
- * through grace in every non-forced teardown (an unref'd timer dies when a
20
- * hook bin exits right after the rejection — observed live as SIGTERM-
21
- * ignoring `claude -p` orphans piling up on the subscription bucket), and a
22
- * forced external SIGKILL of the supervisor is outside any in-process
23
- * guarantee.
27
+ * Only a forced external SIGKILL of the supervisor leaks the child now
28
+ * outside any in-process guarantee, enumerated residual.
24
29
  *
25
30
  * Two ORTHOGONAL env markers — never merge them:
26
31
  * - OPENSQUID_SUBAGENT (hook policy, SUB.1): set only when
@@ -1 +1 @@
1
- {"version":3,"file":"spawn_lifecycle.d.ts","sourceRoot":"","sources":["../../src/runtime/spawn_lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAIH,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,yDAAyD;IACzD,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,2FAA2F;IAC3F,YAAY,EAAE,OAAO,CAAC;IACtB,gFAAgF;IAChF,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,KAAK,CAAC;IAC3C,gFAAgF;IAChF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAUD,4FAA4F;AAC5F,eAAO,MAAM,oBAAoB,GAAI,MAAK,MAAM,CAAC,UAAwB,KAAG,OAC1C,CAAC;AAEnC,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAwFhE"}
1
+ {"version":3,"file":"spawn_lifecycle.d.ts","sourceRoot":"","sources":["../../src/runtime/spawn_lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAIH,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,yDAAyD;IACzD,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,2FAA2F;IAC3F,YAAY,EAAE,OAAO,CAAC;IACtB,gFAAgF;IAChF,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,KAAK,CAAC;IAC3C,gFAAgF;IAChF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAUD,4FAA4F;AAC5F,eAAO,MAAM,oBAAoB,GAAI,MAAK,MAAM,CAAC,UAAwB,KAAG,OAC1C,CAAC;AAEnC,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAoGhE"}
@@ -10,17 +10,22 @@
10
10
  *
11
11
  * running ──close──────────────► closed (resolve/reject by exit code)
12
12
  * running ──spawn 'error'──────► spawn_failed (reject)
13
- * running ──timeout────────────► term_sent (reject NOW; grace timer armed, REF'D)
14
- * term_sent ──close────────────► closed_late (clear grace; child obeyed SIGTERM)
13
+ * running ──timeout────────────► term_sent (reject NOW; grace timer armed, REF'D;
14
+ * sync 'exit' kill handler registered)
15
+ * term_sent ──close────────────► closed_late (clear grace + remove the exit handler;
16
+ * child obeyed SIGTERM)
15
17
  * term_sent ──grace expiry─────► group_killed (kill(-pid) sweep; ESRCH = already gone)
18
+ * term_sent ──supervisor exit──► group_killed (FXK.1, 0.5.402: the sync 'exit' handler
19
+ * — hook bins call process.exit() ms after
20
+ * the rejection, which destroys ANY timer,
21
+ * ref'd or not; reproduced in isolation
22
+ * before this fix. 'exit' listeners run
23
+ * synchronously under explicit exit and
24
+ * process.kill is sync — spiked, not
25
+ * assumed.)
16
26
  *
17
- * `term_sent supervisor SIGKILLed externally` leaks the child by design
18
- * enumerated residual: the REF'D grace timer holds the supervisor alive
19
- * through grace in every non-forced teardown (an unref'd timer dies when a
20
- * hook bin exits right after the rejection — observed live as SIGTERM-
21
- * ignoring `claude -p` orphans piling up on the subscription bucket), and a
22
- * forced external SIGKILL of the supervisor is outside any in-process
23
- * guarantee.
27
+ * Only a forced external SIGKILL of the supervisor leaks the child now
28
+ * outside any in-process guarantee, enumerated residual.
24
29
  *
25
30
  * Two ORTHOGONAL env markers — never merge them:
26
31
  * - OPENSQUID_SUBAGENT (hook policy, SUB.1): set only when
@@ -79,17 +84,28 @@ export function runOneShotCli(opts) {
79
84
  /* ESRCH — already reaped */
80
85
  }
81
86
  };
87
+ // FXK.1 (0.5.402): the supervisor-exit escalation path. Sync-only body
88
+ // — the process is dying; state check + sync kill, nothing else.
89
+ const exitKill = () => {
90
+ if (state.phase === 'term_sent')
91
+ groupKill();
92
+ };
82
93
  const timer = setTimeout(() => {
83
94
  if (state.phase !== 'running')
84
95
  return;
85
96
  state = { phase: 'term_sent' };
86
97
  proc.kill('SIGTERM');
87
- // REF'D on purpose: an unref'd timer is destroyed when the hook bin
88
- // exits right after this rejectionSIGKILL would never fire exactly
89
- // where SIGTERM-ignoring orphans were observed. The ≤graceMs tail
90
- // sits far inside the 360s outer hook cap; 'closed_late' clears it
91
- // for well-behaved children.
92
- graceTimer = setTimeout(groupKill, opts.graceMs ?? 5_000);
98
+ // BOTH escalation paths are required (FXK.1, spiked): the REF'D timer
99
+ // covers long-lived supervisors (bridge daemonprompt 5s kill); the
100
+ // sync 'exit' handler covers supervisors that exit before grace (hook
101
+ // bins call process.exit() milliseconds after this rejection, which
102
+ // destroys ANY timer, ref'd or not — the 0.5.398 hole). 'closed_late'
103
+ // clears both for well-behaved children.
104
+ process.once('exit', exitKill);
105
+ graceTimer = setTimeout(() => {
106
+ process.removeListener('exit', exitKill);
107
+ groupKill();
108
+ }, opts.graceMs ?? 5_000);
93
109
  reject(opts.timeoutError(opts.timeoutMs));
94
110
  }, opts.timeoutMs);
95
111
  proc.stdout.on('data', (d) => {
@@ -118,6 +134,7 @@ export function runOneShotCli(opts) {
118
134
  state = { phase: 'closed_late' }; // child obeyed SIGTERM inside grace
119
135
  if (graceTimer !== undefined)
120
136
  clearTimeout(graceTimer);
137
+ process.removeListener('exit', exitKill); // hygiene: long-lived callers
121
138
  }
122
139
  // closed / spawn_failed / group_killed: terminal — nothing to do.
123
140
  });
@@ -1 +1 @@
1
- {"version":3,"file":"spawn_lifecycle.js","sourceRoot":"","sources":["../../src/runtime/spawn_lifecycle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spawn_lifecycle.js","sourceRoot":"","sources":["../../src/runtime/spawn_lifecycle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * T-npm-auto-update UPD.1 (wg-7091e922881b) — the check layer for the npm
3
+ * rollout: a cached, fail-quiet version probe surfaced as a once-per-day
4
+ * CLI notice and an `opensquid doctor` section.
5
+ *
6
+ * Design locks (per the track pre-research):
7
+ * - The CLI hot path does ZERO network — it reads the cache file only;
8
+ * a stale cache spawns a DETACHED refresher (`opensquid update
9
+ * --check-only`) that writes the cache for the NEXT invocation.
10
+ * - Hook bins / MCP server / chat-daemon worker NEVER import this module
11
+ * (a hook must never pay a network call; grep-pinned in the suite).
12
+ * - `refreshCache` is the refresher's ONLY write path and is
13
+ * READ-MERGE-WRITE: the cache carries two fields with two writers (the
14
+ * notice closure stamps `notified_at`; the refresher updates
15
+ * `latest`/`checked_at`) — a blind refresher write would drop a
16
+ * concurrent notice stamp and break the 24h throttle.
17
+ * - Probe failures are SILENT (offline / firewalled / custom registry →
18
+ * no notice, no harm). Auto-apply is deliberately NOT here — the
19
+ * update only ever runs as a foreground user-invoked command.
20
+ *
21
+ * Imports from: node:fs/promises, node:path, semver, ./atomic_write.js,
22
+ * ./paths.js.
23
+ * Imported by: src/cli.ts (notice + doctor), src/setup/cli/update.ts
24
+ * (--check-only), src/setup/cli/doctor.ts (update section).
25
+ */
26
+ export interface UpdateCache {
27
+ /** Latest version seen on the registry. */
28
+ latest: string;
29
+ /** ISO timestamp of the successful probe that wrote this. */
30
+ checked_at: string;
31
+ /** ISO timestamp of the last time the NOTICE was printed (24h throttle). */
32
+ notified_at?: string;
33
+ }
34
+ export declare const updateCachePath: () => string;
35
+ export declare const CHANGELOG_URL = "https://github.com/smlee/opensquid/blob/main/CHANGELOG.md";
36
+ export declare function readUpdateCache(): Promise<UpdateCache | null>;
37
+ export declare function writeUpdateCache(cache: UpdateCache): Promise<void>;
38
+ export declare function isStale(cache: UpdateCache | null, nowMs: number): boolean;
39
+ /** The notice line, or null (not newer / bad semver / throttled <24h). */
40
+ export declare function noticeLine(cache: UpdateCache | null, current: string, nowMs: number): string | null;
41
+ /**
42
+ * The refresher's ONLY write path — READ-MERGE-WRITE so a concurrent
43
+ * notice's `notified_at` stamp survives the refresh (the 24h-throttle race
44
+ * the spec-audit caught).
45
+ */
46
+ export declare function refreshCache(latest: string, nowIso: string): Promise<void>;
47
+ /** The running package's version — this file lives at <root>/{dist,src}/runtime/,
48
+ * so package.json is two levels up (same idiom as mcp/server.ts). */
49
+ export declare function readCurrentVersion(): Promise<string>;
50
+ /** Fail-quiet registry probe: the latest published version, or null. */
51
+ export declare function probeLatest(timeoutMs?: number): Promise<string | null>;
52
+ //# sourceMappingURL=update_check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update_check.d.ts","sourceRoot":"","sources":["../../src/runtime/update_check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAUH,MAAM,WAAW,WAAW;IAC1B,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,UAAU,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,eAAe,QAAO,MAAqD,CAAC;AAGzF,eAAO,MAAM,aAAa,8DAA8D,CAAC;AAEzF,wBAAsB,eAAe,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CASnE;AAED,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAMxE;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAIzE;AAED,0EAA0E;AAC1E,wBAAgB,UAAU,CACxB,KAAK,EAAE,WAAW,GAAG,IAAI,EACzB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GACZ,MAAM,GAAG,IAAI,CAUf;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOhF;AAED;sEACsE;AACtE,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,CAQ1D;AAED,wEAAwE;AACxE,wBAAsB,WAAW,CAAC,SAAS,SAAQ,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAa3E"}
@@ -0,0 +1,115 @@
1
+ /**
2
+ * T-npm-auto-update UPD.1 (wg-7091e922881b) — the check layer for the npm
3
+ * rollout: a cached, fail-quiet version probe surfaced as a once-per-day
4
+ * CLI notice and an `opensquid doctor` section.
5
+ *
6
+ * Design locks (per the track pre-research):
7
+ * - The CLI hot path does ZERO network — it reads the cache file only;
8
+ * a stale cache spawns a DETACHED refresher (`opensquid update
9
+ * --check-only`) that writes the cache for the NEXT invocation.
10
+ * - Hook bins / MCP server / chat-daemon worker NEVER import this module
11
+ * (a hook must never pay a network call; grep-pinned in the suite).
12
+ * - `refreshCache` is the refresher's ONLY write path and is
13
+ * READ-MERGE-WRITE: the cache carries two fields with two writers (the
14
+ * notice closure stamps `notified_at`; the refresher updates
15
+ * `latest`/`checked_at`) — a blind refresher write would drop a
16
+ * concurrent notice stamp and break the 24h throttle.
17
+ * - Probe failures are SILENT (offline / firewalled / custom registry →
18
+ * no notice, no harm). Auto-apply is deliberately NOT here — the
19
+ * update only ever runs as a foreground user-invoked command.
20
+ *
21
+ * Imports from: node:fs/promises, node:path, semver, ./atomic_write.js,
22
+ * ./paths.js.
23
+ * Imported by: src/cli.ts (notice + doctor), src/setup/cli/update.ts
24
+ * (--check-only), src/setup/cli/doctor.ts (update section).
25
+ */
26
+ import { readFile } from 'node:fs/promises';
27
+ import { join } from 'node:path';
28
+ import semver from 'semver';
29
+ import { atomicWriteFile } from './atomic_write.js';
30
+ import { OPENSQUID_HOME } from './paths.js';
31
+ export const updateCachePath = () => join(OPENSQUID_HOME(), 'update-check.json');
32
+ const DAY_MS = 24 * 60 * 60 * 1000;
33
+ export const CHANGELOG_URL = 'https://github.com/smlee/opensquid/blob/main/CHANGELOG.md';
34
+ export async function readUpdateCache() {
35
+ try {
36
+ const parsed = JSON.parse(await readFile(updateCachePath(), 'utf8'));
37
+ return typeof parsed.latest === 'string' && typeof parsed.checked_at === 'string'
38
+ ? parsed
39
+ : null;
40
+ }
41
+ catch {
42
+ return null; // ENOENT / corrupt → treated as absent
43
+ }
44
+ }
45
+ export async function writeUpdateCache(cache) {
46
+ try {
47
+ await atomicWriteFile(updateCachePath(), JSON.stringify(cache, null, 2));
48
+ }
49
+ catch {
50
+ /* best-effort — a cache failure must never break a CLI command */
51
+ }
52
+ }
53
+ export function isStale(cache, nowMs) {
54
+ if (cache === null)
55
+ return true;
56
+ const t = Date.parse(cache.checked_at);
57
+ return !Number.isFinite(t) || nowMs - t > DAY_MS;
58
+ }
59
+ /** The notice line, or null (not newer / bad semver / throttled <24h). */
60
+ export function noticeLine(cache, current, nowMs) {
61
+ if (cache === null)
62
+ return null;
63
+ if (semver.valid(cache.latest) === null || semver.valid(current) === null)
64
+ return null;
65
+ if (!semver.gt(cache.latest, current))
66
+ return null;
67
+ const last = cache.notified_at === undefined ? NaN : Date.parse(cache.notified_at);
68
+ if (Number.isFinite(last) && nowMs - last < DAY_MS)
69
+ return null;
70
+ return (`opensquid ${current} → ${cache.latest} available — run \`opensquid update\`. ` +
71
+ `Changelog: ${CHANGELOG_URL}`);
72
+ }
73
+ /**
74
+ * The refresher's ONLY write path — READ-MERGE-WRITE so a concurrent
75
+ * notice's `notified_at` stamp survives the refresh (the 24h-throttle race
76
+ * the spec-audit caught).
77
+ */
78
+ export async function refreshCache(latest, nowIso) {
79
+ const prior = await readUpdateCache();
80
+ await writeUpdateCache({
81
+ latest,
82
+ checked_at: nowIso,
83
+ ...(prior?.notified_at !== undefined ? { notified_at: prior.notified_at } : {}),
84
+ });
85
+ }
86
+ /** The running package's version — this file lives at <root>/{dist,src}/runtime/,
87
+ * so package.json is two levels up (same idiom as mcp/server.ts). */
88
+ export async function readCurrentVersion() {
89
+ try {
90
+ const raw = await readFile(new URL('../../package.json', import.meta.url), 'utf8');
91
+ const parsed = JSON.parse(raw);
92
+ return parsed.version ?? '0.0.0';
93
+ }
94
+ catch {
95
+ return '0.0.0';
96
+ }
97
+ }
98
+ /** Fail-quiet registry probe: the latest published version, or null. */
99
+ export async function probeLatest(timeoutMs = 3_000) {
100
+ try {
101
+ const res = await fetch('https://registry.npmjs.org/opensquid/latest', {
102
+ signal: AbortSignal.timeout(timeoutMs),
103
+ });
104
+ if (!res.ok)
105
+ return null;
106
+ const body = (await res.json());
107
+ return typeof body.version === 'string' && semver.valid(body.version) !== null
108
+ ? body.version
109
+ : null;
110
+ }
111
+ catch {
112
+ return null; // offline / firewalled / slow — no notice, no harm
113
+ }
114
+ }
115
+ //# sourceMappingURL=update_check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update_check.js","sourceRoot":"","sources":["../../src/runtime/update_check.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/setup/cli/doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAOH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgEzC,KAAK,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,SAAS,CAAC;AAE1C,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,wEAAwE;IACxE,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChG;AAED,yEAAyE;AACzE,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CA8BrE;AAED,uDAAuD;AACvD,wBAAsB,cAAc,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CA+CjF;AA+FD;yBACyB;AACzB,wBAAgB,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,CAa3D;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4FrD"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/setup/cli/doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAOH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgEzC,KAAK,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,SAAS,CAAC;AAE1C,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,wEAAwE;IACxE,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChG;AAED,yEAAyE;AACzE,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CA8BrE;AAED,uDAAuD;AACvD,wBAAsB,cAAc,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CA+CjF;AA+FD;yBACyB;AACzB,wBAAgB,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,CAa3D;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2HrD"}
@@ -310,5 +310,34 @@ export function registerDoctor(program) {
310
310
  // `missing` — the gate never runs. Both are RED + exit 1.
311
311
  process.exit(res.some((h) => h.state === 'missing' || h.state === 'unreachable') ? 1 : 0);
312
312
  });
313
+ doc
314
+ .command('update')
315
+ .description('Check the installed opensquid version against the npm registry (UPD.1)')
316
+ .action(async () => {
317
+ // Doctor is the explicitly-interactive surface — the ONE place a
318
+ // blocking live probe (3s cap, fail-quiet) is fine. Also refreshes
319
+ // the notice cache via the merge-preserving write path.
320
+ const { probeLatest, readCurrentVersion, refreshCache } = await import('../../runtime/update_check.js');
321
+ const { gt } = await import('semver');
322
+ // UPD.2 (finding 2): the install-mode line lives here because the
323
+ // classifier is update.ts's.
324
+ const { classifyInstall, gatherInstallFacts } = await import('./update.js');
325
+ const current = await readCurrentVersion();
326
+ const mode = classifyInstall(gatherInstallFacts());
327
+ process.stdout.write(`[INFO]\tupdate: install mode ${mode.kind} (${mode.packageRoot})\n`);
328
+ const latest = await probeLatest();
329
+ if (latest === null) {
330
+ process.stdout.write(`[WARN]\tupdate: registry unreachable (current ${current})\n`);
331
+ process.exit(0);
332
+ }
333
+ await refreshCache(latest, new Date().toISOString());
334
+ if (gt(latest, current)) {
335
+ process.stdout.write(`[WARN]\tupdate: ${current} → ${latest} available — run \`opensquid update\`\n`);
336
+ }
337
+ else {
338
+ process.stdout.write(`[GREEN]\tupdate: ${current} is the latest published version\n`);
339
+ }
340
+ process.exit(0);
341
+ });
313
342
  }
314
343
  //# sourceMappingURL=doctor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/setup/cli/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/setup/cli/doctor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * `opensquid update` — UPD.2 of T-npm-auto-update (wg-7091e922881b).
3
+ *
4
+ * Detects HOW this copy of opensquid is installed and either runs the right
5
+ * package manager or refuses with the correct manual action:
6
+ *
7
+ * linked-dev → refuse, exit 1 (an update would clobber a dev tree)
8
+ * npx → nothing to update, exit 0 (`npx -y opensquid@latest` floats)
9
+ * local-dep → refuse, exit 1 (update the project's dependency instead)
10
+ * npm-global → `npm install -g opensquid@latest` (inherited stdio)
11
+ * pnpm-global → `pnpm add -g opensquid@latest` (inherited stdio)
12
+ *
13
+ * `--check-only` is the UPD.1 detached refresher's entrypoint: probe the
14
+ * registry, print current vs latest, write the cache through `refreshCache`
15
+ * (READ-MERGE-WRITE — the notice's 24h-throttle stamp must survive).
16
+ *
17
+ * Auto-apply deliberately does NOT exist: updating is always a foreground
18
+ * user-invoked command, so live-session hook-binary skew cannot happen (the
19
+ * opt-in auto-apply + SessionStart-latch design is seeded in the work-graph
20
+ * issue for a future track).
21
+ *
22
+ * Imported by: src/cli.ts.
23
+ */
24
+ import type { Command } from 'commander';
25
+ export type InstallMode = {
26
+ kind: 'linked-dev';
27
+ packageRoot: string;
28
+ } | {
29
+ kind: 'npx';
30
+ packageRoot: string;
31
+ } | {
32
+ kind: 'pnpm-global';
33
+ packageRoot: string;
34
+ } | {
35
+ kind: 'npm-global';
36
+ packageRoot: string;
37
+ } | {
38
+ kind: 'local-dep';
39
+ packageRoot: string;
40
+ };
41
+ export interface InstallFacts {
42
+ /** realpath of the running package root. */
43
+ packageRoot: string;
44
+ /** realpath of <npm root -g>/opensquid IF it is a symlink (the npm-link
45
+ * target repo); null when absent or a real dir. The fact must be about
46
+ * THIS copy, not the machine: a prefix-installed copy on a dev machine
47
+ * is NOT linked-dev just because the machine has a linked entry —
48
+ * linked-dev iff the running copy IS the symlink's target (spiked: the
49
+ * temp-prefix run misclassified before this comparison existed). */
50
+ linkedRepoRoot: string | null;
51
+ /** realpath of `npm root -g`; null if npm absent. */
52
+ npmGlobalRoot: string | null;
53
+ }
54
+ /** Pure classifier — all fs facts injected so tests need no real installs.
55
+ * Precedence is LOAD-BEARING: linked-dev FIRST (an update would clobber a
56
+ * dev tree — the dev machine is the live fixture), then the ephemeral /
57
+ * manager signatures, then the global fallthroughs. Paths are normalized
58
+ * to forward slashes before matching (Windows). */
59
+ export declare function classifyInstall(facts: InstallFacts): InstallMode;
60
+ /** Gather the real-world facts for the classifier (the impure shell). */
61
+ export declare function gatherInstallFacts(): InstallFacts;
62
+ export declare function registerUpdate(program: Command): void;
63
+ //# sourceMappingURL=update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/setup/cli/update.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAOH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASzC,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/C,MAAM,WAAW,YAAY;IAC3B,4CAA4C;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;yEAKqE;IACrE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,qDAAqD;IACrD,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED;;;;oDAIoD;AACpD,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,WAAW,CAShE;AAOD,yEAAyE;AACzE,wBAAgB,kBAAkB,IAAI,YAAY,CA8BjD;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4DrD"}
@@ -0,0 +1,133 @@
1
+ /**
2
+ * `opensquid update` — UPD.2 of T-npm-auto-update (wg-7091e922881b).
3
+ *
4
+ * Detects HOW this copy of opensquid is installed and either runs the right
5
+ * package manager or refuses with the correct manual action:
6
+ *
7
+ * linked-dev → refuse, exit 1 (an update would clobber a dev tree)
8
+ * npx → nothing to update, exit 0 (`npx -y opensquid@latest` floats)
9
+ * local-dep → refuse, exit 1 (update the project's dependency instead)
10
+ * npm-global → `npm install -g opensquid@latest` (inherited stdio)
11
+ * pnpm-global → `pnpm add -g opensquid@latest` (inherited stdio)
12
+ *
13
+ * `--check-only` is the UPD.1 detached refresher's entrypoint: probe the
14
+ * registry, print current vs latest, write the cache through `refreshCache`
15
+ * (READ-MERGE-WRITE — the notice's 24h-throttle stamp must survive).
16
+ *
17
+ * Auto-apply deliberately does NOT exist: updating is always a foreground
18
+ * user-invoked command, so live-session hook-binary skew cannot happen (the
19
+ * opt-in auto-apply + SessionStart-latch design is seeded in the work-graph
20
+ * issue for a future track).
21
+ *
22
+ * Imported by: src/cli.ts.
23
+ */
24
+ import { spawnSync } from 'node:child_process';
25
+ import { lstatSync, realpathSync } from 'node:fs';
26
+ import { join } from 'node:path';
27
+ import { fileURLToPath } from 'node:url';
28
+ import { CHANGELOG_URL, probeLatest, readCurrentVersion, refreshCache, } from '../../runtime/update_check.js';
29
+ /** Pure classifier — all fs facts injected so tests need no real installs.
30
+ * Precedence is LOAD-BEARING: linked-dev FIRST (an update would clobber a
31
+ * dev tree — the dev machine is the live fixture), then the ephemeral /
32
+ * manager signatures, then the global fallthroughs. Paths are normalized
33
+ * to forward slashes before matching (Windows). */
34
+ export function classifyInstall(facts) {
35
+ const p = facts.packageRoot.replaceAll('\\', '/');
36
+ if (facts.linkedRepoRoot !== null && p === facts.linkedRepoRoot.replaceAll('\\', '/'))
37
+ return { kind: 'linked-dev', packageRoot: p };
38
+ if (p.includes('/_npx/'))
39
+ return { kind: 'npx', packageRoot: p };
40
+ if (p.includes('/pnpm/global/'))
41
+ return { kind: 'pnpm-global', packageRoot: p };
42
+ if (facts.npmGlobalRoot !== null && p.startsWith(facts.npmGlobalRoot.replaceAll('\\', '/')))
43
+ return { kind: 'npm-global', packageRoot: p };
44
+ return { kind: 'local-dep', packageRoot: p };
45
+ }
46
+ const UPDATE_COMMANDS = {
47
+ 'npm-global': ['npm', ['install', '-g', 'opensquid@latest']],
48
+ 'pnpm-global': ['pnpm', ['add', '-g', 'opensquid@latest']],
49
+ };
50
+ /** Gather the real-world facts for the classifier (the impure shell). */
51
+ export function gatherInstallFacts() {
52
+ // This file lives at <root>/{dist,src}/setup/cli/update.{js,ts} — the
53
+ // package root is three levels up.
54
+ let packageRoot;
55
+ try {
56
+ packageRoot = realpathSync(fileURLToPath(new URL('../../..', import.meta.url)));
57
+ }
58
+ catch {
59
+ packageRoot = fileURLToPath(new URL('../../..', import.meta.url));
60
+ }
61
+ let npmGlobalRoot = null;
62
+ try {
63
+ const out = spawnSync('npm', ['root', '-g'], { encoding: 'utf8', timeout: 10_000 });
64
+ const line = (out.stdout ?? '').trim();
65
+ npmGlobalRoot = out.status === 0 && line.length > 0 ? realpathSync(line) : null;
66
+ }
67
+ catch {
68
+ npmGlobalRoot = null;
69
+ }
70
+ let linkedRepoRoot = null;
71
+ if (npmGlobalRoot !== null) {
72
+ try {
73
+ const entry = join(npmGlobalRoot, 'opensquid');
74
+ if (lstatSync(entry).isSymbolicLink())
75
+ linkedRepoRoot = realpathSync(entry);
76
+ }
77
+ catch {
78
+ linkedRepoRoot = null; // absent → not globally npm-installed
79
+ }
80
+ }
81
+ return { packageRoot, linkedRepoRoot, npmGlobalRoot };
82
+ }
83
+ export function registerUpdate(program) {
84
+ program
85
+ .command('update')
86
+ .description('Update opensquid to the latest published version (detects the install mode)')
87
+ .option('--check-only', 'probe the registry + refresh the notice cache; no install')
88
+ .action(async (opts) => {
89
+ const current = await readCurrentVersion();
90
+ if (opts.checkOnly === true) {
91
+ const latest = await probeLatest();
92
+ if (latest === null) {
93
+ process.stderr.write(`opensquid ${current} — registry unreachable, no check\n`);
94
+ return;
95
+ }
96
+ await refreshCache(latest, new Date().toISOString());
97
+ process.stderr.write(`opensquid ${current} — latest published: ${latest}\n`);
98
+ return;
99
+ }
100
+ const mode = classifyInstall(gatherInstallFacts());
101
+ if (mode.kind === 'linked-dev') {
102
+ process.stderr.write(`opensquid update: linked dev install detected (${mode.packageRoot} is npm-linked) — ` +
103
+ `update via git pull + pnpm build in the repo, never via the registry.\n`);
104
+ process.exitCode = 1;
105
+ return;
106
+ }
107
+ if (mode.kind === 'npx') {
108
+ process.stderr.write('opensquid update: running via npx — `npx -y opensquid@latest` always floats; nothing to update.\n');
109
+ return;
110
+ }
111
+ if (mode.kind === 'local-dep') {
112
+ process.stderr.write(`opensquid update: installed as a project dependency (${mode.packageRoot}) — ` +
113
+ 'update it in that project (e.g. `pnpm up opensquid` / `npm update opensquid`).\n');
114
+ process.exitCode = 1;
115
+ return;
116
+ }
117
+ // Probe BEFORE the spawn so old→new is printed for real (we are online
118
+ // by definition — the PM is about to hit the registry; probe failure
119
+ // degrades the line to the old version only, never blocks).
120
+ const latest = await probeLatest();
121
+ const [pm, args] = UPDATE_COMMANDS[mode.kind];
122
+ const r = spawnSync(pm, args, { stdio: 'inherit' });
123
+ process.exitCode = r.status ?? 1;
124
+ if (r.status === 0) {
125
+ const delta = latest !== null ? `${current} → ${latest}` : `was ${current}`;
126
+ process.stderr.write(`opensquid updated (${delta}). If hook surfaces changed, run \`opensquid doctor hooks\`. ` +
127
+ `Changelog: ${CHANGELOG_URL}\n`);
128
+ }
129
+ // Deliberately NOTHING after the spawn that imports more code — the PM
130
+ // may have just replaced this process's own dist on disk.
131
+ });
132
+ }
133
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/setup/cli/update.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAIzC,OAAO,EACL,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,YAAY,GACb,MAAM,+BAA+B,CAAC;AAuBvC;;;;oDAIoD;AACpD,MAAM,UAAU,eAAe,CAAC,KAAmB;IACjD,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAClD,IAAI,KAAK,CAAC,cAAc,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC;QACnF,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;IAChD,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;IACjE,IAAI,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;IAChF,IAAI,KAAK,CAAC,aAAa,KAAK,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACzF,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;IAChD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;AAC/C,CAAC;AAED,MAAM,eAAe,GAA6D;IAChF,YAAY,EAAE,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,kBAAkB,CAAC,CAAC;IAC5D,aAAa,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,kBAAkB,CAAC,CAAC;CAC3D,CAAC;AAEF,yEAAyE;AACzE,MAAM,UAAU,kBAAkB;IAChC,sEAAsE;IACtE,mCAAmC;IACnC,IAAI,WAAmB,CAAC;IACxB,IAAI,CAAC;QACH,WAAW,GAAG,YAAY,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAClF,CAAC;IAAC,MAAM,CAAC;QACP,WAAW,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,aAAa,GAAkB,IAAI,CAAC;IACxC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QACpF,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACvC,aAAa,GAAG,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAClF,CAAC;IAAC,MAAM,CAAC;QACP,aAAa,GAAG,IAAI,CAAC;IACvB,CAAC;IAED,IAAI,cAAc,GAAkB,IAAI,CAAC;IACzC,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;YAC/C,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,cAAc,EAAE;gBAAE,cAAc,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QAC9E,CAAC;QAAC,MAAM,CAAC;YACP,cAAc,GAAG,IAAI,CAAC,CAAC,sCAAsC;QAC/D,CAAC;IACH,CAAC;IAED,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAAgB;IAC7C,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,6EAA6E,CAAC;SAC1F,MAAM,CAAC,cAAc,EAAE,2DAA2D,CAAC;SACnF,MAAM,CAAC,KAAK,EAAE,IAA6B,EAAE,EAAE;QAC9C,MAAM,OAAO,GAAG,MAAM,kBAAkB,EAAE,CAAC;QAE3C,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,MAAM,WAAW,EAAE,CAAC;YACnC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,OAAO,qCAAqC,CAAC,CAAC;gBAChF,OAAO;YACT,CAAC;YACD,MAAM,YAAY,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;YACrD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,OAAO,wBAAwB,MAAM,IAAI,CAAC,CAAC;YAC7E,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,eAAe,CAAC,kBAAkB,EAAE,CAAC,CAAC;QACnD,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,kDAAkD,IAAI,CAAC,WAAW,oBAAoB;gBACpF,yEAAyE,CAC5E,CAAC;YACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,mGAAmG,CACpG,CAAC;YACF,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,wDAAwD,IAAI,CAAC,WAAW,MAAM;gBAC5E,kFAAkF,CACrF,CAAC;YACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,uEAAuE;QACvE,qEAAqE;QACrE,4DAA4D;QAC5D,MAAM,MAAM,GAAG,MAAM,WAAW,EAAE,CAAC;QACnC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,CAAC,GAAG,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QACpD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnB,MAAM,KAAK,GAAG,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,MAAM,MAAM,EAAE,CAAC,CAAC,CAAC,OAAO,OAAO,EAAE,CAAC;YAC5E,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,sBAAsB,KAAK,+DAA+D;gBACxF,cAAc,aAAa,IAAI,CAClC,CAAC;QACJ,CAAC;QACD,uEAAuE;QACvE,0DAA0D;IAC5D,CAAC,CAAC,CAAC;AACP,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opensquid",
3
- "version": "0.5.399",
3
+ "version": "0.5.403",
4
4
  "description": "Continuity layer for coding agents: durable memory, dependency-aware task state, workflow gates, and inspectable packs over MCP.",
5
5
  "type": "module",
6
6
  "exports": {