@sensigo/realm-cli 0.12.1 → 0.13.0

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 (54) hide show
  1. package/dist/agent/run-attach.d.ts +24 -0
  2. package/dist/agent/run-attach.d.ts.map +1 -0
  3. package/dist/agent/run-attach.js +77 -0
  4. package/dist/agent/run-attach.js.map +1 -0
  5. package/dist/commands/agent.d.ts +13 -0
  6. package/dist/commands/agent.d.ts.map +1 -1
  7. package/dist/commands/agent.js +38 -8
  8. package/dist/commands/agent.js.map +1 -1
  9. package/dist/commands/init.d.ts +2 -1
  10. package/dist/commands/init.d.ts.map +1 -1
  11. package/dist/commands/init.js +42 -1
  12. package/dist/commands/init.js.map +1 -1
  13. package/dist/commands/inspect.d.ts +1 -0
  14. package/dist/commands/inspect.d.ts.map +1 -1
  15. package/dist/commands/inspect.js +93 -1
  16. package/dist/commands/inspect.js.map +1 -1
  17. package/dist/commands/listen.d.ts +11 -0
  18. package/dist/commands/listen.d.ts.map +1 -1
  19. package/dist/commands/listen.js +36 -1
  20. package/dist/commands/listen.js.map +1 -1
  21. package/dist/commands/mcp.d.ts +2 -1
  22. package/dist/commands/mcp.d.ts.map +1 -1
  23. package/dist/commands/mcp.js +12 -5
  24. package/dist/commands/mcp.js.map +1 -1
  25. package/dist/commands/register.d.ts +6 -0
  26. package/dist/commands/register.d.ts.map +1 -1
  27. package/dist/commands/register.js +20 -1
  28. package/dist/commands/register.js.map +1 -1
  29. package/dist/commands/run.d.ts.map +1 -1
  30. package/dist/commands/run.js +12 -0
  31. package/dist/commands/run.js.map +1 -1
  32. package/dist/commands/serve.d.ts +6 -0
  33. package/dist/commands/serve.d.ts.map +1 -1
  34. package/dist/commands/serve.js +17 -4
  35. package/dist/commands/serve.js.map +1 -1
  36. package/dist/commands/test.d.ts.map +1 -1
  37. package/dist/commands/test.js +25 -1
  38. package/dist/commands/test.js.map +1 -1
  39. package/dist/commands/validate.d.ts.map +1 -1
  40. package/dist/commands/validate.js +53 -8
  41. package/dist/commands/validate.js.map +1 -1
  42. package/dist/commands/watch.d.ts.map +1 -1
  43. package/dist/commands/watch.js +6 -1
  44. package/dist/commands/watch.js.map +1 -1
  45. package/dist/extensions/extension-identity.d.ts +63 -0
  46. package/dist/extensions/extension-identity.d.ts.map +1 -0
  47. package/dist/extensions/extension-identity.js +218 -0
  48. package/dist/extensions/extension-identity.js.map +1 -0
  49. package/dist/extensions/load-project-extensions.d.ts +36 -0
  50. package/dist/extensions/load-project-extensions.d.ts.map +1 -0
  51. package/dist/extensions/load-project-extensions.js +358 -0
  52. package/dist/extensions/load-project-extensions.js.map +1 -0
  53. package/dist/index.js +1 -1
  54. package/package.json +4 -4
@@ -0,0 +1,24 @@
1
+ import type { RunStore, WorkflowRegistrar, WorkflowDefinition, ExtensionRegistry, ExtensionManifest } from '@sensigo/realm';
2
+ import { loadProjectExtensions } from '../extensions/load-project-extensions.js';
3
+ /** Terminal reason written when extension loading fails before a run has started executing. */
4
+ export declare const EXTENSIONS_LOAD_FAILED = "extensions_load_failed";
5
+ export interface ResolveRunAttachDeps {
6
+ store: RunStore;
7
+ workflowStore: Pick<WorkflowRegistrar, 'get'>;
8
+ /** DI seam for tests — defaults to the real loader. */
9
+ loadExtensions?: typeof loadProjectExtensions;
10
+ }
11
+ export interface ResolveRunAttachResult {
12
+ definition: WorkflowDefinition;
13
+ registry: ExtensionRegistry;
14
+ manifest: ExtensionManifest;
15
+ }
16
+ /**
17
+ * Resolves everything `realm agent --run-id` needs before the run is claimed:
18
+ * the stored definition and the extension registry/manifest, with the v4 failure and
19
+ * re-attach semantics described above.
20
+ */
21
+ export declare function resolveRunAttach(runId: string, deps: ResolveRunAttachDeps, opts?: {
22
+ overrideModule?: string;
23
+ }): Promise<ResolveRunAttachResult>;
24
+ //# sourceMappingURL=run-attach.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-attach.d.ts","sourceRoot":"","sources":["../../src/agent/run-attach.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACV,QAAQ,EACR,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AAGjF,+FAA+F;AAC/F,eAAO,MAAM,sBAAsB,2BAA2B,CAAC;AAE/D,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,QAAQ,CAAC;IAChB,aAAa,EAAE,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;IAC9C,uDAAuD;IACvD,cAAc,CAAC,EAAE,OAAO,qBAAqB,CAAC;CAC/C;AAED,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,kBAAkB,CAAC;IAC/B,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,QAAQ,EAAE,iBAAiB,CAAC;CAC7B;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,oBAAoB,EAC1B,IAAI,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,GACjC,OAAO,CAAC,sBAAsB,CAAC,CAsFjC"}
@@ -0,0 +1,77 @@
1
+ import { loadProjectExtensions } from '../extensions/load-project-extensions.js';
2
+ import { identityDiffers, errorExtensionIdentityEntry } from '../extensions/extension-identity.js';
3
+ /** Terminal reason written when extension loading fails before a run has started executing. */
4
+ export const EXTENSIONS_LOAD_FAILED = 'extensions_load_failed';
5
+ /**
6
+ * Resolves everything `realm agent --run-id` needs before the run is claimed:
7
+ * the stored definition and the extension registry/manifest, with the v4 failure and
8
+ * re-attach semantics described above.
9
+ */
10
+ export async function resolveRunAttach(runId, deps, opts) {
11
+ let run = await deps.store.get(runId);
12
+ if (run.terminal_state) {
13
+ if (run.terminal_reason === EXTENSIONS_LOAD_FAILED) {
14
+ // Pure retry: nothing executed pre-failure. Clear exactly this marker and proceed.
15
+ const { terminal_reason: _cleared, ...rest } = run;
16
+ await deps.store.update({ ...rest, terminal_state: false });
17
+ run = await deps.store.get(runId);
18
+ }
19
+ else {
20
+ // Same refusal (and message) the agent loop raises today — thrown BEFORE any
21
+ // extension code loads.
22
+ throw new Error(`Run ${runId} is already in terminal state: ${run.terminal_reason ?? run.run_phase}`);
23
+ }
24
+ }
25
+ const definition = await deps.workflowStore.get(run.workflow_id);
26
+ const loadExtensions = deps.loadExtensions ?? loadProjectExtensions;
27
+ try {
28
+ const { registry, manifest } = await loadExtensions(definition, opts?.overrideModule !== undefined ? { overrideModule: opts.overrideModule } : {});
29
+ // Drift evidence (issue #119): WARN immediately when the freshly loaded identity
30
+ // differs from the run's LAST recorded identity. Advisory only — never a gate, and
31
+ // NO pre-claim write on the success path (a pre-claim CAS bump would kill a live
32
+ // driver's in-flight step update). The append lands via the core lazy
33
+ // append-on-change site after this attacher claims a step.
34
+ const freshIdentity = registry.identity;
35
+ const history = run.extension_identity ?? [];
36
+ const lastIdentity = history[history.length - 1];
37
+ if (freshIdentity !== undefined &&
38
+ lastIdentity !== undefined &&
39
+ identityDiffers(lastIdentity, freshIdentity)) {
40
+ console.error(`[realm] WARN: extension code identity differs from this run's last recorded identity — ` +
41
+ `recorded tree_hash ${lastIdentity.tree.tree_hash || '(none)'} (captured ${lastIdentity.captured_at}), ` +
42
+ `current tree_hash ${freshIdentity.tree.tree_hash || '(none)'} (captured ${freshIdentity.captured_at}). ` +
43
+ `Advisory only — the run proceeds; the new identity is appended to the run's history at the next step.`);
44
+ }
45
+ return { definition, registry, manifest };
46
+ }
47
+ catch (err) {
48
+ // Not-yet-started guard: mark only pre-execution runs; never mutate an in-flight or
49
+ // already-terminal run. Double failure (store write also fails) → stderr, error still
50
+ // propagates (exit nonzero) — same handling class as listen's spawn_failed.
51
+ // The failed load is itself drift evidence: the extensions_load_failed write carries
52
+ // an identity entry with `error` set, so the repair loop gets its before/after pair.
53
+ // When the run has begun executing nothing is mutated — no error entry either (the
54
+ // pair lands via the post-claim append on a successful re-attach); this asymmetry is
55
+ // deliberate.
56
+ try {
57
+ const fresh = await deps.store.get(runId);
58
+ if (!fresh.terminal_state &&
59
+ fresh.evidence.length === 0 &&
60
+ fresh.pending_gate === undefined) {
61
+ fresh.terminal_state = true;
62
+ fresh.terminal_reason = EXTENSIONS_LOAD_FAILED;
63
+ fresh.run_phase = 'failed';
64
+ fresh.extension_identity = [
65
+ ...(fresh.extension_identity ?? []),
66
+ errorExtensionIdentityEntry(`extension load failed: ${err instanceof Error ? err.message : String(err)}`, opts?.overrideModule !== undefined ? { overrideActive: true } : {}),
67
+ ];
68
+ await deps.store.update(fresh);
69
+ }
70
+ }
71
+ catch (writeErr) {
72
+ console.error(`Failed to mark run '${runId}' as ${EXTENSIONS_LOAD_FAILED}: ${writeErr instanceof Error ? writeErr.message : String(writeErr)}`);
73
+ }
74
+ throw err;
75
+ }
76
+ }
77
+ //# sourceMappingURL=run-attach.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-attach.js","sourceRoot":"","sources":["../../src/agent/run-attach.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,16 @@
1
1
  import { Command } from 'commander';
2
+ import type { ExtensionRegistry, ExtensionManifest } from '@sensigo/realm';
3
+ /**
4
+ * Composes the registry an agent run executes with: CLONES the loader-returned registry
5
+ * (loader results are shared process-lifetime cache entries and must never be mutated),
6
+ * then applies the legacy env-gated built-ins tier — the legacy tier of the precedence
7
+ * chain (defaults < legacy env-gated < declared extensions < --extensions-module) — on
8
+ * the clone, skipping names claimed by an extensions module.
9
+ * Exported for the cache-decontamination regression test.
10
+ */
11
+ export declare function composeAgentRegistry(loaded: {
12
+ registry: ExtensionRegistry;
13
+ manifest: ExtensionManifest;
14
+ }): ExtensionRegistry;
2
15
  export declare const agentCommand: Command;
3
16
  //# sourceMappingURL=agent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsBpC,eAAO,MAAM,YAAY,SA0OtB,CAAC"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAc3E;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAC3C,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,QAAQ,EAAE,iBAAiB,CAAC;CAC7B,GAAG,iBAAiB,CA6BpB;AAED,eAAO,MAAM,YAAY,SA8OtB,CAAC"}
@@ -3,11 +3,39 @@
3
3
  import { Command } from 'commander';
4
4
  import { join, resolve } from 'node:path';
5
5
  import { pathToFileURL } from 'node:url';
6
- import { loadWorkflowFromFile, JsonFileStore, JsonWorkflowStore, createDefaultRegistry, GitHubAdapter, SlackAdapter, } from '@sensigo/realm';
6
+ import { loadWorkflowFromFile, JsonFileStore, JsonWorkflowStore, GitHubAdapter, SlackAdapter, } from '@sensigo/realm';
7
7
  import { LlmProvider, resolveProvider } from '../agent/providers/llm-provider.js';
8
8
  import { runAgent } from '../agent/run-agent.js';
9
+ import { resolveRunAttach } from '../agent/run-attach.js';
10
+ import { loadProjectExtensions } from '../extensions/load-project-extensions.js';
9
11
  import { createSlackGateHandler } from '../agent/gate/slack-gate-notifier.js';
10
12
  import { checkAdapterPrerequisites, formatPreflightError, checkSlackBidirectionalConfig, } from '../agent/preflight.js';
13
+ /**
14
+ * Composes the registry an agent run executes with: CLONES the loader-returned registry
15
+ * (loader results are shared process-lifetime cache entries and must never be mutated),
16
+ * then applies the legacy env-gated built-ins tier — the legacy tier of the precedence
17
+ * chain (defaults < legacy env-gated < declared extensions < --extensions-module) — on
18
+ * the clone, skipping names claimed by an extensions module.
19
+ * Exported for the cache-decontamination regression test.
20
+ */
21
+ export function composeAgentRegistry(loaded) {
22
+ const registry = loaded.registry.clone();
23
+ const legacyFired = [];
24
+ if (process.env['GITHUB_TOKEN'] !== undefined && !loaded.manifest.adapters.includes('github')) {
25
+ legacyFired.push('github (GITHUB_TOKEN)');
26
+ registry.register('adapter', 'github', new GitHubAdapter('github', { auth: { token: process.env['GITHUB_TOKEN'] } }));
27
+ }
28
+ if (process.env['SLACK_WEBHOOK_URL'] !== undefined &&
29
+ !loaded.manifest.adapters.includes('slack')) {
30
+ legacyFired.push('slack (SLACK_WEBHOOK_URL)');
31
+ registry.register('adapter', 'slack', new SlackAdapter('slack', { webhook_url: process.env['SLACK_WEBHOOK_URL'] }));
32
+ }
33
+ if (legacyFired.length > 0)
34
+ console.warn(`Deprecated: env-gated adapter registration (${legacyFired.join(', ')}) will be removed in ` +
35
+ `v0.14.0 — declare these adapters in a project extensions module instead ` +
36
+ `(docs/reference/project-extensions.md).`);
37
+ return registry;
38
+ }
11
39
  export const agentCommand = new Command('agent')
12
40
  .description('Run a workflow autonomously using an LLM provider')
13
41
  .option('--workflow <path>', 'Path to workflow directory or workflow.yaml file')
@@ -18,6 +46,7 @@ export const agentCommand = new Command('agent')
18
46
  .option('--base-url <url>', 'Base URL for OpenAI-compatible endpoints (e.g. DeepSeek, Qwen, Groq)')
19
47
  .option('--provider-module <path>', 'Path to a custom LlmProvider module (default export must be an instance extending LlmProvider)')
20
48
  .option('--register', 'Persist the workflow definition to ~/.realm/workflows/ (same as realm workflow register)')
49
+ .option('--extensions-module <path>', "Extensions module that REPLACES the workflow's declared 'extensions' modules (repair/override)")
21
50
  .action(async (opts) => {
22
51
  if (!opts.workflow && !opts.runId) {
23
52
  console.error('Error: one of --workflow or --run-id is required');
@@ -62,16 +91,14 @@ export const agentCommand = new Command('agent')
62
91
  else {
63
92
  provider = await resolveProvider(opts.provider, opts.model, opts.baseUrl);
64
93
  }
65
- const registry = createDefaultRegistry();
66
- if (process.env['GITHUB_TOKEN'] !== undefined)
67
- registry.register('adapter', 'github', new GitHubAdapter('github', { auth: { token: process.env['GITHUB_TOKEN'] } }));
68
- if (process.env['SLACK_WEBHOOK_URL'] !== undefined)
69
- registry.register('adapter', 'slack', new SlackAdapter('slack', { webhook_url: process.env['SLACK_WEBHOOK_URL'] }));
94
+ const extensionOpts = opts.extensionsModule !== undefined ? { overrideModule: opts.extensionsModule } : {};
70
95
  let result;
71
96
  if (opts.runId !== undefined) {
72
97
  // --run-id path: attach to existing run, load definition from store.
73
- const runRecord = await store.get(opts.runId);
74
- const definition = await workflowStore.get(runRecord.workflow_id);
98
+ // resolveRunAttach loads project extensions BEFORE the run is claimed and carries
99
+ // the extensions_load_failed write / re-attach semantics.
100
+ const { definition, ...loaded } = await resolveRunAttach(opts.runId, { store, workflowStore }, extensionOpts);
101
+ const registry = composeAgentRegistry(loaded);
75
102
  const hasSlack = process.env['SLACK_BOT_TOKEN'] !== undefined ||
76
103
  process.env['SLACK_WEBHOOK_URL'] !== undefined;
77
104
  const slackConfig = {
@@ -118,6 +145,9 @@ export const agentCommand = new Command('agent')
118
145
  ? inputPath
119
146
  : join(inputPath, 'workflow.yaml');
120
147
  const definition = loadWorkflowFromFile(filePath);
148
+ // Load project extensions BEFORE the run is created (fail-before-create).
149
+ const loaded = await loadProjectExtensions(definition, extensionOpts);
150
+ const registry = composeAgentRegistry(loaded);
121
151
  // Fail fast if required adapter env vars are missing.
122
152
  const preflightFindings = checkAdapterPrerequisites(definition);
123
153
  if (preflightFindings.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { Command } from 'commander';
2
2
  /**
3
- * Scaffolds a new workflow project at targetDir with four template files.
3
+ * Scaffolds a new workflow project at targetDir with five template files
4
+ * (workflow.yaml, schema.json, .env.example, README.md, registry.sample.js).
4
5
  * Throws an error if targetDir already exists.
5
6
  * @param name Workflow project name used in file contents.
6
7
  * @param targetDir Directory to create (defaults to join(cwd, name) in the command action).
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyEjF;AAED,eAAO,MAAM,WAAW,SAmBpB,CAAC"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiHjF;AAED,eAAO,MAAM,WAAW,SAoBpB,CAAC"}
@@ -4,7 +4,8 @@ import { join } from 'node:path';
4
4
  import { existsSync } from 'node:fs';
5
5
  import { Command } from 'commander';
6
6
  /**
7
- * Scaffolds a new workflow project at targetDir with four template files.
7
+ * Scaffolds a new workflow project at targetDir with five template files
8
+ * (workflow.yaml, schema.json, .env.example, README.md, registry.sample.js).
8
9
  * Throws an error if targetDir already exists.
9
10
  * @param name Workflow project name used in file contents.
10
11
  * @param targetDir Directory to create (defaults to join(cwd, name) in the command action).
@@ -20,6 +21,8 @@ name: "${name}"
20
21
  version: 1
21
22
  initial_state: created
22
23
 
24
+ # extensions: ./registry.js — project extension modules (see docs/reference/project-extensions.md)
25
+
23
26
  steps:
24
27
  step_one:
25
28
  description: "First step \u2014 replace with your own"
@@ -67,11 +70,48 @@ Add fixtures to \`fixtures/\` and run:
67
70
  \`\`\`bash
68
71
  realm workflow test ./ --fixtures ./fixtures/
69
72
  \`\`\`
73
+ `;
74
+ // Project extensions sample: the documented declarative contract shape, fully commented
75
+ // out — nothing is registered by default. Activate by uncommenting and declaring
76
+ // `extensions: ./registry.js` in workflow.yaml (then re-register the workflow).
77
+ const registrySampleJs = `// registry.sample.js — project extension module template for ${name}.
78
+ // Docs: docs/reference/project-extensions.md (module contract, trust model, precedence).
79
+ //
80
+ // To use: rename to registry.js, fill in your extensions, then declare it in workflow.yaml:
81
+ // extensions: ./registry.js
82
+ // and re-register the workflow (realm workflow register ./).
83
+ //
84
+ // The default export is a declarative object — instances keyed by REGISTRATION NAME
85
+ // (the map key is the name your workflow YAML references).
86
+
87
+ export default {
88
+ // adapters: {
89
+ // my_service: {
90
+ // id: 'my_service',
91
+ // fetch: async (operation, params, config) => ({ status: 200, data: {} }),
92
+ // create: async (operation, params, config) => ({ status: 201, data: {} }),
93
+ // update: async (operation, params, config) => ({ status: 200, data: {} }),
94
+ // },
95
+ // },
96
+ // handlers: {
97
+ // my_handler: {
98
+ // id: 'my_handler',
99
+ // execute: async (inputs, context) => ({ data: { ok: true } }),
100
+ // },
101
+ // },
102
+ // processors: {
103
+ // my_processor: {
104
+ // id: 'my_processor',
105
+ // process: async (content, config) => content,
106
+ // },
107
+ // },
108
+ };
70
109
  `;
71
110
  await writeFile(join(targetDir, 'workflow.yaml'), workflowYaml, 'utf8');
72
111
  await writeFile(join(targetDir, 'schema.json'), schemaJson + '\n', 'utf8');
73
112
  await writeFile(join(targetDir, '.env.example'), envExample, 'utf8');
74
113
  await writeFile(join(targetDir, 'README.md'), readmeMd, 'utf8');
114
+ await writeFile(join(targetDir, 'registry.sample.js'), registrySampleJs, 'utf8');
75
115
  }
76
116
  export const initCommand = new Command('init')
77
117
  .argument('<name>', 'Workflow project name (becomes the directory name)')
@@ -86,6 +126,7 @@ export const initCommand = new Command('init')
86
126
  console.log(' schema.json');
87
127
  console.log(' .env.example');
88
128
  console.log(' README.md');
129
+ console.log(' registry.sample.js');
89
130
  console.log('');
90
131
  console.log(`Next: realm workflow validate ./${name}/`);
91
132
  }
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ import type { RunStore, WorkflowRegistrar } from '@sensigo/realm';
9
9
  */
10
10
  export declare function inspectRun(runId: string, store: RunStore, workflowStore: WorkflowRegistrar, options?: {
11
11
  verbose?: boolean;
12
+ checkDrift?: boolean;
12
13
  }): Promise<string>;
13
14
  export declare const inspectCommand: Command;
14
15
  //# sourceMappingURL=inspect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../src/commands/inspect.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EACV,QAAQ,EAER,iBAAiB,EAGlB,MAAM,gBAAgB,CAAC;AA8BxB;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC9B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,QAAQ,EACf,aAAa,EAAE,iBAAiB,EAChC,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAC9B,OAAO,CAAC,MAAM,CAAC,CAiMjB;AAED,eAAO,MAAM,cAAc,SAoBvB,CAAC"}
1
+ {"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../src/commands/inspect.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EACV,QAAQ,EAER,iBAAiB,EAIlB,MAAM,gBAAgB,CAAC;AAqIxB;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC9B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,QAAQ,EACf,aAAa,EAAE,iBAAiB,EAChC,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GACpD,OAAO,CAAC,MAAM,CAAC,CA6MjB;AAED,eAAO,MAAM,cAAc,SAsBvB,CAAC"}
@@ -1,6 +1,84 @@
1
1
  // inspect command — displays the full evidence chain and diagnostics for a run.
2
+ //
3
+ // Read-only invariant: this command must never gain the capability to execute project
4
+ // code. The drift-evidence rendering and --check-drift recomputation below therefore use
5
+ // ONLY the pure fingerprint module (extension-identity.ts — fs reads + sha256, no dynamic
6
+ // import, no createRequire), never the extensions loader.
2
7
  import chalk from 'chalk';
3
8
  import { Command } from 'commander';
9
+ import { recomputeIdentity } from '../extensions/extension-identity.js';
10
+ /**
11
+ * Renders the run's extension-code identity history (drift evidence, issue #119) plus,
12
+ * with `checkDrift`, a pure-fs recomputation of the LAST entry against current disk state
13
+ * under the entry's RECORDED rules — no code loading, ever.
14
+ */
15
+ function renderExtensionIdentity(history, checkDrift, trustRoot) {
16
+ const lines = [];
17
+ lines.push('');
18
+ lines.push(`Extension Identity (${history.length} ${history.length === 1 ? 'entry' : 'entries'}):`);
19
+ history.forEach((entry, idx) => {
20
+ const flags = [
21
+ entry.override_active === true ? chalk.yellow('[override]') : '',
22
+ entry.error !== undefined ? chalk.red('[error]') : '',
23
+ ]
24
+ .filter((f) => f !== '')
25
+ .join(' ');
26
+ lines.push(` ${idx + 1}. captured ${entry.captured_at}${entry.pid !== undefined ? ` (pid ${entry.pid})` : ''}${flags ? ` ${flags}` : ''}`);
27
+ if (entry.error !== undefined) {
28
+ lines.push(chalk.red(` error: ${entry.error}`));
29
+ }
30
+ for (const mod of entry.modules) {
31
+ lines.push(` module: ${mod.declared} -> ${mod.resolved} (${mod.format})`);
32
+ lines.push(` entry_hash ${mod.entry_hash}`);
33
+ }
34
+ lines.push(` tree: ${entry.tree.file_count} files, ${entry.tree.total_bytes} bytes${entry.tree.truncated ? ', TRUNCATED' : ''}`);
35
+ lines.push(` tree_hash ${entry.tree.tree_hash || '(none)'}`);
36
+ if (entry.signals !== undefined) {
37
+ const sig = [];
38
+ if (entry.signals.package_version !== undefined)
39
+ sig.push(`package_version ${entry.signals.package_version}`);
40
+ if (entry.signals.git_head !== undefined)
41
+ sig.push(`git_head ${entry.signals.git_head}`);
42
+ lines.push(` signals: ${sig.join(', ')}`);
43
+ }
44
+ lines.push(chalk.dim(` coverage (${entry.coverage}): covers files under ${entry.tree.roots.join(', ') || '(none)'} matching ${entry.tree.rules}; imports outside these roots, node_modules, and runtime dynamic imports are NOT covered.`));
45
+ });
46
+ if (checkDrift) {
47
+ lines.push('');
48
+ lines.push('Drift check (pure recompute of the last entry under its recorded rules):');
49
+ const last = history[history.length - 1];
50
+ if (last.error !== undefined) {
51
+ lines.push(chalk.yellow(' last entry records a load/capture error — nothing to compare against current disk state.'));
52
+ return lines;
53
+ }
54
+ const result = recomputeIdentity(last, trustRoot !== undefined ? { trustRoot } : {});
55
+ if (!result.comparable) {
56
+ lines.push(chalk.yellow(` ${result.reason}`));
57
+ return lines;
58
+ }
59
+ for (const mod of result.modules) {
60
+ if (mod.current_hash === undefined) {
61
+ lines.push(chalk.red(` module ${mod.resolved}: MISSING (unreadable on current disk)`));
62
+ }
63
+ else if (mod.current_hash === mod.recorded_hash) {
64
+ lines.push(chalk.green(` module ${mod.resolved}: same`));
65
+ }
66
+ else {
67
+ lines.push(chalk.yellow(` module ${mod.resolved}: DIFFERS (recorded ${mod.recorded_hash}, current ${mod.current_hash})`));
68
+ }
69
+ }
70
+ if (result.tree.current_hash === result.tree.recorded_hash) {
71
+ lines.push(chalk.green(' tree: same'));
72
+ }
73
+ else {
74
+ lines.push(chalk.yellow(` tree: DIFFERS (recorded ${result.tree.recorded_hash || '(none)'}, current ${result.tree.current_hash}${result.tree.current_truncated ? ', current truncated' : ''})`));
75
+ }
76
+ if (result.signals !== undefined || last.signals !== undefined) {
77
+ lines.push(chalk.dim(` signals (informational): recorded ${JSON.stringify(last.signals ?? {})}, current ${JSON.stringify(result.signals ?? {})}`));
78
+ }
79
+ }
80
+ return lines;
81
+ }
4
82
  /** Truncates a JSON-serialised summary to a readable single line. */
5
83
  function formatSummary(value, maxLength = 120) {
6
84
  const raw = JSON.stringify(value);
@@ -39,9 +117,11 @@ export async function inspectRun(runId, store, workflowStore, options) {
39
117
  // Try to load workflow definition; gracefully handle missing definition.
40
118
  let workflowLabel;
41
119
  let definitionMissing = false;
120
+ let trustRoot;
42
121
  try {
43
122
  const def = await workflowStore.get(run.workflow_id);
44
123
  workflowLabel = `${def.id} v${def.version}`;
124
+ trustRoot = def.trust_root;
45
125
  }
46
126
  catch {
47
127
  workflowLabel = run.workflow_id;
@@ -115,6 +195,14 @@ export async function inspectRun(runId, store, workflowStore, options) {
115
195
  lines.push(` top_events: ${topEvents.join(', ')}`);
116
196
  }
117
197
  }
198
+ // Drift evidence (issue #119): render the extension-identity history when present.
199
+ if (run.extension_identity !== undefined && run.extension_identity.length > 0) {
200
+ lines.push(...renderExtensionIdentity(run.extension_identity, options?.checkDrift === true, trustRoot));
201
+ }
202
+ else if (options?.checkDrift === true) {
203
+ lines.push('');
204
+ lines.push('Drift check: no extension identity recorded for this run.');
205
+ }
118
206
  lines.push('');
119
207
  lines.push(`Evidence (${stepOrder.length} steps):`);
120
208
  stepOrder.forEach((stepId, idx) => {
@@ -208,12 +296,16 @@ export const inspectCommand = new Command('inspect')
208
296
  .argument('<run-id>', 'ID of the run to inspect')
209
297
  .description('Display the full evidence chain and diagnostics for a run')
210
298
  .option('--verbose', 'Show full tool call args and results')
299
+ .option('--check-drift', 'Recompute the last recorded extension identity against current disk state (pure hashing — never loads code)')
211
300
  .action(async (runId, cmdOpts) => {
212
301
  const { JsonFileStore, JsonWorkflowStore } = await import('@sensigo/realm');
213
302
  const store = new JsonFileStore();
214
303
  const workflowStore = new JsonWorkflowStore();
215
304
  try {
216
- const output = await inspectRun(runId, store, workflowStore, cmdOpts.verbose === true ? { verbose: true } : undefined);
305
+ const output = await inspectRun(runId, store, workflowStore, {
306
+ ...(cmdOpts.verbose === true ? { verbose: true } : {}),
307
+ ...(cmdOpts.checkDrift === true ? { checkDrift: true } : {}),
308
+ });
217
309
  console.log(output);
218
310
  }
219
311
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../src/commands/inspect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../src/commands/inspect.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import { type Server, type IncomingMessage, type ServerResponse } from 'node:htt
2
2
  import { Command } from 'commander';
3
3
  import type { WorkflowDefinition, WebhookTrigger, TriggerFilter, RunStore, WorkflowRegistrar } from '@sensigo/realm';
4
4
  import { type DedupStore } from '../lib/dedup-store.js';
5
+ import { loadProjectExtensions } from '../extensions/load-project-extensions.js';
5
6
  export interface Logger {
6
7
  debug(msg: string, data?: unknown): void;
7
8
  info(msg: string, data?: unknown): void;
@@ -66,6 +67,16 @@ export declare function buildRouteTable(inputs: Array<{
66
67
  env: Record<string, string | undefined>;
67
68
  logger: Logger;
68
69
  }): Map<string, WorkflowEntry>;
70
+ /**
71
+ * Startup preparation for the routed workflows (fail-fast — any error must abort startup):
72
+ * - registers each routed workflow ONCE (the per-webhook `workflowStore.register` was removed:
73
+ * it silently reverted fresher registrations; restart listen after re-registering);
74
+ * - loads each workflow's project extension modules. NOTE: the modules are imported in the
75
+ * LISTEN PARENT process here — top-level side effects run in the parent (the cost of
76
+ * fail-fast). Children re-resolve at spawn via `realm agent --run-id`; their failure branch
77
+ * writes terminal_reason 'extensions_load_failed' on the run.
78
+ */
79
+ export declare function prepareListenWorkflows(routes: Map<string, WorkflowEntry>, deps: Pick<ListenDeps, 'workflowStore' | 'logger'>, loadExtensions?: typeof loadProjectExtensions): Promise<void>;
69
80
  export interface ListenOptions {
70
81
  port: number;
71
82
  host: string;
@@ -1 +1 @@
1
- {"version":3,"file":"listen.d.ts","sourceRoot":"","sources":["../../src/commands/listen.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"listen.d.ts","sourceRoot":"","sources":["../../src/commands/listen.ts"],"names":[],"mappings":"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"}