@sentropic/llm-mesh 0.34.0 → 0.35.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 (42) hide show
  1. package/README.md +36 -0
  2. package/dist/enrollment/contracts.d.ts +1 -1
  3. package/dist/enrollment/contracts.d.ts.map +1 -1
  4. package/dist/node/claude-code-cli-runner.d.ts +56 -0
  5. package/dist/node/claude-code-cli-runner.d.ts.map +1 -0
  6. package/dist/node/claude-code-cli-runner.js +590 -0
  7. package/dist/node/claude-code-cli-runner.js.map +1 -0
  8. package/dist/node/claude-code-cli-wire.d.ts +55 -0
  9. package/dist/node/claude-code-cli-wire.d.ts.map +1 -0
  10. package/dist/node/claude-code-cli-wire.js +144 -0
  11. package/dist/node/claude-code-cli-wire.js.map +1 -0
  12. package/dist/node/cli/bin.d.ts +3 -0
  13. package/dist/node/cli/bin.d.ts.map +1 -0
  14. package/dist/node/cli/bin.js +15 -0
  15. package/dist/node/cli/bin.js.map +1 -0
  16. package/dist/node/cli/enroll-args.d.ts +41 -0
  17. package/dist/node/cli/enroll-args.d.ts.map +1 -0
  18. package/dist/node/cli/enroll-args.js +118 -0
  19. package/dist/node/cli/enroll-args.js.map +1 -0
  20. package/dist/node/cli/enroll-cli.d.ts +4 -0
  21. package/dist/node/cli/enroll-cli.d.ts.map +1 -0
  22. package/dist/node/cli/enroll-cli.js +124 -0
  23. package/dist/node/cli/enroll-cli.js.map +1 -0
  24. package/dist/node/cli/enroll-command.d.ts +3 -0
  25. package/dist/node/cli/enroll-command.d.ts.map +1 -0
  26. package/dist/node/cli/enroll-command.js +87 -0
  27. package/dist/node/cli/enroll-command.js.map +1 -0
  28. package/dist/node/index.d.ts +6 -1
  29. package/dist/node/index.d.ts.map +1 -1
  30. package/dist/node/index.js +4 -1
  31. package/dist/node/index.js.map +1 -1
  32. package/dist/node/keyring/encrypted-file-keyring.d.ts +7 -1
  33. package/dist/node/keyring/encrypted-file-keyring.d.ts.map +1 -1
  34. package/dist/node/keyring/encrypted-file-keyring.js +46 -1
  35. package/dist/node/keyring/encrypted-file-keyring.js.map +1 -1
  36. package/dist/service/local-account-transport-service.js +1 -1
  37. package/dist/service/local-account-transport-service.js.map +1 -1
  38. package/dist/transport/claude-code-runtime-client.d.ts +24 -0
  39. package/dist/transport/claude-code-runtime-client.d.ts.map +1 -1
  40. package/dist/transport/claude-code-runtime-client.js +66 -3
  41. package/dist/transport/claude-code-runtime-client.js.map +1 -1
  42. package/package.json +4 -1
package/README.md CHANGED
@@ -140,6 +140,42 @@ const facade = createLlmMeshFacade({
140
140
  That migration option is only for pre-ownerScope local records. New enrollment
141
141
  always takes ownership from `StartEnrollmentInput.ownerScope`.
142
142
 
143
+ ## Device-flow enrollment CLI (`llm-mesh-enroll`)
144
+
145
+ The `llm-mesh-enroll` bin enrolls seat-billed device-flow accounts
146
+ (muse-code and codex, repeatable for N accounts) and probes muse-code seat
147
+ accounts. The keyring key is read from the environment variable named by
148
+ `--keyring-key-env` (never from argv): it must hold 32 bytes as 64 hex
149
+ chars or 44/43-char base64 (a human passphrase is refused). stdout carries
150
+ one JSON object per line, secrets never reach stdout, stderr, or error
151
+ messages. `probe` only supports `--provider muse-code` and verifies the
152
+ stored account provider before any token leaves the keyring; `--effort` is
153
+ validated for forward compatibility but not forwarded on the Muse Chat wire.
154
+
155
+ ```sh
156
+ export SENTROPIC_LLM_MESH_KEYRING_KEY # owner-held 32-byte key (hex), set in the environment
157
+
158
+ # 1. Enroll one account (repeat with a new --label per account).
159
+ # The owner approves each device login on accountscenter.meta.com.
160
+ llm-mesh-enroll enroll --provider muse-code \
161
+ --keyring-dir ~/.sentropic/immo-detection-keyring \
162
+ --owner-scope tenant-immo:signal-detection \
163
+ --label "Immo Detection 1" \
164
+ --keyring-key-env SENTROPIC_LLM_MESH_KEYRING_KEY
165
+
166
+ # 2. Probe the stored account (prints status plus latency plus usage only).
167
+ llm-mesh-enroll probe --provider muse-code \
168
+ --keyring-dir ~/.sentropic/immo-detection-keyring \
169
+ --account <account-id-from-enroll> \
170
+ --model muse-wonder-1.0 --effort low \
171
+ --keyring-key-env SENTROPIC_LLM_MESH_KEYRING_KEY
172
+ ```
173
+
174
+ A probe 402 means `billing_not_configured` on the non-seat `muse.ts`
175
+ direct-key path: re-enroll a seat account with the device flow above.
176
+ Exit codes: 0 ok, 2 usage, 3 enrollment failed, 4 account not found,
177
+ 5 keyring key, 6 probe failed, 7 billing not configured.
178
+
143
179
  ## Claude subscription enrollment (LOT 1)
144
180
 
145
181
  The facade supports browser PKCE enrollment and renewable Claude CLI credential
@@ -96,7 +96,7 @@ export interface EnrollmentProvider {
96
96
  resolve(credential: PreparedCredential): Promise<ResolvedProviderMetadata>;
97
97
  refresh(input: RefreshInput): Promise<PreparedCredential>;
98
98
  waitForCallback?(enrollmentId: string): Promise<CompletedEnrollment>;
99
- pollForCompletion?(enrollmentId: string): Promise<CompletedEnrollment>;
99
+ pollForCompletion?(enrollmentId: string, maxAttempts?: number): Promise<CompletedEnrollment>;
100
100
  cancel?(enrollmentId: string): Promise<void>;
101
101
  }
102
102
  //# sourceMappingURL=contracts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/enrollment/contracts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/enrollment/contracts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import type { AnthropicAdapterClient } from '../adapters.js';
2
+ import { ClaudeCodeRuntimeClient, type ClaudeCodeAccessProjection, type ClaudeCodeCliCapabilities, type ClaudeCodeCliEvent, type ClaudeCodeCliRequest, type ClaudeCodeCliRunner } from '../transport/claude-code-runtime-client.js';
3
+ export declare const CLAUDE_CODE_OAUTH_ENV_VAR = "CLAUDE_CODE_OAUTH_TOKEN";
4
+ export declare const CLAUDE_CODE_STREAM_PROTOCOL = "claude-code-stream-json-v1";
5
+ export declare const DEFAULT_CLAUDE_CODE_CLI_PATH = "claude";
6
+ export declare const DEFAULT_CLAUDE_CODE_EFFORT = "medium";
7
+ export declare const DEFAULT_CLAUDE_CODE_TIMEOUT_MS = 300000;
8
+ export declare const CLAUDE_CODE_RESULT_TIMEOUT_MS = 15000;
9
+ export interface NodeClaudeCodeCliRunnerOptions {
10
+ readonly cliPath?: string;
11
+ readonly effort?: string;
12
+ readonly systemPromptFile?: string;
13
+ readonly timeoutMs?: number;
14
+ readonly collectStderrBytes?: number;
15
+ }
16
+ export declare class NodeClaudeCodeCliRunner implements ClaudeCodeCliRunner {
17
+ private readonly cliPath;
18
+ private readonly effort;
19
+ private readonly systemPromptFile?;
20
+ private readonly timeoutMs;
21
+ private readonly stderrTailBytes;
22
+ constructor(options?: NodeClaudeCodeCliRunnerOptions);
23
+ run(input: {
24
+ access: ClaudeCodeAccessProjection;
25
+ request: ClaudeCodeCliRequest;
26
+ signal: AbortSignal;
27
+ }): AsyncIterable<ClaudeCodeCliEvent>;
28
+ private execute;
29
+ private consume;
30
+ }
31
+ export interface ClaudeSeatAnthropicClientOptions {
32
+ readonly capabilities: ClaudeCodeCliCapabilities;
33
+ readonly cliPath?: string;
34
+ readonly effort?: string;
35
+ readonly systemPromptFile?: string;
36
+ readonly timeoutMs?: number;
37
+ readonly fallback?: AnthropicAdapterClient;
38
+ readonly now?: () => number;
39
+ }
40
+ /** Host capability attestation for a locally qualified `claude` CLI. */
41
+ export interface ClaudeCodeCliProbeOptions {
42
+ readonly cliPath?: string;
43
+ readonly source: string;
44
+ readonly qualificationRef: string;
45
+ readonly timeoutMs?: number;
46
+ }
47
+ /** Probe `claude --version` and `claude --help` with a token-free env; never runs a workload. */
48
+ export declare const probeClaudeCodeCliCapabilities: (options: ClaudeCodeCliProbeOptions) => Promise<ClaudeCodeCliCapabilities>;
49
+ /**
50
+ * Factory for the consumer: builds the `clients.anthropic` runtime client
51
+ * over a dedicated Claude seat. Wire with
52
+ * `createDefaultProviderAdapters({ anthropic })`.
53
+ */
54
+ export declare const createClaudeSeatAnthropicClient: (options: ClaudeSeatAnthropicClientOptions) => ClaudeCodeRuntimeClient;
55
+ export type { ClaudeCodeAccessProjection, ClaudeCodeCliCapabilities, ClaudeCodeCliContent, ClaudeCodeCliEvent, ClaudeCodeCliRequest, ClaudeCodeCliRunner, } from '../transport/claude-code-runtime-client.js';
56
+ //# sourceMappingURL=claude-code-cli-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-code-cli-runner.d.ts","sourceRoot":"","sources":["../../src/node/claude-code-cli-runner.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAEL,uBAAuB,EACvB,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,EAC9B,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACzB,MAAM,4CAA4C,CAAC;AAIpD,eAAO,MAAM,yBAAyB,4BAA4B,CAAC;AACnE,eAAO,MAAM,2BAA2B,+BAA+B,CAAC;AACxE,eAAO,MAAM,4BAA4B,WAAW,CAAC;AACrD,eAAO,MAAM,0BAA0B,WAAW,CAAC;AACnD,eAAO,MAAM,8BAA8B,SAAU,CAAC;AACtD,eAAO,MAAM,6BAA6B,QAAS,CAAC;AAwBpD,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACtC;AA2ID,qBAAa,uBAAwB,YAAW,mBAAmB;IACjE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;gBAE7B,OAAO,GAAE,8BAAmC;IAyBxD,GAAG,CAAC,KAAK,EAAE;QACT,MAAM,EAAE,0BAA0B,CAAC;QAAC,OAAO,EAAE,oBAAoB,CAAC;QAAC,MAAM,EAAE,WAAW,CAAC;KACxF,GAAG,aAAa,CAAC,kBAAkB,CAAC;YAMtB,OAAO;YAiFP,OAAO;CAwIvB;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,YAAY,EAAE,yBAAyB,CAAC;IACjD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAC3C,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CAC7B;AAED,wEAAwE;AACxE,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AA6DD,iGAAiG;AACjG,eAAO,MAAM,8BAA8B,YAChC,yBAAyB,KACjC,QAAQ,yBAAyB,CAgCnC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,+BAA+B,YACjC,gCAAgC,KACxC,uBAaF,CAAC;AAEF,YAAY,EACV,0BAA0B,EAC1B,yBAAyB,EACzB,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,4CAA4C,CAAC"}