@pleri/olam-cli 0.1.7

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 (196) hide show
  1. package/dist/__tests__/auth-status.test.d.ts +2 -0
  2. package/dist/__tests__/auth-status.test.d.ts.map +1 -0
  3. package/dist/__tests__/auth-status.test.js +290 -0
  4. package/dist/__tests__/auth-status.test.js.map +1 -0
  5. package/dist/__tests__/auth-upgrade.test.d.ts +9 -0
  6. package/dist/__tests__/auth-upgrade.test.d.ts.map +1 -0
  7. package/dist/__tests__/auth-upgrade.test.js +161 -0
  8. package/dist/__tests__/auth-upgrade.test.js.map +1 -0
  9. package/dist/__tests__/create-app-urls.test.d.ts +2 -0
  10. package/dist/__tests__/create-app-urls.test.d.ts.map +1 -0
  11. package/dist/__tests__/create-app-urls.test.js +102 -0
  12. package/dist/__tests__/create-app-urls.test.js.map +1 -0
  13. package/dist/__tests__/enter.test.d.ts +2 -0
  14. package/dist/__tests__/enter.test.d.ts.map +1 -0
  15. package/dist/__tests__/enter.test.js +90 -0
  16. package/dist/__tests__/enter.test.js.map +1 -0
  17. package/dist/__tests__/host-cp-gh-token.test.d.ts +9 -0
  18. package/dist/__tests__/host-cp-gh-token.test.d.ts.map +1 -0
  19. package/dist/__tests__/host-cp-gh-token.test.js +119 -0
  20. package/dist/__tests__/host-cp-gh-token.test.js.map +1 -0
  21. package/dist/__tests__/host-cp.test.d.ts +9 -0
  22. package/dist/__tests__/host-cp.test.d.ts.map +1 -0
  23. package/dist/__tests__/host-cp.test.js +254 -0
  24. package/dist/__tests__/host-cp.test.js.map +1 -0
  25. package/dist/__tests__/keys.test.d.ts +9 -0
  26. package/dist/__tests__/keys.test.d.ts.map +1 -0
  27. package/dist/__tests__/keys.test.js +145 -0
  28. package/dist/__tests__/keys.test.js.map +1 -0
  29. package/dist/__tests__/logs.test.d.ts +9 -0
  30. package/dist/__tests__/logs.test.d.ts.map +1 -0
  31. package/dist/__tests__/logs.test.js +124 -0
  32. package/dist/__tests__/logs.test.js.map +1 -0
  33. package/dist/__tests__/ps.test.d.ts +2 -0
  34. package/dist/__tests__/ps.test.d.ts.map +1 -0
  35. package/dist/__tests__/ps.test.js +172 -0
  36. package/dist/__tests__/ps.test.js.map +1 -0
  37. package/dist/__tests__/status-app-urls.test.d.ts +2 -0
  38. package/dist/__tests__/status-app-urls.test.d.ts.map +1 -0
  39. package/dist/__tests__/status-app-urls.test.js +125 -0
  40. package/dist/__tests__/status-app-urls.test.js.map +1 -0
  41. package/dist/__tests__/upgrade.test.d.ts +9 -0
  42. package/dist/__tests__/upgrade.test.d.ts.map +1 -0
  43. package/dist/__tests__/upgrade.test.js +262 -0
  44. package/dist/__tests__/upgrade.test.js.map +1 -0
  45. package/dist/commands/__tests__/carry-uncommitted.test.d.ts +14 -0
  46. package/dist/commands/__tests__/carry-uncommitted.test.d.ts.map +1 -0
  47. package/dist/commands/__tests__/carry-uncommitted.test.js +83 -0
  48. package/dist/commands/__tests__/carry-uncommitted.test.js.map +1 -0
  49. package/dist/commands/__tests__/openHostCpUrl.test.d.ts +2 -0
  50. package/dist/commands/__tests__/openHostCpUrl.test.d.ts.map +1 -0
  51. package/dist/commands/__tests__/openHostCpUrl.test.js +63 -0
  52. package/dist/commands/__tests__/openHostCpUrl.test.js.map +1 -0
  53. package/dist/commands/__tests__/refresh.test.d.ts +13 -0
  54. package/dist/commands/__tests__/refresh.test.d.ts.map +1 -0
  55. package/dist/commands/__tests__/refresh.test.js +170 -0
  56. package/dist/commands/__tests__/refresh.test.js.map +1 -0
  57. package/dist/commands/auth-status.d.ts +43 -0
  58. package/dist/commands/auth-status.d.ts.map +1 -0
  59. package/dist/commands/auth-status.js +208 -0
  60. package/dist/commands/auth-status.js.map +1 -0
  61. package/dist/commands/auth-upgrade.d.ts +47 -0
  62. package/dist/commands/auth-upgrade.d.ts.map +1 -0
  63. package/dist/commands/auth-upgrade.js +277 -0
  64. package/dist/commands/auth-upgrade.js.map +1 -0
  65. package/dist/commands/auth.d.ts +16 -0
  66. package/dist/commands/auth.d.ts.map +1 -0
  67. package/dist/commands/auth.js +283 -0
  68. package/dist/commands/auth.js.map +1 -0
  69. package/dist/commands/create.d.ts +8 -0
  70. package/dist/commands/create.d.ts.map +1 -0
  71. package/dist/commands/create.js +512 -0
  72. package/dist/commands/create.js.map +1 -0
  73. package/dist/commands/crystallize.d.ts +8 -0
  74. package/dist/commands/crystallize.d.ts.map +1 -0
  75. package/dist/commands/crystallize.js +101 -0
  76. package/dist/commands/crystallize.js.map +1 -0
  77. package/dist/commands/destroy.d.ts +6 -0
  78. package/dist/commands/destroy.d.ts.map +1 -0
  79. package/dist/commands/destroy.js +54 -0
  80. package/dist/commands/destroy.js.map +1 -0
  81. package/dist/commands/dispatch.d.ts +9 -0
  82. package/dist/commands/dispatch.d.ts.map +1 -0
  83. package/dist/commands/dispatch.js +94 -0
  84. package/dist/commands/dispatch.js.map +1 -0
  85. package/dist/commands/enter.d.ts +63 -0
  86. package/dist/commands/enter.d.ts.map +1 -0
  87. package/dist/commands/enter.js +206 -0
  88. package/dist/commands/enter.js.map +1 -0
  89. package/dist/commands/host-cp.d.ts +191 -0
  90. package/dist/commands/host-cp.d.ts.map +1 -0
  91. package/dist/commands/host-cp.js +797 -0
  92. package/dist/commands/host-cp.js.map +1 -0
  93. package/dist/commands/init.d.ts +9 -0
  94. package/dist/commands/init.d.ts.map +1 -0
  95. package/dist/commands/init.js +143 -0
  96. package/dist/commands/init.js.map +1 -0
  97. package/dist/commands/install.d.ts +22 -0
  98. package/dist/commands/install.d.ts.map +1 -0
  99. package/dist/commands/install.js +203 -0
  100. package/dist/commands/install.js.map +1 -0
  101. package/dist/commands/keys.d.ts +26 -0
  102. package/dist/commands/keys.d.ts.map +1 -0
  103. package/dist/commands/keys.js +151 -0
  104. package/dist/commands/keys.js.map +1 -0
  105. package/dist/commands/lanes.d.ts +18 -0
  106. package/dist/commands/lanes.d.ts.map +1 -0
  107. package/dist/commands/lanes.js +122 -0
  108. package/dist/commands/lanes.js.map +1 -0
  109. package/dist/commands/list.d.ts +6 -0
  110. package/dist/commands/list.d.ts.map +1 -0
  111. package/dist/commands/list.js +39 -0
  112. package/dist/commands/list.js.map +1 -0
  113. package/dist/commands/logs.d.ts +38 -0
  114. package/dist/commands/logs.d.ts.map +1 -0
  115. package/dist/commands/logs.js +177 -0
  116. package/dist/commands/logs.js.map +1 -0
  117. package/dist/commands/observe.d.ts +9 -0
  118. package/dist/commands/observe.d.ts.map +1 -0
  119. package/dist/commands/observe.js +34 -0
  120. package/dist/commands/observe.js.map +1 -0
  121. package/dist/commands/policy-check.d.ts +14 -0
  122. package/dist/commands/policy-check.d.ts.map +1 -0
  123. package/dist/commands/policy-check.js +76 -0
  124. package/dist/commands/policy-check.js.map +1 -0
  125. package/dist/commands/pr.d.ts +17 -0
  126. package/dist/commands/pr.d.ts.map +1 -0
  127. package/dist/commands/pr.js +148 -0
  128. package/dist/commands/pr.js.map +1 -0
  129. package/dist/commands/ps.d.ts +25 -0
  130. package/dist/commands/ps.d.ts.map +1 -0
  131. package/dist/commands/ps.js +164 -0
  132. package/dist/commands/ps.js.map +1 -0
  133. package/dist/commands/refresh-helpers.d.ts +25 -0
  134. package/dist/commands/refresh-helpers.d.ts.map +1 -0
  135. package/dist/commands/refresh-helpers.js +56 -0
  136. package/dist/commands/refresh-helpers.js.map +1 -0
  137. package/dist/commands/refresh.d.ts +23 -0
  138. package/dist/commands/refresh.d.ts.map +1 -0
  139. package/dist/commands/refresh.js +237 -0
  140. package/dist/commands/refresh.js.map +1 -0
  141. package/dist/commands/status.d.ts +6 -0
  142. package/dist/commands/status.d.ts.map +1 -0
  143. package/dist/commands/status.js +51 -0
  144. package/dist/commands/status.js.map +1 -0
  145. package/dist/commands/upgrade.d.ts +67 -0
  146. package/dist/commands/upgrade.d.ts.map +1 -0
  147. package/dist/commands/upgrade.js +358 -0
  148. package/dist/commands/upgrade.js.map +1 -0
  149. package/dist/commands/workspace.d.ts +23 -0
  150. package/dist/commands/workspace.d.ts.map +1 -0
  151. package/dist/commands/workspace.js +198 -0
  152. package/dist/commands/workspace.js.map +1 -0
  153. package/dist/commands/world-snapshot.d.ts +18 -0
  154. package/dist/commands/world-snapshot.d.ts.map +1 -0
  155. package/dist/commands/world-snapshot.js +327 -0
  156. package/dist/commands/world-snapshot.js.map +1 -0
  157. package/dist/context.d.ts +26 -0
  158. package/dist/context.d.ts.map +1 -0
  159. package/dist/context.js +51 -0
  160. package/dist/context.js.map +1 -0
  161. package/dist/index.d.ts +9 -0
  162. package/dist/index.d.ts.map +1 -0
  163. package/dist/index.js +18007 -0
  164. package/dist/index.js.map +1 -0
  165. package/dist/mcp-server.js +32236 -0
  166. package/dist/output.d.ts +10 -0
  167. package/dist/output.d.ts.map +1 -0
  168. package/dist/output.js +31 -0
  169. package/dist/output.js.map +1 -0
  170. package/host-cp/compose.yaml +126 -0
  171. package/host-cp/src/auth-secret-hint.mjs +45 -0
  172. package/host-cp/src/auth.mjs +155 -0
  173. package/host-cp/src/compose-worlds-sources.mjs +170 -0
  174. package/host-cp/src/container-secret-fetcher.mjs +163 -0
  175. package/host-cp/src/docker-events.mjs +184 -0
  176. package/host-cp/src/local-worlds-source.mjs +83 -0
  177. package/host-cp/src/plan-orchestrator.mjs +829 -0
  178. package/host-cp/src/plan-progress.mjs +282 -0
  179. package/host-cp/src/pr-cache.mjs +201 -0
  180. package/host-cp/src/pr-merge-poller.mjs +154 -0
  181. package/host-cp/src/process-poller.mjs +250 -0
  182. package/host-cp/src/proxy.mjs +245 -0
  183. package/host-cp/src/pylon-worlds-source.mjs +68 -0
  184. package/host-cp/src/redact.mjs +67 -0
  185. package/host-cp/src/secret-cache.mjs +104 -0
  186. package/host-cp/src/server.mjs +2215 -0
  187. package/host-cp/src/sse-gate.mjs +117 -0
  188. package/host-cp/src/version-status.mjs +209 -0
  189. package/host-cp/src/workspace-catalog.mjs +149 -0
  190. package/host-cp/src/world-names-store.mjs +176 -0
  191. package/host-cp/src/world-pr-state.mjs +97 -0
  192. package/host-cp/src/world-progress.mjs +322 -0
  193. package/host-cp/src/world-tunnel-manager.mjs +288 -0
  194. package/host-cp/src/worlds-db-source.mjs +191 -0
  195. package/host-cp/src/worlds-source.mjs +59 -0
  196. package/package.json +38 -0
@@ -0,0 +1,191 @@
1
+ /**
2
+ * Phase F-2-D (D1+D2+D3): `olam host-cp <subcommand>` — operator-facing
3
+ * lifecycle for the host CP container.
4
+ *
5
+ * Subcommands:
6
+ * start — generate token, audit port 19000, docker compose up, write PID
7
+ * stop — docker compose down, remove PID + token
8
+ * status — diagnostic probe (with optional --json flag)
9
+ *
10
+ * Wraps the compose stack at `packages/host-cp/compose.yaml`. Token
11
+ * lives at `~/.olam/host-cp.token` (chmod 600). PID file at
12
+ * `~/.olam/host-cp.pid`. Both are operator-state files, not repo state.
13
+ */
14
+ import type { Command } from 'commander';
15
+ /**
16
+ * Path to the operator-state shared auth-service secret.
17
+ *
18
+ * Created by `olam auth up` when the auth-service container first
19
+ * starts. Both the auth-service container and host-cp container must
20
+ * use the same secret value as their `X-Olam-Secret` so host-cp's
21
+ * `/credentials/*` calls authenticate correctly.
22
+ *
23
+ * Honors OLAM_HOME for tests (matches `olamHome()`).
24
+ */
25
+ export declare function authSecretPath(): string;
26
+ /**
27
+ * Read the shared auth-service secret from `~/.olam/auth-secret`.
28
+ *
29
+ * Returns null when the file is missing (auth-service was never started
30
+ * or the file was deleted). Returns null instead of throwing because
31
+ * `host-cp start` should still bring host-cp up — but it then logs a
32
+ * loud warning so the operator notices that credential surfaces will
33
+ * 401 until they run `olam auth up` to regenerate the secret.
34
+ *
35
+ * Empty/whitespace files are treated as "not set" (null) — a 0-byte
36
+ * file would otherwise round-trip to compose as an empty env var,
37
+ * which is exactly the silent-failure mode this whole helper exists
38
+ * to prevent.
39
+ */
40
+ export declare function readAuthSecret(): string | null;
41
+ export interface R2Credentials {
42
+ account_id: string;
43
+ bucket: string;
44
+ access_key_id: string;
45
+ secret_access_key: string;
46
+ public_url_base: string;
47
+ }
48
+ /** Path to `~/.olam/r2-credentials.json`. Honors OLAM_HOME for tests. */
49
+ export declare function r2CredentialsPath(): string;
50
+ /**
51
+ * Read R2 credentials from `~/.olam/r2-credentials.json`.
52
+ *
53
+ * Returns null when the file is missing — callers should print a clear
54
+ * "operator must configure" error rather than throwing. Returns null for
55
+ * malformed JSON so callers can surface a useful message instead of a
56
+ * raw parse stack trace.
57
+ */
58
+ export declare function readR2Credentials(): R2Credentials | null;
59
+ /**
60
+ * Generate a fresh 32-byte hex token and write it to `tokenPath()` with
61
+ * mode 0600. Creates the parent directory if missing. Idempotent: if a
62
+ * token already exists, this overwrites it (each `start` regenerates).
63
+ */
64
+ export declare function writeToken(): string;
65
+ export declare function readToken(): string | null;
66
+ export declare function removeToken(): boolean;
67
+ export declare function writePid(pid: number): void;
68
+ export declare function readPid(): number | null;
69
+ export declare function removePid(): boolean;
70
+ interface ContainerInfo {
71
+ readonly id: string;
72
+ readonly name: string;
73
+ readonly state: string;
74
+ readonly status: string;
75
+ }
76
+ /**
77
+ * Find the host-cp container by name. Returns null if absent.
78
+ */
79
+ export declare function findHostCpContainer(): Promise<ContainerInfo | null>;
80
+ /**
81
+ * Phase host-cp-reliability: Probe for a running host CP, supporting
82
+ * both bare-node (process on host) and container deployments.
83
+ *
84
+ * Strategy:
85
+ * 1. HTTP probe: try http://127.0.0.1:19000/api/bootstrap. If the
86
+ * token file exists and the endpoint returns 200, host-cp is running.
87
+ * Mode is 'bare' if no docker container found, 'container' otherwise.
88
+ * 2. Docker fallback: if HTTP probe fails, look for the docker container.
89
+ * If found+running, probe its port.
90
+ *
91
+ * Returns null if both fail, along with probe diagnostics in the
92
+ * returned ProbeFailure for fail-loud error messages.
93
+ *
94
+ * @returns {Promise<{ url: string; mode: 'bare' | 'container' } | null>}
95
+ * Result on success, null on failure.
96
+ */
97
+ export declare function probeHostCp(): Promise<{
98
+ url: string;
99
+ mode: 'bare' | 'container';
100
+ } | null>;
101
+ /**
102
+ * Gather probe failure diagnostics for fail-loud error messages.
103
+ * Returns structured info about what was tried and why it failed.
104
+ */
105
+ export declare function gatherProbeFailureDiagnostics(): Promise<{
106
+ bootstrapStatus: string;
107
+ containerStatus: string;
108
+ }>;
109
+ export interface ComposeResult {
110
+ readonly ok: boolean;
111
+ readonly stdout: string;
112
+ readonly stderr: string;
113
+ }
114
+ export declare function runCompose(args: readonly string[], composeFile: string, extraEnv?: Record<string, string>): ComposeResult;
115
+ /**
116
+ * Build the extra env vars to pass to `docker compose up`. Pure helper
117
+ * extracted so the env-merge contract is unit-testable without spawning
118
+ * docker. Returns an object with only the keys we set; absent values
119
+ * are omitted so process.env defaults can win when the secret file is
120
+ * missing (and the boot warning surfaces the gap).
121
+ *
122
+ * Exported for tests.
123
+ */
124
+ export declare function buildComposeEnv(authSecret: string | null, ghToken?: string | null): Record<string, string>;
125
+ /**
126
+ * Capture the operator's GitHub token by running `gh auth token` on the
127
+ * host. Returns the token string on success, null when gh is not installed
128
+ * or the operator is not authenticated.
129
+ *
130
+ * Never throws — callers that need a token should check for null and warn,
131
+ * but must not block host-cp from starting.
132
+ *
133
+ * Exported for tests.
134
+ */
135
+ export declare function captureGhToken(): string | null;
136
+ export declare function registerHostCp(program: Command): void;
137
+ /**
138
+ * Phase D6 (olam-dogfood-vision): open a Host CP URL in the operator's
139
+ * default browser.
140
+ *
141
+ * D-phase audit follow-up (HIGH-1): the helper now lives in
142
+ * `@olam/core/src/util/open-url.ts` so both this CLI and the MCP
143
+ * server can import it statically. Earlier shape duplicated the
144
+ * helper here and required @olam/mcp-server to dynamic-import the
145
+ * compiled CLI dist — fragile under stale-build conditions. Static
146
+ * import via @olam/core (already a declared dep on both packages)
147
+ * removes the cross-package dynamic-import + as-never-cast pattern.
148
+ *
149
+ * Re-exported here so existing callers don't need to update their
150
+ * imports.
151
+ */
152
+ export { openUrl as openHostCpUrl } from '@olam/core/src/util/open-url.js';
153
+ /**
154
+ * Phase C8 (olam-dogfood-vision): generic host-cp proxy caller for
155
+ * `/api/world/<id>/*` routes. Used by `olam lanes` subcommands to
156
+ * reach the per-world CP through host-cp's auth-injecting proxy
157
+ * (host-cp injects X-Olam-Secret server-side; the operator only
158
+ * sees the Bearer token).
159
+ *
160
+ * Returns the parsed JSON body on success, or {ok:false, error} on
161
+ * any failure (token missing, network error, non-2xx response).
162
+ *
163
+ * @param method
164
+ * @param worldId
165
+ * @param path the per-world CP path including leading slash, e.g.
166
+ * '/lanes', '/lanes/foo', '/lanes/foo/dispatch'
167
+ * @param body optional JSON body for POST/DELETE
168
+ */
169
+ export declare function callHostCpProxy(method: 'GET' | 'POST' | 'DELETE', worldId: string, path: string, body?: unknown): Promise<{
170
+ ok: true;
171
+ status: number;
172
+ data: unknown;
173
+ } | {
174
+ ok: false;
175
+ status: number;
176
+ error: string;
177
+ }>;
178
+ /**
179
+ * POST/DELETE the host-cp admin registry endpoint. Exported so other
180
+ * commands (create, destroy) can auto-register without re-implementing
181
+ * the fetch dance.
182
+ */
183
+ export declare function callHostCpRegistry(method: 'POST' | 'DELETE', body: {
184
+ id: string;
185
+ port?: number;
186
+ }): Promise<{
187
+ ok: boolean;
188
+ status: number;
189
+ error?: string;
190
+ }>;
191
+ //# sourceMappingURL=host-cp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-cp.d.ts","sourceRoot":"","sources":["../../src/commands/host-cp.ts"],"names":[],"mappings":"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"}