@pleri/olam-cli 0.1.195 → 0.1.198

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 (144) hide show
  1. package/README.md +52 -0
  2. package/dist/ask/knowledge-pack.generated.d.ts.map +1 -1
  3. package/dist/ask/knowledge-pack.generated.js +12 -8
  4. package/dist/ask/knowledge-pack.generated.js.map +1 -1
  5. package/dist/commands/auth-list-json.d.ts +34 -0
  6. package/dist/commands/auth-list-json.d.ts.map +1 -1
  7. package/dist/commands/auth-list-json.js +24 -0
  8. package/dist/commands/auth-list-json.js.map +1 -1
  9. package/dist/commands/auth-migrate.d.ts +212 -0
  10. package/dist/commands/auth-migrate.d.ts.map +1 -0
  11. package/dist/commands/auth-migrate.js +465 -0
  12. package/dist/commands/auth-migrate.js.map +1 -0
  13. package/dist/commands/auth.d.ts.map +1 -1
  14. package/dist/commands/auth.js +239 -184
  15. package/dist/commands/auth.js.map +1 -1
  16. package/dist/commands/bootstrap.d.ts +4 -0
  17. package/dist/commands/bootstrap.d.ts.map +1 -1
  18. package/dist/commands/bootstrap.js +6 -0
  19. package/dist/commands/bootstrap.js.map +1 -1
  20. package/dist/commands/dispatch.d.ts.map +1 -1
  21. package/dist/commands/dispatch.js +11 -1
  22. package/dist/commands/dispatch.js.map +1 -1
  23. package/dist/commands/doctor.d.ts +33 -0
  24. package/dist/commands/doctor.d.ts.map +1 -1
  25. package/dist/commands/doctor.js +299 -12
  26. package/dist/commands/doctor.js.map +1 -1
  27. package/dist/commands/kg-mirror.d.ts +18 -2
  28. package/dist/commands/kg-mirror.d.ts.map +1 -1
  29. package/dist/commands/kg-mirror.js +78 -3
  30. package/dist/commands/kg-mirror.js.map +1 -1
  31. package/dist/commands/mcp/complete.d.ts +36 -0
  32. package/dist/commands/mcp/complete.d.ts.map +1 -0
  33. package/dist/commands/mcp/complete.js +66 -0
  34. package/dist/commands/mcp/complete.js.map +1 -0
  35. package/dist/commands/mcp/index.d.ts +1 -1
  36. package/dist/commands/mcp/index.d.ts.map +1 -1
  37. package/dist/commands/mcp/index.js +3 -1
  38. package/dist/commands/mcp/index.js.map +1 -1
  39. package/dist/commands/memory/bridge.d.ts +1 -1
  40. package/dist/commands/memory/bridge.d.ts.map +1 -1
  41. package/dist/commands/memory/bridge.js +2 -6
  42. package/dist/commands/memory/bridge.js.map +1 -1
  43. package/dist/commands/memory/secret.d.ts.map +1 -1
  44. package/dist/commands/memory/secret.js +4 -3
  45. package/dist/commands/memory/secret.js.map +1 -1
  46. package/dist/commands/observe.d.ts +3 -3
  47. package/dist/commands/observe.d.ts.map +1 -1
  48. package/dist/commands/observe.js +11 -8
  49. package/dist/commands/observe.js.map +1 -1
  50. package/dist/commands/runbooks.d.ts.map +1 -1
  51. package/dist/commands/runbooks.js +77 -10
  52. package/dist/commands/runbooks.js.map +1 -1
  53. package/dist/commands/services-tls.d.ts.map +1 -1
  54. package/dist/commands/services-tls.js +65 -10
  55. package/dist/commands/services-tls.js.map +1 -1
  56. package/dist/commands/services.d.ts +35 -1
  57. package/dist/commands/services.d.ts.map +1 -1
  58. package/dist/commands/services.js +153 -32
  59. package/dist/commands/services.js.map +1 -1
  60. package/dist/commands/setup-phase-8-kg-hook.d.ts +48 -0
  61. package/dist/commands/setup-phase-8-kg-hook.d.ts.map +1 -0
  62. package/dist/commands/setup-phase-8-kg-hook.js +93 -0
  63. package/dist/commands/setup-phase-8-kg-hook.js.map +1 -0
  64. package/dist/commands/setup-phase-9-memory-bridge.d.ts +36 -0
  65. package/dist/commands/setup-phase-9-memory-bridge.d.ts.map +1 -0
  66. package/dist/commands/setup-phase-9-memory-bridge.js +59 -0
  67. package/dist/commands/setup-phase-9-memory-bridge.js.map +1 -0
  68. package/dist/commands/setup.d.ts +34 -1
  69. package/dist/commands/setup.d.ts.map +1 -1
  70. package/dist/commands/setup.js +372 -32
  71. package/dist/commands/setup.js.map +1 -1
  72. package/dist/commands/skills-source.d.ts.map +1 -1
  73. package/dist/commands/skills-source.js +70 -1
  74. package/dist/commands/skills-source.js.map +1 -1
  75. package/dist/commands/update.d.ts +24 -0
  76. package/dist/commands/update.d.ts.map +1 -1
  77. package/dist/commands/update.js +53 -0
  78. package/dist/commands/update.js.map +1 -1
  79. package/dist/commands/upgrade.d.ts +5 -0
  80. package/dist/commands/upgrade.d.ts.map +1 -1
  81. package/dist/commands/upgrade.js +31 -8
  82. package/dist/commands/upgrade.js.map +1 -1
  83. package/dist/image-digests.json +8 -8
  84. package/dist/index.js +4487 -2451
  85. package/dist/lib/auth-backend.d.ts +168 -0
  86. package/dist/lib/auth-backend.d.ts.map +1 -0
  87. package/dist/lib/auth-backend.js +172 -0
  88. package/dist/lib/auth-backend.js.map +1 -0
  89. package/dist/lib/auth-list-cache.d.ts +67 -0
  90. package/dist/lib/auth-list-cache.d.ts.map +1 -0
  91. package/dist/lib/auth-list-cache.js +84 -0
  92. package/dist/lib/auth-list-cache.js.map +1 -0
  93. package/dist/lib/auth-list.d.ts +107 -0
  94. package/dist/lib/auth-list.d.ts.map +1 -0
  95. package/dist/lib/auth-list.js +123 -0
  96. package/dist/lib/auth-list.js.map +1 -0
  97. package/dist/lib/auth-login.d.ts +92 -0
  98. package/dist/lib/auth-login.d.ts.map +1 -0
  99. package/dist/lib/auth-login.js +124 -0
  100. package/dist/lib/auth-login.js.map +1 -0
  101. package/dist/lib/auth-mutator-backend.d.ts +54 -0
  102. package/dist/lib/auth-mutator-backend.d.ts.map +1 -0
  103. package/dist/lib/auth-mutator-backend.js +62 -0
  104. package/dist/lib/auth-mutator-backend.js.map +1 -0
  105. package/dist/lib/auth-remote.d.ts +50 -0
  106. package/dist/lib/auth-remote.d.ts.map +1 -1
  107. package/dist/lib/auth-remote.js +84 -2
  108. package/dist/lib/auth-remote.js.map +1 -1
  109. package/dist/lib/bootstrap-kubernetes.d.ts +69 -10
  110. package/dist/lib/bootstrap-kubernetes.d.ts.map +1 -1
  111. package/dist/lib/bootstrap-kubernetes.js +264 -46
  112. package/dist/lib/bootstrap-kubernetes.js.map +1 -1
  113. package/dist/lib/config.d.ts +35 -4
  114. package/dist/lib/config.d.ts.map +1 -1
  115. package/dist/lib/config.js +82 -11
  116. package/dist/lib/config.js.map +1 -1
  117. package/dist/lib/health-probes.d.ts +0 -22
  118. package/dist/lib/health-probes.d.ts.map +1 -1
  119. package/dist/lib/health-probes.js +57 -0
  120. package/dist/lib/health-probes.js.map +1 -1
  121. package/dist/lib/peripheral-registry.d.ts +11 -0
  122. package/dist/lib/peripheral-registry.d.ts.map +1 -1
  123. package/dist/lib/peripheral-registry.js +5 -0
  124. package/dist/lib/peripheral-registry.js.map +1 -1
  125. package/dist/lib/plans-client.d.ts.map +1 -1
  126. package/dist/lib/plans-client.js +6 -3
  127. package/dist/lib/plans-client.js.map +1 -1
  128. package/dist/mcp-server.js +138 -6
  129. package/hermes-bundle/version.json +1 -1
  130. package/host-cp/k8s/manifests/30-configmap.yaml +4 -0
  131. package/host-cp/k8s/manifests/50-deployment.yaml +13 -1
  132. package/host-cp/k8s/manifests/65-tls-secret-template.yaml.tmpl +35 -0
  133. package/host-cp/k8s/manifests/auth-service/50-deployment.yaml +1 -1
  134. package/host-cp/k8s/manifests/kg-service/50-deployment.yaml +1 -1
  135. package/host-cp/k8s/manifests/mcp-auth-service/50-deployment.yaml +1 -1
  136. package/host-cp/k8s/manifests/memory-service/50-deployment.yaml +1 -1
  137. package/host-cp/src/dispatch-persister.mjs +157 -0
  138. package/host-cp/src/pr-nanny.mjs +7 -0
  139. package/host-cp/src/server.mjs +175 -3
  140. package/host-cp/src/world-watchdog-pid-lookup.mjs +119 -0
  141. package/host-cp/src/world-watchdog-probes.mjs +271 -0
  142. package/host-cp/src/world-watchdog-recovery.mjs +192 -0
  143. package/host-cp/src/world-watchdog.mjs +313 -0
  144. package/package.json +1 -1
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Phase 8 — KG hook install (olam setup --continue Phase 8).
3
+ *
4
+ * Installs the kg-service PreToolUse hook into `~/.claude/settings.json`
5
+ * (user scope) so that every new Claude Code session routes grep/find
6
+ * tool calls through the KG classifier.
7
+ *
8
+ * Equivalent to `olam kg install-hook --scope user`. Idempotent: if the
9
+ * sentinel is already present in ~/.claude/settings.json the phase skips
10
+ * with a friendly message.
11
+ *
12
+ * Dependency injection pattern mirrors setup-phase-5b-project-sweep.ts:
13
+ * - real @olam/core functions loaded lazily so this module resolves
14
+ * in vitest without a pre-built dist.
15
+ * - test callers inject stubs via KgHookPhaseDeps.
16
+ */
17
+ import type { RunSetupOptions, RunSetupDeps, PhaseResult } from './setup.js';
18
+ /**
19
+ * Result shape returned by mergeHomeSettingsJson when called with ensureHook.
20
+ * We re-declare only the `status` field we care about so the phase module
21
+ * doesn't import the full @olam/core type in prod or test.
22
+ */
23
+ export interface MergeHookResult {
24
+ readonly status: 'installed' | 'already-present' | 'no-op';
25
+ }
26
+ export type MergeHookFn = (filePath: string, opts: {
27
+ ensureHook: {
28
+ stage: string;
29
+ sentinel: string;
30
+ entry: unknown;
31
+ };
32
+ }) => MergeHookResult;
33
+ export type BuildHookEntryFn = (opts: {
34
+ flavor: 'host';
35
+ }) => unknown;
36
+ export interface KgHookPhaseDeps {
37
+ readonly mergeHookFn?: MergeHookFn;
38
+ readonly buildHookEntryFn?: BuildHookEntryFn;
39
+ readonly kgHookSentinel?: string;
40
+ readonly settingsPath?: string;
41
+ readonly mkdirSync?: (p: string, opts: {
42
+ recursive: boolean;
43
+ }) => void;
44
+ readonly printInfo?: (scope: string, msg: string) => void;
45
+ readonly printSuccess?: (msg: string) => void;
46
+ }
47
+ export declare function runKgHookPhase(opts: RunSetupOptions, _deps: RunSetupDeps, kgDeps?: KgHookPhaseDeps): Promise<PhaseResult>;
48
+ //# sourceMappingURL=setup-phase-8-kg-hook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-phase-8-kg-hook.d.ts","sourceRoot":"","sources":["../../src/commands/setup-phase-8-kg-hook.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAI7E;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,iBAAiB,GAAG,OAAO,CAAC;CAC5D;AAED,MAAM,MAAM,WAAW,GAAG,CACxB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE;IACJ,UAAU,EAAE;QACV,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,OAAO,CAAC;KAChB,CAAC;CACH,KACE,eAAe,CAAC;AAErB,MAAM,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,KAAK,OAAO,CAAC;AAErE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IACnC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAC7C,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IACvE,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1D,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/C;AA2BD,wBAAsB,cAAc,CAClC,IAAI,EAAE,eAAe,EACrB,KAAK,EAAE,YAAY,EACnB,MAAM,GAAE,eAAoB,GAC3B,OAAO,CAAC,WAAW,CAAC,CA0DtB"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Phase 8 — KG hook install (olam setup --continue Phase 8).
3
+ *
4
+ * Installs the kg-service PreToolUse hook into `~/.claude/settings.json`
5
+ * (user scope) so that every new Claude Code session routes grep/find
6
+ * tool calls through the KG classifier.
7
+ *
8
+ * Equivalent to `olam kg install-hook --scope user`. Idempotent: if the
9
+ * sentinel is already present in ~/.claude/settings.json the phase skips
10
+ * with a friendly message.
11
+ *
12
+ * Dependency injection pattern mirrors setup-phase-5b-project-sweep.ts:
13
+ * - real @olam/core functions loaded lazily so this module resolves
14
+ * in vitest without a pre-built dist.
15
+ * - test callers inject stubs via KgHookPhaseDeps.
16
+ */
17
+ import * as fs from 'node:fs';
18
+ import * as path from 'node:path';
19
+ import * as os from 'node:os';
20
+ // ── Lazy real-impl loaders ────────────────────────────────────────────────────
21
+ async function loadMergeHookFn() {
22
+ const m = await import('@olam/core/src/world/merge-settings.js');
23
+ return m.mergeHomeSettingsJson;
24
+ }
25
+ async function loadBuildHookEntryFn() {
26
+ const m = await import('@olam/core/src/kg/hook-template.js');
27
+ return m.buildHookMatcherEntry;
28
+ }
29
+ async function loadKgHookSentinel() {
30
+ const m = await import('@olam/core/src/kg/hook-template.js');
31
+ return m.KG_HOOK_SENTINEL;
32
+ }
33
+ // ── Default settings path (user scope — same as --scope user) ─────────────────
34
+ function defaultSettingsPath() {
35
+ return path.join(os.homedir(), '.claude', 'settings.json');
36
+ }
37
+ // ── Main export ───────────────────────────────────────────────────────────────
38
+ export async function runKgHookPhase(opts, _deps, kgDeps = {}) {
39
+ const settingsPath = kgDeps.settingsPath ?? defaultSettingsPath();
40
+ // Dry-run: describe what would happen without touching disk.
41
+ if (opts.dryRun) {
42
+ const printInfo = kgDeps.printInfo ??
43
+ ((scope, msg) => process.stdout.write(`[${scope}] ${msg}\n`));
44
+ printInfo('kg-hook', `would install KG hook into ${settingsPath} (dry-run)`);
45
+ return {
46
+ ok: true,
47
+ skipped: true,
48
+ message: `dry-run: would install KG hook into ${settingsPath}`,
49
+ };
50
+ }
51
+ // Ensure directory exists.
52
+ const mkdirFn = kgDeps.mkdirSync ?? ((p, o) => fs.mkdirSync(p, o));
53
+ try {
54
+ mkdirFn(path.dirname(settingsPath), { recursive: true });
55
+ }
56
+ catch (err) {
57
+ return {
58
+ ok: false,
59
+ message: `could not create ${path.dirname(settingsPath)}: ${err instanceof Error ? err.message : String(err)}`,
60
+ remedy: 'Ensure ~/.claude/ is writable, then re-run `olam setup --continue`.',
61
+ };
62
+ }
63
+ // Load real implementations lazily (injectable for tests).
64
+ const mergeHookFn = kgDeps.mergeHookFn ?? (await loadMergeHookFn());
65
+ const buildHookEntryFn = kgDeps.buildHookEntryFn ?? (await loadBuildHookEntryFn());
66
+ const kgHookSentinel = kgDeps.kgHookSentinel ?? (await loadKgHookSentinel());
67
+ let result;
68
+ try {
69
+ result = mergeHookFn(settingsPath, {
70
+ ensureHook: {
71
+ stage: 'PreToolUse',
72
+ sentinel: kgHookSentinel,
73
+ entry: buildHookEntryFn({ flavor: 'host' }),
74
+ },
75
+ });
76
+ }
77
+ catch (err) {
78
+ return {
79
+ ok: false,
80
+ message: `KG hook install failed: ${err instanceof Error ? err.message : String(err)}`,
81
+ remedy: 'Inspect ~/.claude/settings.json for syntax errors, then re-run `olam setup --continue`.',
82
+ };
83
+ }
84
+ switch (result.status) {
85
+ case 'installed':
86
+ return { ok: true, message: `KG hook installed (${settingsPath})` };
87
+ case 'already-present':
88
+ return { ok: true, skipped: true, message: 'KG hook already installed — skipped' };
89
+ case 'no-op':
90
+ return { ok: true, message: `KG hook: no change to ${settingsPath}` };
91
+ }
92
+ }
93
+ //# sourceMappingURL=setup-phase-8-kg-hook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-phase-8-kg-hook.js","sourceRoot":"","sources":["../../src/commands/setup-phase-8-kg-hook.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Phase 9 — Agent memory bridge install (olam setup --continue Phase 9).
3
+ *
4
+ * Registers `agentmemory` as an MCP server with the operator's host claude
5
+ * (equivalent to `olam memory install --scope user`). Idempotent: `claude
6
+ * mcp add` is naturally idempotent — re-running overwrites the registration
7
+ * but produces exit 0.
8
+ *
9
+ * Pre-conditions handled gracefully (not failing the wizard):
10
+ * - `claude` not on PATH: phase skips with a remediation hint, not a
11
+ * hard failure (operator may not have Claude Code installed on every
12
+ * machine — Phase 9 is optional wiring, not a hard install blocker).
13
+ * - memory-secret missing: phase skips with a hint to run
14
+ * `olam memory start` first; the secret is generated on first start.
15
+ *
16
+ * Dependency injection pattern mirrors setup-phase-8-kg-hook.ts:
17
+ * - `runInstall` is injectable so tests don't shell out to real claude.
18
+ * - printFns injectable so tests can capture output.
19
+ *
20
+ * Plan reference: brainstorm docs/brainstorms/2026-05-29-olam-tutorial-mode.md
21
+ * Layer 1 implementation.
22
+ */
23
+ import type { RunSetupOptions, RunSetupDeps, PhaseResult } from './setup.js';
24
+ import type { McpScope } from './mcp/install-shared.js';
25
+ import type { ClaudeShellDeps } from './mcp/install-shared.js';
26
+ import type { SecretReader } from './memory/install.js';
27
+ export type RunInstallFn = (opts: {
28
+ scope: McpScope;
29
+ readSecret?: SecretReader;
30
+ }, deps?: ClaudeShellDeps) => Promise<number>;
31
+ export interface MemoryBridgePhaseDeps {
32
+ readonly runInstallFn?: RunInstallFn;
33
+ readonly printInfo?: (scope: string, msg: string) => void;
34
+ }
35
+ export declare function runMemoryBridgePhase(opts: RunSetupOptions, _deps: RunSetupDeps, bridgeDeps?: MemoryBridgePhaseDeps): Promise<PhaseResult>;
36
+ //# sourceMappingURL=setup-phase-9-memory-bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-phase-9-memory-bridge.d.ts","sourceRoot":"","sources":["../../src/commands/setup-phase-9-memory-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAIxD,MAAM,MAAM,YAAY,GAAG,CACzB,IAAI,EAAE;IAAE,KAAK,EAAE,QAAQ,CAAC;IAAC,UAAU,CAAC,EAAE,YAAY,CAAA;CAAE,EACpD,IAAI,CAAC,EAAE,eAAe,KACnB,OAAO,CAAC,MAAM,CAAC,CAAC;AAErB,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IACrC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3D;AAWD,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,eAAe,EACrB,KAAK,EAAE,YAAY,EACnB,UAAU,GAAE,qBAA0B,GACrC,OAAO,CAAC,WAAW,CAAC,CAqCtB"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Phase 9 — Agent memory bridge install (olam setup --continue Phase 9).
3
+ *
4
+ * Registers `agentmemory` as an MCP server with the operator's host claude
5
+ * (equivalent to `olam memory install --scope user`). Idempotent: `claude
6
+ * mcp add` is naturally idempotent — re-running overwrites the registration
7
+ * but produces exit 0.
8
+ *
9
+ * Pre-conditions handled gracefully (not failing the wizard):
10
+ * - `claude` not on PATH: phase skips with a remediation hint, not a
11
+ * hard failure (operator may not have Claude Code installed on every
12
+ * machine — Phase 9 is optional wiring, not a hard install blocker).
13
+ * - memory-secret missing: phase skips with a hint to run
14
+ * `olam memory start` first; the secret is generated on first start.
15
+ *
16
+ * Dependency injection pattern mirrors setup-phase-8-kg-hook.ts:
17
+ * - `runInstall` is injectable so tests don't shell out to real claude.
18
+ * - printFns injectable so tests can capture output.
19
+ *
20
+ * Plan reference: brainstorm docs/brainstorms/2026-05-29-olam-tutorial-mode.md
21
+ * Layer 1 implementation.
22
+ */
23
+ // ── Lazy real-impl loader ─────────────────────────────────────────────────────
24
+ async function loadRunInstallFn() {
25
+ const m = await import('./memory/install.js');
26
+ return m.runInstall;
27
+ }
28
+ // ── Main export ───────────────────────────────────────────────────────────────
29
+ export async function runMemoryBridgePhase(opts, _deps, bridgeDeps = {}) {
30
+ // Dry-run: describe what would happen without shelling out to claude.
31
+ if (opts.dryRun) {
32
+ const printInfo = bridgeDeps.printInfo ??
33
+ ((scope, msg) => process.stdout.write(`[${scope}] ${msg}\n`));
34
+ printInfo('memory-bridge', 'would run `claude mcp add agentmemory --scope user` (dry-run)');
35
+ return {
36
+ ok: true,
37
+ skipped: true,
38
+ message: 'dry-run: would register agentmemory MCP with claude (--scope user)',
39
+ };
40
+ }
41
+ const runInstallFn = bridgeDeps.runInstallFn ?? (await loadRunInstallFn());
42
+ const rc = await runInstallFn({ scope: 'user' });
43
+ if (rc === 0) {
44
+ return {
45
+ ok: true,
46
+ message: 'agentmemory MCP registered with claude (--scope user)',
47
+ };
48
+ }
49
+ // Non-zero rc from runInstall means either:
50
+ // rc=1: claude not on PATH, OR secret missing.
51
+ // Both are soft failures for setup — operator can fix and re-run
52
+ // `olam setup --continue` or run `olam memory install` manually.
53
+ return {
54
+ ok: true,
55
+ skipped: true,
56
+ message: `agentmemory MCP registration skipped (rc=${rc}); run \`olam memory install\` after resolving`,
57
+ };
58
+ }
59
+ //# sourceMappingURL=setup-phase-9-memory-bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-phase-9-memory-bridge.js","sourceRoot":"","sources":["../../src/commands/setup-phase-9-memory-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAmBH,iFAAiF;AAEjF,KAAK,UAAU,gBAAgB;IAC7B,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAC9C,OAAO,CAAC,CAAC,UAA0B,CAAC;AACtC,CAAC;AAED,iFAAiF;AAEjF,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAAqB,EACrB,KAAmB,EACnB,aAAoC,EAAE;IAEtC,sEAAsE;IACtE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,MAAM,SAAS,GACb,UAAU,CAAC,SAAS;YACpB,CAAC,CAAC,KAAa,EAAE,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;QAChF,SAAS,CACP,eAAe,EACf,+DAA+D,CAChE,CAAC;QACF,OAAO;YACL,EAAE,EAAE,IAAI;YACR,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,oEAAoE;SAC9E,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,UAAU,CAAC,YAAY,IAAI,CAAC,MAAM,gBAAgB,EAAE,CAAC,CAAC;IAE3E,MAAM,EAAE,GAAG,MAAM,YAAY,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAEjD,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;QACb,OAAO;YACL,EAAE,EAAE,IAAI;YACR,OAAO,EAAE,uDAAuD;SACjE,CAAC;IACJ,CAAC;IAED,4CAA4C;IAC5C,iDAAiD;IACjD,iEAAiE;IACjE,iEAAiE;IACjE,OAAO;QACL,EAAE,EAAE,IAAI;QACR,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,4CAA4C,EAAE,gDAAgD;KACxG,CAAC;AACJ,CAAC"}
@@ -28,7 +28,7 @@
28
28
  * Phase 3.5: (no-op for docker)
29
29
  * Phase 4: Shell init (idempotent append of completion eval-line)
30
30
  * Phase 5: Init global config (ensure ~/.olam/config.json has host.substrate set)
31
- * Phase 5a: Skill source picker
31
+ * Phase 5a: Skill source picker (runs unconditionally; auto-skips when sources already registered)
32
32
  * Phase 5b: Project sweep
33
33
  * Phase 6: Auth prompt (offer interactive `olam auth login`)
34
34
  * Phase 7: Final verify (subprocess: olam doctor; halt on non-zero)
@@ -127,6 +127,38 @@ export interface RunSetupOptions {
127
127
  * printed if the path doesn't exist.
128
128
  */
129
129
  readonly hostCpDevPath?: string;
130
+ /**
131
+ * Phase 0: skip the substrate picker (operator manages it manually
132
+ * via olam config set host.substrate). For non-interactive setups.
133
+ */
134
+ readonly skipSubstratePicker?: boolean;
135
+ /**
136
+ * --continue: skip Phases 1-7 (assumes initial setup is already complete)
137
+ * and run ONLY Phase 8 (KG hook) + Phase 9 (memory bridge).
138
+ *
139
+ * Use after `olam setup` has run once successfully to add the two optional
140
+ * integration phases without re-running the full wizard.
141
+ */
142
+ readonly continueMode?: boolean;
143
+ /**
144
+ * Phase 8: skip KG hook install (operator will run `olam kg install-hook` later).
145
+ */
146
+ readonly skipKgHook?: boolean;
147
+ /**
148
+ * Phase 9: skip agent memory bridge install (operator will run
149
+ * `olam memory install` later).
150
+ */
151
+ readonly skipMemoryBridge?: boolean;
152
+ /**
153
+ * [k3s] Forwarded to `olam bootstrap`: stream all phase output sequentially
154
+ * instead of collapsing each long phase to a live spinner line.
155
+ */
156
+ readonly verbose?: boolean;
157
+ /**
158
+ * [k3s] Forwarded to `olam bootstrap`: skip pre-pulling olam-* images into
159
+ * the k3d node (pods cold-pull on demand).
160
+ */
161
+ readonly skipPrepull?: boolean;
130
162
  }
131
163
  export type SpawnSubprocess = (cmd: string, args: ReadonlyArray<string>) => Promise<{
132
164
  readonly status: number | null;
@@ -192,6 +224,7 @@ export interface SetupReport {
192
224
  export declare function validateClusterName(name: string): string | null;
193
225
  /** Migration hint printed once when an existing docker/compose install is detected. */
194
226
  export declare const DOCKER_MIGRATION_HINT: string;
227
+ export declare function phase0SubstratePicker(opts: RunSetupOptions, deps: RunSetupDeps): Promise<PhaseResult>;
195
228
  export declare function phase3_5K3dHttpsBootstrap(substrate: SetupSubstrate, opts: RunSetupOptions, _deps: RunSetupDeps): Promise<PhaseResult>;
196
229
  export declare function runSetup(opts: RunSetupOptions, deps?: RunSetupDeps): Promise<SetupReport>;
197
230
  export declare function registerSetup(program: Command): void;
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}