@pleri/olam-cli 0.1.158 → 0.1.160

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 (89) hide show
  1. package/dist/agent-stream/agent-sdk-to-chunks.js +3 -0
  2. package/dist/agent-stream/driver-runner.js +9 -4
  3. package/dist/agent-stream/host-driver-launch.js +48 -0
  4. package/dist/commands/doctor.d.ts +21 -10
  5. package/dist/commands/doctor.d.ts.map +1 -1
  6. package/dist/commands/doctor.js +95 -39
  7. package/dist/commands/doctor.js.map +1 -1
  8. package/dist/commands/flywheel/check-persona-skeleton.d.ts +30 -2
  9. package/dist/commands/flywheel/check-persona-skeleton.d.ts.map +1 -1
  10. package/dist/commands/flywheel/check-persona-skeleton.js +143 -6
  11. package/dist/commands/flywheel/check-persona-skeleton.js.map +1 -1
  12. package/dist/commands/flywheel/diversity-check.d.ts +12 -2
  13. package/dist/commands/flywheel/diversity-check.d.ts.map +1 -1
  14. package/dist/commands/flywheel/diversity-check.js +56 -6
  15. package/dist/commands/flywheel/diversity-check.js.map +1 -1
  16. package/dist/commands/flywheel/index.d.ts.map +1 -1
  17. package/dist/commands/flywheel/index.js +2 -0
  18. package/dist/commands/flywheel/index.js.map +1 -1
  19. package/dist/commands/flywheel/install-shims.d.ts +36 -3
  20. package/dist/commands/flywheel/install-shims.d.ts.map +1 -1
  21. package/dist/commands/flywheel/install-shims.js +118 -7
  22. package/dist/commands/flywheel/install-shims.js.map +1 -1
  23. package/dist/commands/flywheel/k10-measure.d.ts +12 -2
  24. package/dist/commands/flywheel/k10-measure.d.ts.map +1 -1
  25. package/dist/commands/flywheel/k10-measure.js +55 -6
  26. package/dist/commands/flywheel/k10-measure.js.map +1 -1
  27. package/dist/commands/flywheel/migrate-overlays.d.ts +115 -0
  28. package/dist/commands/flywheel/migrate-overlays.d.ts.map +1 -0
  29. package/dist/commands/flywheel/migrate-overlays.js +766 -0
  30. package/dist/commands/flywheel/migrate-overlays.js.map +1 -0
  31. package/dist/commands/flywheel/sanitize-persona-output.d.ts +33 -2
  32. package/dist/commands/flywheel/sanitize-persona-output.d.ts.map +1 -1
  33. package/dist/commands/flywheel/sanitize-persona-output.js +94 -6
  34. package/dist/commands/flywheel/sanitize-persona-output.js.map +1 -1
  35. package/dist/commands/memory/index.d.ts.map +1 -1
  36. package/dist/commands/memory/index.js +2 -0
  37. package/dist/commands/memory/index.js.map +1 -1
  38. package/dist/commands/memory/install-hooks.d.ts +22 -0
  39. package/dist/commands/memory/install-hooks.d.ts.map +1 -0
  40. package/dist/commands/memory/install-hooks.js +156 -0
  41. package/dist/commands/memory/install-hooks.js.map +1 -0
  42. package/dist/commands/skills-doctor.js +2 -2
  43. package/dist/commands/skills-doctor.js.map +1 -1
  44. package/dist/commands/skills-source.d.ts.map +1 -1
  45. package/dist/commands/skills-source.js +10 -0
  46. package/dist/commands/skills-source.js.map +1 -1
  47. package/dist/commands/skills.d.ts.map +1 -1
  48. package/dist/commands/skills.js +169 -1
  49. package/dist/commands/skills.js.map +1 -1
  50. package/dist/image-digests.json +7 -7
  51. package/dist/index.js +3592 -905
  52. package/dist/index.js.map +1 -1
  53. package/dist/lib/flywheel-probes.d.ts +58 -0
  54. package/dist/lib/flywheel-probes.d.ts.map +1 -0
  55. package/dist/lib/flywheel-probes.js +163 -0
  56. package/dist/lib/flywheel-probes.js.map +1 -0
  57. package/dist/lib/host-side-proxy.d.ts +67 -0
  58. package/dist/lib/host-side-proxy.d.ts.map +1 -0
  59. package/dist/lib/host-side-proxy.js +177 -0
  60. package/dist/lib/host-side-proxy.js.map +1 -0
  61. package/dist/lib/shim-generator.d.ts +51 -0
  62. package/dist/lib/shim-generator.d.ts.map +1 -0
  63. package/dist/lib/shim-generator.js +88 -0
  64. package/dist/lib/shim-generator.js.map +1 -0
  65. package/dist/lib/skills-apply-overlays.d.ts +35 -0
  66. package/dist/lib/skills-apply-overlays.d.ts.map +1 -0
  67. package/dist/lib/skills-apply-overlays.js +243 -0
  68. package/dist/lib/skills-apply-overlays.js.map +1 -0
  69. package/dist/lib/upgrade-kubernetes.d.ts +13 -12
  70. package/dist/lib/upgrade-kubernetes.d.ts.map +1 -1
  71. package/dist/lib/upgrade-kubernetes.js +87 -134
  72. package/dist/lib/upgrade-kubernetes.js.map +1 -1
  73. package/dist/mcp-server.js +1106 -453
  74. package/hermes-bundle/version.json +1 -1
  75. package/host-cp/k8s/host-side/docker-socket-proxy.compose.yaml +58 -0
  76. package/host-cp/k8s/manifests/50-deployment.yaml +47 -70
  77. package/host-cp/k8s/manifests/auth-service/50-deployment.yaml +1 -1
  78. package/host-cp/k8s/manifests/docker-socket-proxy/60-service.yaml +37 -0
  79. package/host-cp/k8s/manifests/kg-service/50-deployment.yaml +1 -1
  80. package/host-cp/k8s/manifests/mcp-auth-service/50-deployment.yaml +1 -1
  81. package/host-cp/k8s/manifests/memory-service/30-configmap.yaml +11 -0
  82. package/host-cp/k8s/manifests/memory-service/35-configmap-iii-config.yaml +76 -0
  83. package/host-cp/k8s/manifests/memory-service/50-deployment.yaml +11 -1
  84. package/host-cp/src/crystallize-planning.mjs +261 -0
  85. package/host-cp/src/plan-chat-service.mjs +84 -2
  86. package/host-cp/src/planning-sessions.mjs +270 -0
  87. package/host-cp/src/server.mjs +9 -0
  88. package/host-cp/src/tasks-route.mjs +191 -0
  89. package/package.json +1 -1
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Flywheel doctor probes — callable functions for `olam doctor` to consume.
3
+ *
4
+ * Deliberately separated from `packages/cli/src/commands/doctor.ts` so the
5
+ * probe logic can land + be tested without touching the 945-line doctor's
6
+ * D11 positional-contract churn. doctor.ts wiring is a focused follow-up;
7
+ * the probe functions here are the deliverable.
8
+ *
9
+ * Probes:
10
+ * - `probeFlywheelShimHealth()` — verifies every registered shim target
11
+ * (per @olam/cli/lib/shim-generator SHIM_SPECS) exists at
12
+ * `~/.claude/scripts/<basename>` AND is the olam-generated form
13
+ * (contains the AUTO-GENERATED marker). Returns the probe result + a
14
+ * per-target breakdown.
15
+ *
16
+ * - `probeSettingsHooksAudit()` — closes K1 OQ9. Scans
17
+ * `~/.claude/settings.json` for hook entries (PreToolUse / PostToolUse /
18
+ * Stop / SessionStart) that reference hardcoded `~/.claude/scripts/<n>`
19
+ * paths AND warns if the basename matches a shim-target that has a
20
+ * `replacedBy` migration path.
21
+ *
22
+ * Plan reference: docs/plans/olam-flywheel-cli-namespace/phase-b-tasks.md § B4 + B6
23
+ */
24
+ export interface ProbeResult {
25
+ ok: boolean;
26
+ warn: boolean;
27
+ message: string;
28
+ }
29
+ export interface ShimHealthDetail {
30
+ basename: string;
31
+ path: string;
32
+ status: 'OK' | 'MISSING' | 'STALE' | 'OPERATOR-FILE';
33
+ }
34
+ export interface ShimHealthResult extends ProbeResult {
35
+ details: ShimHealthDetail[];
36
+ okCount: number;
37
+ missingCount: number;
38
+ staleCount: number;
39
+ operatorFileCount: number;
40
+ }
41
+ export interface ShimHealthOpts {
42
+ scriptsDir?: string;
43
+ }
44
+ export declare function probeFlywheelShimHealth(opts?: ShimHealthOpts): ShimHealthResult;
45
+ export interface SettingsHookEntry {
46
+ block: 'PreToolUse' | 'PostToolUse' | 'Stop' | 'SessionStart' | 'UserPromptSubmit';
47
+ command: string;
48
+ matchedShimBasename?: string;
49
+ suggestedReplacement?: string;
50
+ }
51
+ export interface SettingsHooksAuditResult extends ProbeResult {
52
+ findings: SettingsHookEntry[];
53
+ }
54
+ export interface SettingsHooksAuditOpts {
55
+ settingsPath?: string;
56
+ }
57
+ export declare function probeSettingsHooksAudit(opts?: SettingsHooksAuditOpts): SettingsHooksAuditResult;
58
+ //# sourceMappingURL=flywheel-probes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flywheel-probes.d.ts","sourceRoot":"","sources":["../../src/lib/flywheel-probes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAYH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,IAAI,GAAG,SAAS,GAAG,OAAO,GAAG,eAAe,CAAC;CACtD;AAED,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACnD,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,uBAAuB,CAAC,IAAI,GAAE,cAAmB,GAAG,gBAAgB,CA2DnF;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,YAAY,GAAG,aAAa,GAAG,MAAM,GAAG,cAAc,GAAG,kBAAkB,CAAC;IACnF,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,wBAAyB,SAAQ,WAAW;IAC3D,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,sBAAsB;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAgBD,wBAAgB,uBAAuB,CAAC,IAAI,GAAE,sBAA2B,GAAG,wBAAwB,CAuDnG"}
@@ -0,0 +1,163 @@
1
+ /**
2
+ * Flywheel doctor probes — callable functions for `olam doctor` to consume.
3
+ *
4
+ * Deliberately separated from `packages/cli/src/commands/doctor.ts` so the
5
+ * probe logic can land + be tested without touching the 945-line doctor's
6
+ * D11 positional-contract churn. doctor.ts wiring is a focused follow-up;
7
+ * the probe functions here are the deliverable.
8
+ *
9
+ * Probes:
10
+ * - `probeFlywheelShimHealth()` — verifies every registered shim target
11
+ * (per @olam/cli/lib/shim-generator SHIM_SPECS) exists at
12
+ * `~/.claude/scripts/<basename>` AND is the olam-generated form
13
+ * (contains the AUTO-GENERATED marker). Returns the probe result + a
14
+ * per-target breakdown.
15
+ *
16
+ * - `probeSettingsHooksAudit()` — closes K1 OQ9. Scans
17
+ * `~/.claude/settings.json` for hook entries (PreToolUse / PostToolUse /
18
+ * Stop / SessionStart) that reference hardcoded `~/.claude/scripts/<n>`
19
+ * paths AND warns if the basename matches a shim-target that has a
20
+ * `replacedBy` migration path.
21
+ *
22
+ * Plan reference: docs/plans/olam-flywheel-cli-namespace/phase-b-tasks.md § B4 + B6
23
+ */
24
+ import { existsSync, readFileSync } from 'node:fs';
25
+ import { homedir } from 'node:os';
26
+ import { join } from 'node:path';
27
+ import { SHIM_SPECS } from './shim-generator.js';
28
+ import { lookupShimTarget } from '@olam/core/src/lib/shim-targets.js';
29
+ const SHIM_AUTO_GENERATED_MARKER = '# AUTO-GENERATED by `olam flywheel install-shims`';
30
+ const DEFAULT_SCRIPTS_DIR = join(homedir(), '.claude', 'scripts');
31
+ const DEFAULT_SETTINGS_PATH = join(homedir(), '.claude', 'settings.json');
32
+ export function probeFlywheelShimHealth(opts = {}) {
33
+ const scriptsDir = opts.scriptsDir ?? DEFAULT_SCRIPTS_DIR;
34
+ const details = [];
35
+ let okCount = 0;
36
+ let missingCount = 0;
37
+ let staleCount = 0;
38
+ let operatorFileCount = 0;
39
+ for (const spec of SHIM_SPECS) {
40
+ const path = join(scriptsDir, spec.basename);
41
+ let status;
42
+ if (!existsSync(path)) {
43
+ status = 'MISSING';
44
+ missingCount += 1;
45
+ }
46
+ else {
47
+ try {
48
+ const content = readFileSync(path, 'utf8');
49
+ if (content.includes(SHIM_AUTO_GENERATED_MARKER)) {
50
+ status = 'OK';
51
+ okCount += 1;
52
+ }
53
+ else {
54
+ status = 'OPERATOR-FILE';
55
+ operatorFileCount += 1;
56
+ }
57
+ }
58
+ catch {
59
+ status = 'STALE';
60
+ staleCount += 1;
61
+ }
62
+ }
63
+ details.push({ basename: spec.basename, path, status });
64
+ }
65
+ const totalSpecs = SHIM_SPECS.length;
66
+ if (missingCount === 0 && operatorFileCount === 0 && staleCount === 0) {
67
+ return {
68
+ ok: true,
69
+ warn: false,
70
+ message: `flywheel-shim-health: ${okCount}/${totalSpecs} shim targets present + auto-generated`,
71
+ details,
72
+ okCount,
73
+ missingCount,
74
+ staleCount,
75
+ operatorFileCount,
76
+ };
77
+ }
78
+ const issues = [];
79
+ if (missingCount > 0)
80
+ issues.push(`${missingCount} missing`);
81
+ if (operatorFileCount > 0)
82
+ issues.push(`${operatorFileCount} operator-file (would be backed up by --force install)`);
83
+ if (staleCount > 0)
84
+ issues.push(`${staleCount} stale`);
85
+ return {
86
+ ok: false,
87
+ warn: missingCount === 0 && staleCount === 0, // operator-file alone is WARN, not FAIL
88
+ message: `flywheel-shim-health: ${okCount}/${totalSpecs} OK, ${issues.join(', ')} — run \`olam flywheel install-shims\` to refresh (--force to backup + overwrite operator files)`,
89
+ details,
90
+ okCount,
91
+ missingCount,
92
+ staleCount,
93
+ operatorFileCount,
94
+ };
95
+ }
96
+ const HOOK_BLOCKS = [
97
+ 'PreToolUse',
98
+ 'PostToolUse',
99
+ 'Stop',
100
+ 'SessionStart',
101
+ 'UserPromptSubmit',
102
+ ];
103
+ const SCRIPT_PATH_RE = /~\/.claude\/scripts\/([\w.-]+)|\$HOME\/\.claude\/scripts\/([\w.-]+)|\/Users\/[\w.-]+\/\.claude\/scripts\/([\w.-]+)/;
104
+ export function probeSettingsHooksAudit(opts = {}) {
105
+ const settingsPath = opts.settingsPath ?? DEFAULT_SETTINGS_PATH;
106
+ if (!existsSync(settingsPath)) {
107
+ return {
108
+ ok: true,
109
+ warn: false,
110
+ message: `settings-hooks-audit: ${settingsPath} not present; nothing to audit`,
111
+ findings: [],
112
+ };
113
+ }
114
+ let parsed;
115
+ try {
116
+ parsed = JSON.parse(readFileSync(settingsPath, 'utf8'));
117
+ }
118
+ catch (err) {
119
+ return {
120
+ ok: false,
121
+ warn: false,
122
+ message: `settings-hooks-audit: cannot parse ${settingsPath} as JSON: ${err instanceof Error ? err.message : 'unknown'}`,
123
+ findings: [],
124
+ };
125
+ }
126
+ const findings = [];
127
+ const hooks = parsed.hooks ?? {};
128
+ for (const block of HOOK_BLOCKS) {
129
+ const entries = hooks[block] ?? [];
130
+ for (const entry of entries) {
131
+ const command = entry.command ?? '';
132
+ const match = SCRIPT_PATH_RE.exec(command);
133
+ if (match === null)
134
+ continue;
135
+ const basename = match[1] ?? match[2] ?? match[3];
136
+ if (basename === undefined)
137
+ continue;
138
+ const shimTarget = lookupShimTarget(basename);
139
+ findings.push({
140
+ block,
141
+ command,
142
+ ...(basename ? { matchedShimBasename: basename } : {}),
143
+ ...(shimTarget?.replacedBy !== undefined ? { suggestedReplacement: shimTarget.replacedBy } : {}),
144
+ });
145
+ }
146
+ }
147
+ if (findings.length === 0) {
148
+ return {
149
+ ok: true,
150
+ warn: false,
151
+ message: 'settings-hooks-audit: no hardcoded ~/.claude/scripts/ paths in hook entries',
152
+ findings: [],
153
+ };
154
+ }
155
+ const shimMatches = findings.filter((f) => f.suggestedReplacement !== undefined).length;
156
+ return {
157
+ ok: false,
158
+ warn: true,
159
+ message: `settings-hooks-audit: ${findings.length} hook entries reference hardcoded ~/.claude/scripts/<n>${shimMatches > 0 ? `, ${shimMatches} have an olam-flywheel replacement available` : ''}`,
160
+ findings,
161
+ };
162
+ }
163
+ //# sourceMappingURL=flywheel-probes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flywheel-probes.js","sourceRoot":"","sources":["../../src/lib/flywheel-probes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * host-side-proxy.ts — Phase A A3 of olam-k3d-on-mac-substrate-decision.
3
+ *
4
+ * Manages the host-side `tecnativa/docker-socket-proxy` container that
5
+ * fronts the operator's docker daemon on macOS+colima+virtiofs. Wraps
6
+ * `docker compose -f <yaml> {up,down,ps}` calls with idempotent semantics.
7
+ *
8
+ * Background — round-4 wave-2 R4-W2-F: an in-cluster docker-socket-proxy
9
+ * Pod would itself need a hostPath bind mount of /var/run/docker.sock and
10
+ * hit virtiofs ENOTSUP. The proxy MUST live on the operator's docker
11
+ * daemon (sibling to k3d), not inside the k3d cluster. This helper is
12
+ * what `olam upgrade` Step 0.7 calls to ensure that sibling container
13
+ * is running before host-cp pods reference the in-cluster ExternalName
14
+ * Service (packages/host-cp/k8s/manifests/docker-socket-proxy/60-service.yaml).
15
+ *
16
+ * The compose yaml managed here:
17
+ * packages/host-cp/k8s/host-side/docker-socket-proxy.compose.yaml
18
+ *
19
+ * Resolution: shipped in the npm tarball via packages/cli/package.json's
20
+ * `files` glob; resolved at runtime relative to the CLI's install location
21
+ * via resolveHostSideProxyComposePath (read by callers; this module
22
+ * accepts the path as a dep for testability).
23
+ *
24
+ * Idempotency: `docker compose up -d` is idempotent at the docker level
25
+ * (running container → no-op success). `docker compose down` removes
26
+ * the container even if absent. `ps` returns running/stopped/absent.
27
+ *
28
+ * D20 stdin-safe: this module never accepts secret values as argv; the
29
+ * proxy container has no secrets. Plain `docker compose` invocation.
30
+ */
31
+ import { spawnSync } from 'node:child_process';
32
+ export type ProxyStatus = 'running' | 'stopped' | 'unknown';
33
+ export interface HostSideProxyDeps {
34
+ /** Spawn wrapper for testability. Defaults to node:child_process spawnSync. */
35
+ readonly spawnSyncImpl?: typeof spawnSync;
36
+ /** DOCKER_CONTEXT env override (e.g. "colima"). When unset, inherits process env. */
37
+ readonly dockerContext?: string;
38
+ }
39
+ export interface HostSideProxyResult {
40
+ readonly ok: boolean;
41
+ /** Structured remediation string surfaced when ok=false. */
42
+ readonly reason?: string;
43
+ }
44
+ export interface HostSideProxyStatusResult {
45
+ readonly ok: boolean;
46
+ readonly status: ProxyStatus;
47
+ readonly reason?: string;
48
+ }
49
+ /**
50
+ * Start the host-side proxy container. Idempotent: running container
51
+ * → no-op success.
52
+ *
53
+ * @param composePath Absolute path to docker-socket-proxy.compose.yaml.
54
+ */
55
+ export declare function startHostSideProxy(composePath: string, deps?: HostSideProxyDeps): HostSideProxyResult;
56
+ /**
57
+ * Stop the host-side proxy container. Idempotent: absent container
58
+ * → no-op success.
59
+ */
60
+ export declare function stopHostSideProxy(composePath: string, deps?: HostSideProxyDeps): HostSideProxyResult;
61
+ /**
62
+ * Status of the host-side proxy container. Returns 'running' / 'stopped' /
63
+ * 'unknown' based on `docker compose ps --format json`. 'unknown' indicates
64
+ * a probe failure (plugin absent, daemon unreachable, malformed output).
65
+ */
66
+ export declare function statusHostSideProxy(composePath: string, deps?: HostSideProxyDeps): HostSideProxyStatusResult;
67
+ //# sourceMappingURL=host-side-proxy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-side-proxy.d.ts","sourceRoot":"","sources":["../../src/lib/host-side-proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAE5D,MAAM,WAAW,iBAAiB;IAChC,+EAA+E;IAC/E,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,SAAS,CAAC;IAC1C,qFAAqF;IACrF,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,4DAA4D;IAC5D,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AA6BD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,EACnB,IAAI,GAAE,iBAAsB,GAC3B,mBAAmB,CA4BrB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,MAAM,EACnB,IAAI,GAAE,iBAAsB,GAC3B,mBAAmB,CAyBrB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,EACnB,IAAI,GAAE,iBAAsB,GAC3B,yBAAyB,CAiD3B"}
@@ -0,0 +1,177 @@
1
+ /**
2
+ * host-side-proxy.ts — Phase A A3 of olam-k3d-on-mac-substrate-decision.
3
+ *
4
+ * Manages the host-side `tecnativa/docker-socket-proxy` container that
5
+ * fronts the operator's docker daemon on macOS+colima+virtiofs. Wraps
6
+ * `docker compose -f <yaml> {up,down,ps}` calls with idempotent semantics.
7
+ *
8
+ * Background — round-4 wave-2 R4-W2-F: an in-cluster docker-socket-proxy
9
+ * Pod would itself need a hostPath bind mount of /var/run/docker.sock and
10
+ * hit virtiofs ENOTSUP. The proxy MUST live on the operator's docker
11
+ * daemon (sibling to k3d), not inside the k3d cluster. This helper is
12
+ * what `olam upgrade` Step 0.7 calls to ensure that sibling container
13
+ * is running before host-cp pods reference the in-cluster ExternalName
14
+ * Service (packages/host-cp/k8s/manifests/docker-socket-proxy/60-service.yaml).
15
+ *
16
+ * The compose yaml managed here:
17
+ * packages/host-cp/k8s/host-side/docker-socket-proxy.compose.yaml
18
+ *
19
+ * Resolution: shipped in the npm tarball via packages/cli/package.json's
20
+ * `files` glob; resolved at runtime relative to the CLI's install location
21
+ * via resolveHostSideProxyComposePath (read by callers; this module
22
+ * accepts the path as a dep for testability).
23
+ *
24
+ * Idempotency: `docker compose up -d` is idempotent at the docker level
25
+ * (running container → no-op success). `docker compose down` removes
26
+ * the container even if absent. `ps` returns running/stopped/absent.
27
+ *
28
+ * D20 stdin-safe: this module never accepts secret values as argv; the
29
+ * proxy container has no secrets. Plain `docker compose` invocation.
30
+ */
31
+ import { spawnSync } from 'node:child_process';
32
+ /**
33
+ * Probe `docker compose version`. Returns ok=false with remediation when
34
+ * the compose plugin is absent. Required preflight before up/down/ps.
35
+ */
36
+ function probeDockerCompose(deps) {
37
+ const spawn = deps.spawnSyncImpl ?? spawnSync;
38
+ const env = deps.dockerContext !== undefined
39
+ ? { ...process.env, DOCKER_CONTEXT: deps.dockerContext }
40
+ : process.env;
41
+ const r = spawn('docker', ['compose', 'version'], {
42
+ env,
43
+ encoding: 'utf8',
44
+ timeout: 5000,
45
+ });
46
+ if (r.error !== undefined || r.status !== 0) {
47
+ return {
48
+ ok: false,
49
+ reason: 'docker compose plugin not found. Install via `brew install docker-compose` ' +
50
+ 'or the Docker Desktop installer. The legacy `docker-compose` binary is NOT ' +
51
+ 'a substitute — olam requires `docker compose` (v2 plugin) for the host-side ' +
52
+ 'docker-socket-proxy lifecycle on macOS.',
53
+ };
54
+ }
55
+ return { ok: true };
56
+ }
57
+ /**
58
+ * Start the host-side proxy container. Idempotent: running container
59
+ * → no-op success.
60
+ *
61
+ * @param composePath Absolute path to docker-socket-proxy.compose.yaml.
62
+ */
63
+ export function startHostSideProxy(composePath, deps = {}) {
64
+ const probe = probeDockerCompose(deps);
65
+ if (!probe.ok) {
66
+ return probe;
67
+ }
68
+ const spawn = deps.spawnSyncImpl ?? spawnSync;
69
+ const env = deps.dockerContext !== undefined
70
+ ? { ...process.env, DOCKER_CONTEXT: deps.dockerContext }
71
+ : process.env;
72
+ const r = spawn('docker', ['compose', '-f', composePath, 'up', '-d'], {
73
+ env,
74
+ encoding: 'utf8',
75
+ timeout: 60_000,
76
+ });
77
+ if (r.error !== undefined) {
78
+ return { ok: false, reason: `docker compose up failed: ${r.error.message}` };
79
+ }
80
+ if (r.status !== 0) {
81
+ const stderr = (r.stderr ?? '').toString().trim();
82
+ return {
83
+ ok: false,
84
+ reason: `docker compose -f ${composePath} up -d exited ${r.status ?? 'null'}: ${stderr || '(no stderr)'}. ` +
85
+ `Check: \`docker context ls\` shows colima active; \`docker info\` succeeds; the compose ` +
86
+ `file exists at the printed path.`,
87
+ };
88
+ }
89
+ return { ok: true };
90
+ }
91
+ /**
92
+ * Stop the host-side proxy container. Idempotent: absent container
93
+ * → no-op success.
94
+ */
95
+ export function stopHostSideProxy(composePath, deps = {}) {
96
+ const probe = probeDockerCompose(deps);
97
+ if (!probe.ok) {
98
+ return probe;
99
+ }
100
+ const spawn = deps.spawnSyncImpl ?? spawnSync;
101
+ const env = deps.dockerContext !== undefined
102
+ ? { ...process.env, DOCKER_CONTEXT: deps.dockerContext }
103
+ : process.env;
104
+ const r = spawn('docker', ['compose', '-f', composePath, 'down'], {
105
+ env,
106
+ encoding: 'utf8',
107
+ timeout: 30_000,
108
+ });
109
+ if (r.error !== undefined) {
110
+ return { ok: false, reason: `docker compose down failed: ${r.error.message}` };
111
+ }
112
+ if (r.status !== 0) {
113
+ const stderr = (r.stderr ?? '').toString().trim();
114
+ return {
115
+ ok: false,
116
+ reason: `docker compose down exited ${r.status ?? 'null'}: ${stderr || '(no stderr)'}.`,
117
+ };
118
+ }
119
+ return { ok: true };
120
+ }
121
+ /**
122
+ * Status of the host-side proxy container. Returns 'running' / 'stopped' /
123
+ * 'unknown' based on `docker compose ps --format json`. 'unknown' indicates
124
+ * a probe failure (plugin absent, daemon unreachable, malformed output).
125
+ */
126
+ export function statusHostSideProxy(composePath, deps = {}) {
127
+ const probe = probeDockerCompose(deps);
128
+ if (!probe.ok) {
129
+ return { ok: false, status: 'unknown', reason: probe.reason };
130
+ }
131
+ const spawn = deps.spawnSyncImpl ?? spawnSync;
132
+ const env = deps.dockerContext !== undefined
133
+ ? { ...process.env, DOCKER_CONTEXT: deps.dockerContext }
134
+ : process.env;
135
+ const r = spawn('docker', ['compose', '-f', composePath, 'ps', '--format', 'json'], {
136
+ env,
137
+ encoding: 'utf8',
138
+ timeout: 10_000,
139
+ });
140
+ if (r.error !== undefined || r.status !== 0) {
141
+ return {
142
+ ok: false,
143
+ status: 'unknown',
144
+ reason: `docker compose ps failed: ${(r.stderr ?? r.error?.message ?? '(no detail)').toString().trim()}`,
145
+ };
146
+ }
147
+ const stdout = (r.stdout ?? '').toString().trim();
148
+ if (stdout === '' || stdout === '[]') {
149
+ return { ok: true, status: 'stopped' };
150
+ }
151
+ // Compose v2 `--format json` emits either a JSON array OR newline-delimited
152
+ // JSON objects depending on plugin version. Handle both.
153
+ try {
154
+ const parsed = stdout.startsWith('[')
155
+ ? JSON.parse(stdout)
156
+ : stdout.split('\n').filter((line) => line.trim() !== '').map((line) => JSON.parse(line));
157
+ if (!Array.isArray(parsed) || parsed.length === 0) {
158
+ return { ok: true, status: 'stopped' };
159
+ }
160
+ const allRunning = parsed.every((entry) => {
161
+ if (typeof entry !== 'object' || entry === null) {
162
+ return false;
163
+ }
164
+ const state = entry.State;
165
+ return typeof state === 'string' && state.toLowerCase() === 'running';
166
+ });
167
+ return { ok: true, status: allRunning ? 'running' : 'stopped' };
168
+ }
169
+ catch {
170
+ return {
171
+ ok: false,
172
+ status: 'unknown',
173
+ reason: 'docker compose ps emitted unparseable JSON; check `docker compose version`.',
174
+ };
175
+ }
176
+ }
177
+ //# sourceMappingURL=host-side-proxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-side-proxy.js","sourceRoot":"","sources":["../../src/lib/host-side-proxy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Bash shim generator for olam-flywheel backwards-compat layer.
3
+ *
4
+ * Generates deterministic bash shims that translate the positional-arg
5
+ * invocation chain skills currently use (e.g.
6
+ * `bash ~/.claude/scripts/emit-breadcrumb.sh "plan-hard" "<plan-slug>" ...`)
7
+ * into the new named-flag CLI:
8
+ * `olam flywheel emit-breadcrumb --skill plan-hard --plan <plan-slug> ...`
9
+ *
10
+ * Each shim:
11
+ * 1. Hardens PATH (adds common olam install locations).
12
+ * 2. Checks olam is reachable; exits 127 with actionable message if not.
13
+ * 3. Translates positional args to named flags per the script's spec.
14
+ * 4. exec's the olam CLI (passes signal handling + exit code through).
15
+ *
16
+ * Plan reference: docs/plans/olam-flywheel-cli-namespace/phase-a-tasks.md § A14
17
+ * Closes part of K1 OQ21a (positional → named-flag translation in shims).
18
+ */
19
+ export interface ShimArg {
20
+ /** Positional index (1-based, matching bash `$1`, `$2`, …). */
21
+ position: number;
22
+ /** Flag name (e.g. `skill` → `--skill`). */
23
+ flag: string;
24
+ /** Required positional → `"$N"`; optional positional → `${N:+--flag "$N"}`. */
25
+ required: boolean;
26
+ }
27
+ export interface ShimSpec {
28
+ /** Basename of the shim file under ~/.claude/scripts/. */
29
+ basename: string;
30
+ /** Subcommand under olam to exec (e.g. "flywheel emit-breadcrumb"). */
31
+ olamSubcommand: string;
32
+ /** Minimum positional arg count required (rejected with usage message if fewer). */
33
+ minPositional: number;
34
+ /** Argument translation table (positional → named flag). */
35
+ args: ShimArg[];
36
+ /** Inline usage string for the "Usage:" stderr message. */
37
+ usage: string;
38
+ }
39
+ /**
40
+ * Registry of shim specs. Only includes scripts that chain skill prose
41
+ * actively invokes via bash (the others are Python imports, no bash shim
42
+ * needed). Extend this as more chain-skill invocation sites are migrated.
43
+ */
44
+ export declare const SHIM_SPECS: readonly ShimSpec[];
45
+ /**
46
+ * Generate the bash shim source for a given spec. Deterministic output —
47
+ * same input always produces the same bytes (golden-fixture-friendly).
48
+ */
49
+ export declare function generateShim(spec: ShimSpec): string;
50
+ export declare function lookupShimSpec(basename: string): ShimSpec | undefined;
51
+ //# sourceMappingURL=shim-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shim-generator.d.ts","sourceRoot":"","sources":["../../src/lib/shim-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,WAAW,OAAO;IACtB,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,+EAA+E;IAC/E,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,0DAA0D;IAC1D,QAAQ,EAAE,MAAM,CAAC;IACjB,uEAAuE;IACvE,cAAc,EAAE,MAAM,CAAC;IACvB,oFAAoF;IACpF,aAAa,EAAE,MAAM,CAAC;IACtB,4DAA4D;IAC5D,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,2DAA2D;IAC3D,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,eAAO,MAAM,UAAU,EAAE,SAAS,QAAQ,EAkBxC,CAAC;AAEH;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAoCnD;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAErE"}