@sentropic/llm-mesh 0.32.3 → 0.33.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.
- package/dist/enrollment/index.d.ts +4 -0
- package/dist/enrollment/index.d.ts.map +1 -1
- package/dist/enrollment/index.js +2 -0
- package/dist/enrollment/index.js.map +1 -1
- package/dist/enrollment/seat-onboarding-projections.d.ts +44 -0
- package/dist/enrollment/seat-onboarding-projections.d.ts.map +1 -0
- package/dist/enrollment/seat-onboarding-projections.js +113 -0
- package/dist/enrollment/seat-onboarding-projections.js.map +1 -0
- package/dist/enrollment/seat-onboarding.d.ts +161 -0
- package/dist/enrollment/seat-onboarding.d.ts.map +1 -0
- package/dist/enrollment/seat-onboarding.js +698 -0
- package/dist/enrollment/seat-onboarding.js.map +1 -0
- package/dist/node/index.d.ts +9 -1
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.js +5 -1
- package/dist/node/index.js.map +1 -1
- package/dist/node/keyring/encrypted-file-keyring.d.ts +6 -0
- package/dist/node/keyring/encrypted-file-keyring.d.ts.map +1 -1
- package/dist/node/keyring/encrypted-file-keyring.js +51 -9
- package/dist/node/keyring/encrypted-file-keyring.js.map +1 -1
- package/dist/node/seat-onboarding-capture.d.ts +47 -0
- package/dist/node/seat-onboarding-capture.d.ts.map +1 -0
- package/dist/node/seat-onboarding-capture.js +164 -0
- package/dist/node/seat-onboarding-capture.js.map +1 -0
- package/dist/node/seat-onboarding-cell-compose.d.ts +25 -0
- package/dist/node/seat-onboarding-cell-compose.d.ts.map +1 -0
- package/dist/node/seat-onboarding-cell-compose.js +117 -0
- package/dist/node/seat-onboarding-cell-compose.js.map +1 -0
- package/dist/node/seat-onboarding-erase.d.ts +8 -0
- package/dist/node/seat-onboarding-erase.d.ts.map +1 -0
- package/dist/node/seat-onboarding-erase.js +31 -0
- package/dist/node/seat-onboarding-erase.js.map +1 -0
- package/dist/node/seat-onboarding-materialize.d.ts +6 -0
- package/dist/node/seat-onboarding-materialize.d.ts.map +1 -0
- package/dist/node/seat-onboarding-materialize.js +11 -0
- package/dist/node/seat-onboarding-materialize.js.map +1 -0
- package/dist/node/seat-onboarding-record.d.ts +11 -0
- package/dist/node/seat-onboarding-record.d.ts.map +1 -0
- package/dist/node/seat-onboarding-record.js +86 -0
- package/dist/node/seat-onboarding-record.js.map +1 -0
- package/dist/node/seat-onboarding-stage1.d.ts +11 -0
- package/dist/node/seat-onboarding-stage1.d.ts.map +1 -0
- package/dist/node/seat-onboarding-stage1.js +121 -0
- package/dist/node/seat-onboarding-stage1.js.map +1 -0
- package/dist/node/seat-onboarding-stage2.d.ts +10 -0
- package/dist/node/seat-onboarding-stage2.d.ts.map +1 -0
- package/dist/node/seat-onboarding-stage2.js +110 -0
- package/dist/node/seat-onboarding-stage2.js.map +1 -0
- package/dist/node/seat-onboarding-types.d.ts +106 -0
- package/dist/node/seat-onboarding-types.d.ts.map +1 -0
- package/dist/node/seat-onboarding-types.js +6 -0
- package/dist/node/seat-onboarding-types.js.map +1 -0
- package/dist/node/seat-stage-write.d.ts +25 -0
- package/dist/node/seat-stage-write.d.ts.map +1 -0
- package/dist/node/seat-stage-write.js +93 -0
- package/dist/node/seat-stage-write.js.map +1 -0
- package/dist/service/facade.d.ts +10 -0
- package/dist/service/facade.d.ts.map +1 -1
- package/dist/service/facade.js +3 -0
- package/dist/service/facade.js.map +1 -1
- package/dist/service/local-account-transport-service.d.ts +39 -0
- package/dist/service/local-account-transport-service.d.ts.map +1 -1
- package/dist/service/local-account-transport-service.js +158 -0
- package/dist/service/local-account-transport-service.js.map +1 -1
- package/package.json +1 -1
|
@@ -3,4 +3,8 @@ export type { AgyApplicationTuple, AgySeatPersistence, AgySeatProjectionInput }
|
|
|
3
3
|
export { AgyMappingError, persistAgySeatProjection, translateAgySeatToApplication } from './agy-cli-import.js';
|
|
4
4
|
export type { CliSeatProfileInput, SeatSourceMode, TokenSeatEnvelopeInput } from './cli-seat-import.js';
|
|
5
5
|
export { parseCliSeatProfile, parseTokenSeatEnvelope, sameSeatLineage, SeatImportError } from './cli-seat-import.js';
|
|
6
|
+
export type { PbtxtField, PbtxtScalar, SeatCellSynthesis, SeatEnvelopeV1, SeatLaunchGate, SeatOnboardingCode, SeatOnboardingDestKey, SeatOnboardingFile, SeatOnboardingFormat, SeatOnboardingStatus, SeatOnboardingV1, SeatEnvelopeValidationResult, SeatOnboardingValidationResult, } from './seat-onboarding.js';
|
|
7
|
+
export { AGY_REQUIRED_COMPLETED_STEPS, CODEX_APPROVAL_POLICY_VALUES, MUSE_TRUST_KNOWN_SCHEMA_VERSIONS, SEAT_ENVELOPE_AUTH_FILES, SEAT_ONBOARDING_FILE_CAPS, SEAT_ONBOARDING_MAX_BYTES, SEAT_ONBOARDING_SCHEMA_VERSION, SeatOnboardingError, canonicalAgyJetskiBytes, canonicaliseAgyJetski, parseAgyJetskiPbtxt, rebindSeatOnboarding, seatLaunchGate, validateAgyJetskiContent, validateOnboardingFileContent, validateSeatEnvelope, validateSeatOnboarding, } from './seat-onboarding.js';
|
|
8
|
+
export type { CodexMcpServerSpec, CodexSeatIntent } from './seat-onboarding-projections.js';
|
|
9
|
+
export { CODEX_TRUST_DIALOG_PROBE, projectClaudeOnboarding, projectCodexIntent, projectMuseTrust, renderCodexSeatConfig, } from './seat-onboarding-projections.js';
|
|
6
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/enrollment/index.ts"],"names":[],"mappings":"AAEA,YAAY,EACV,aAAa,EACb,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC3G,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AAC/G,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACxG,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/enrollment/index.ts"],"names":[],"mappings":"AAEA,YAAY,EACV,aAAa,EACb,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC3G,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AAC/G,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACxG,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACrH,YAAY,EACV,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,EAChB,4BAA4B,EAC5B,8BAA8B,GAC/B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,EAC5B,gCAAgC,EAChC,wBAAwB,EACxB,yBAAyB,EACzB,yBAAyB,EACzB,8BAA8B,EAC9B,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,wBAAwB,EACxB,6BAA6B,EAC7B,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAE9B,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAC5F,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,kCAAkC,CAAC"}
|
package/dist/enrollment/index.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
// Public enrollment contract exports for @sentropic/llm-mesh/enrollment
|
|
2
2
|
export { AgyMappingError, persistAgySeatProjection, translateAgySeatToApplication } from './agy-cli-import.js';
|
|
3
3
|
export { parseCliSeatProfile, parseTokenSeatEnvelope, sameSeatLineage, SeatImportError } from './cli-seat-import.js';
|
|
4
|
+
export { AGY_REQUIRED_COMPLETED_STEPS, CODEX_APPROVAL_POLICY_VALUES, MUSE_TRUST_KNOWN_SCHEMA_VERSIONS, SEAT_ENVELOPE_AUTH_FILES, SEAT_ONBOARDING_FILE_CAPS, SEAT_ONBOARDING_MAX_BYTES, SEAT_ONBOARDING_SCHEMA_VERSION, SeatOnboardingError, canonicalAgyJetskiBytes, canonicaliseAgyJetski, parseAgyJetskiPbtxt, rebindSeatOnboarding, seatLaunchGate, validateAgyJetskiContent, validateOnboardingFileContent, validateSeatEnvelope, validateSeatOnboarding, } from './seat-onboarding.js';
|
|
5
|
+
export { CODEX_TRUST_DIALOG_PROBE, projectClaudeOnboarding, projectCodexIntent, projectMuseTrust, renderCodexSeatConfig, } from './seat-onboarding-projections.js';
|
|
4
6
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/enrollment/index.ts"],"names":[],"mappings":"AAAA,wEAAwE;AAaxE,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AAE/G,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/enrollment/index.ts"],"names":[],"mappings":"AAAA,wEAAwE;AAaxE,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AAE/G,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAgBrH,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,EAC5B,gCAAgC,EAChC,wBAAwB,EACxB,yBAAyB,EACzB,yBAAyB,EACzB,8BAA8B,EAC9B,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,wBAAwB,EACxB,6BAA6B,EAC7B,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,kCAAkC,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Version-pinned codex probe record (§4.3). The claim « a pre-trusted
|
|
3
|
+
* project entry plus declared `mcp_servers` suppresses the first-use
|
|
4
|
+
* approval prompt at the pinned codex version » is unverified: the codex
|
|
5
|
+
* binary was not on PATH in the r1 pass. Until a version-pinned probe
|
|
6
|
+
* confirms it, the typed blocker `codex-mcp-approval-unresolved` remains
|
|
7
|
+
* the fallback and no approval prompt is ever pressed by the library.
|
|
8
|
+
*/
|
|
9
|
+
export declare const CODEX_TRUST_DIALOG_PROBE: {
|
|
10
|
+
readonly status: "unverified";
|
|
11
|
+
readonly fallbackBlocker: "codex-mcp-approval-unresolved";
|
|
12
|
+
readonly detail: "pre-trusted project + declared mcp_servers suppressing the first-use codex approval prompt is unverified at the pinned version";
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Project an owner `.claude.json` (any size) to the two-field canonical
|
|
16
|
+
* projection. `oauthAccount` is account-identifying and stays on the auth
|
|
17
|
+
* path — it is never part of the projection.
|
|
18
|
+
*/
|
|
19
|
+
export declare function projectClaudeOnboarding(sourceText: string): string;
|
|
20
|
+
/** Project an owner muse `trust.json` to the schema_version-only canonical form. */
|
|
21
|
+
export declare function projectMuseTrust(sourceText: string): string;
|
|
22
|
+
export interface CodexSeatIntent {
|
|
23
|
+
approvalPolicy: string;
|
|
24
|
+
mcpServerNames: string[];
|
|
25
|
+
}
|
|
26
|
+
/** Validate and canonicalize the custodian-supplied codex policy intent. No file is read. */
|
|
27
|
+
export declare function projectCodexIntent(intent: unknown): string;
|
|
28
|
+
export interface CodexMcpServerSpec {
|
|
29
|
+
name: string;
|
|
30
|
+
command: string;
|
|
31
|
+
args: readonly string[];
|
|
32
|
+
defaultToolsApprovalMode?: 'approve';
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Render the cell codex `config.toml` from the transported intent, the cell
|
|
36
|
+
* workspace and the harness-supplied server definitions. A server outside
|
|
37
|
+
* the intent's `mcpServerNames` refuses: the harness cannot widen the
|
|
38
|
+
* seat's approved server set at cell time.
|
|
39
|
+
*/
|
|
40
|
+
export declare function renderCodexSeatConfig(intentText: string, workspaceDir: string, options: {
|
|
41
|
+
projectTrust: boolean;
|
|
42
|
+
mcpServers?: readonly CodexMcpServerSpec[];
|
|
43
|
+
}): string;
|
|
44
|
+
//# sourceMappingURL=seat-onboarding-projections.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seat-onboarding-projections.d.ts","sourceRoot":"","sources":["../../src/enrollment/seat-onboarding-projections.ts"],"names":[],"mappings":"AAgBA;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB;;;;CAI3B,CAAC;AAgBX;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAUlE;AAED,oFAAoF;AACpF,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAO3D;AAED,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,6FAA6F;AAC7F,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAoB1D;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,wBAAwB,CAAC,EAAE,SAAS,CAAC;CACtC;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE;IAAE,YAAY,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAA;CAAE,GAC7E,MAAM,CAqBR"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Pure capture-side and cell-side projections for the claude, muse and
|
|
3
|
+
// codex onboarding formats (L4). Same rule as seat-onboarding.ts: no home,
|
|
4
|
+
// keyring, network or provider access. Capture projects the allowlisted
|
|
5
|
+
// subset of a source file and re-serializes canonically; the cell renderer
|
|
6
|
+
// turns the transported intent into the cell config. Every refusal throws
|
|
7
|
+
// SeatOnboardingError (fail-closed).
|
|
8
|
+
import { CLAUDE_VERSION_PATTERN, CODEX_APPROVAL_POLICY_VALUES, MCP_SERVER_NAME_PATTERN, MUSE_TRUST_KNOWN_SCHEMA_VERSIONS, SeatOnboardingError, } from './seat-onboarding.js';
|
|
9
|
+
/**
|
|
10
|
+
* Version-pinned codex probe record (§4.3). The claim « a pre-trusted
|
|
11
|
+
* project entry plus declared `mcp_servers` suppresses the first-use
|
|
12
|
+
* approval prompt at the pinned codex version » is unverified: the codex
|
|
13
|
+
* binary was not on PATH in the r1 pass. Until a version-pinned probe
|
|
14
|
+
* confirms it, the typed blocker `codex-mcp-approval-unresolved` remains
|
|
15
|
+
* the fallback and no approval prompt is ever pressed by the library.
|
|
16
|
+
*/
|
|
17
|
+
export const CODEX_TRUST_DIALOG_PROBE = {
|
|
18
|
+
status: 'unverified',
|
|
19
|
+
fallbackBlocker: 'codex-mcp-approval-unresolved',
|
|
20
|
+
detail: 'pre-trusted project + declared mcp_servers suppressing the first-use codex approval prompt is unverified at the pinned version',
|
|
21
|
+
};
|
|
22
|
+
const isRecord = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
23
|
+
const parseJson = (text, what) => {
|
|
24
|
+
let obj;
|
|
25
|
+
try {
|
|
26
|
+
obj = JSON.parse(text);
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
throw new SeatOnboardingError('onboarding-shape-unverified', `${what} is not JSON`);
|
|
30
|
+
}
|
|
31
|
+
if (!isRecord(obj))
|
|
32
|
+
throw new SeatOnboardingError('onboarding-shape-unverified', `${what} must be an object`);
|
|
33
|
+
return obj;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Project an owner `.claude.json` (any size) to the two-field canonical
|
|
37
|
+
* projection. `oauthAccount` is account-identifying and stays on the auth
|
|
38
|
+
* path — it is never part of the projection.
|
|
39
|
+
*/
|
|
40
|
+
export function projectClaudeOnboarding(sourceText) {
|
|
41
|
+
const obj = parseJson(sourceText, 'claude source');
|
|
42
|
+
if (obj['hasCompletedOnboarding'] !== true) {
|
|
43
|
+
throw new SeatOnboardingError('onboarding-incomplete', 'source hasCompletedOnboarding is not true');
|
|
44
|
+
}
|
|
45
|
+
const version = obj['lastOnboardingVersion'];
|
|
46
|
+
if (typeof version !== 'string' || !CLAUDE_VERSION_PATTERN.test(version)) {
|
|
47
|
+
throw new SeatOnboardingError('onboarding-shape-unverified', 'lastOnboardingVersion must match x.y.z');
|
|
48
|
+
}
|
|
49
|
+
return JSON.stringify({ hasCompletedOnboarding: true, lastOnboardingVersion: version });
|
|
50
|
+
}
|
|
51
|
+
/** Project an owner muse `trust.json` to the schema_version-only canonical form. */
|
|
52
|
+
export function projectMuseTrust(sourceText) {
|
|
53
|
+
const obj = parseJson(sourceText, 'muse trust source');
|
|
54
|
+
const schemaVersion = obj['schema_version'];
|
|
55
|
+
if (typeof schemaVersion !== 'number' || !Number.isInteger(schemaVersion) || !MUSE_TRUST_KNOWN_SCHEMA_VERSIONS.includes(schemaVersion)) {
|
|
56
|
+
throw new SeatOnboardingError('onboarding-shape-unverified', 'unknown muse schema_version');
|
|
57
|
+
}
|
|
58
|
+
return JSON.stringify({ schema_version: schemaVersion });
|
|
59
|
+
}
|
|
60
|
+
/** Validate and canonicalize the custodian-supplied codex policy intent. No file is read. */
|
|
61
|
+
export function projectCodexIntent(intent) {
|
|
62
|
+
if (!isRecord(intent))
|
|
63
|
+
throw new SeatOnboardingError('onboarding-shape-unverified', 'codex intent must be an object');
|
|
64
|
+
const extra = Object.keys(intent).find((k) => !['approvalPolicy', 'mcpServerNames'].includes(k));
|
|
65
|
+
if (extra)
|
|
66
|
+
throw new SeatOnboardingError('onboarding-unknown-field', `unknown codex intent field: ${extra}`);
|
|
67
|
+
const policy = intent['approvalPolicy'];
|
|
68
|
+
if (typeof policy !== 'string' || !CODEX_APPROVAL_POLICY_VALUES.includes(policy)) {
|
|
69
|
+
throw new SeatOnboardingError('onboarding-shape-unverified', 'approvalPolicy is not in the closed per-version enum');
|
|
70
|
+
}
|
|
71
|
+
const names = intent['mcpServerNames'];
|
|
72
|
+
if (!Array.isArray(names) || names.length === 0) {
|
|
73
|
+
throw new SeatOnboardingError('onboarding-shape-unverified', 'mcpServerNames must be a non-empty array');
|
|
74
|
+
}
|
|
75
|
+
const seen = new Set();
|
|
76
|
+
for (const name of names) {
|
|
77
|
+
if (typeof name !== 'string' || !MCP_SERVER_NAME_PATTERN.test(name) || seen.has(name)) {
|
|
78
|
+
throw new SeatOnboardingError('onboarding-shape-unverified', 'malformed or duplicate mcpServerNames entry');
|
|
79
|
+
}
|
|
80
|
+
seen.add(name);
|
|
81
|
+
}
|
|
82
|
+
return JSON.stringify({ approvalPolicy: policy, mcpServerNames: names });
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Render the cell codex `config.toml` from the transported intent, the cell
|
|
86
|
+
* workspace and the harness-supplied server definitions. A server outside
|
|
87
|
+
* the intent's `mcpServerNames` refuses: the harness cannot widen the
|
|
88
|
+
* seat's approved server set at cell time.
|
|
89
|
+
*/
|
|
90
|
+
export function renderCodexSeatConfig(intentText, workspaceDir, options) {
|
|
91
|
+
const intent = parseJson(intentText, 'codex intent');
|
|
92
|
+
const policy = intent['approvalPolicy'];
|
|
93
|
+
const names = intent['mcpServerNames'];
|
|
94
|
+
if (typeof policy !== 'string' || !Array.isArray(names)) {
|
|
95
|
+
throw new SeatOnboardingError('onboarding-shape-unverified', 'codex intent shape refused');
|
|
96
|
+
}
|
|
97
|
+
let out = `approval_policy = ${JSON.stringify(policy)}\n`;
|
|
98
|
+
if (options.projectTrust) {
|
|
99
|
+
out += `\n[projects.${JSON.stringify(workspaceDir)}]\ntrust_level = "trusted"\n`;
|
|
100
|
+
}
|
|
101
|
+
for (const server of options.mcpServers ?? []) {
|
|
102
|
+
if (typeof server.name !== 'string' || !names.includes(server.name)) {
|
|
103
|
+
throw new SeatOnboardingError('onboarding-shape-unverified', `MCP server outside the intent set: ${String(server.name)}`);
|
|
104
|
+
}
|
|
105
|
+
out += `\n[mcp_servers.${server.name}]\n`;
|
|
106
|
+
out += `command = ${JSON.stringify(server.command)}\n`;
|
|
107
|
+
out += `args = [${server.args.map((a) => JSON.stringify(a)).join(',')}]\n`;
|
|
108
|
+
if (server.defaultToolsApprovalMode === 'approve')
|
|
109
|
+
out += 'default_tools_approval_mode = "approve"\n';
|
|
110
|
+
}
|
|
111
|
+
return out;
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=seat-onboarding-projections.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seat-onboarding-projections.js","sourceRoot":"","sources":["../../src/enrollment/seat-onboarding-projections.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import { type SeatBundleV1, type SeatCli, type SeatLineageTuple, type SeatValidationCode, type SeatValidationContext } from './seat-bundle.js';
|
|
2
|
+
export declare const SEAT_ONBOARDING_SCHEMA_VERSION: 1;
|
|
3
|
+
/** Whole onboarding block cap, serialized; sidecar precedent (4 KiB). */
|
|
4
|
+
export declare const SEAT_ONBOARDING_MAX_BYTES = 4096;
|
|
5
|
+
export type SeatOnboardingDestKey = 'agy-jetski' | 'claude-json' | 'muse-trust' | 'codex-config';
|
|
6
|
+
export type SeatOnboardingFormat = 'agy-jetski-pbtxt-v1' | 'claude-json-projection-v1' | 'muse-trust-json-v1' | 'codex-config-projection-v1';
|
|
7
|
+
export type SeatCellSynthesis = 'claude-workspace-trust' | 'muse-workspace-trust' | 'codex-project-trust';
|
|
8
|
+
/**
|
|
9
|
+
* Closed refusal union. `onboarding-required` is the launch-gate code: it
|
|
10
|
+
* is never returned by a validator (an absent block is a valid envelope)
|
|
11
|
+
* and only stage 2 / the preflight raise it.
|
|
12
|
+
*/
|
|
13
|
+
export type SeatOnboardingCode = 'onboarding-schema-mismatch' | 'onboarding-size-exceeded' | 'onboarding-unknown-field' | 'onboarding-identifier-present' | 'onboarding-version-mismatch' | 'onboarding-lineage-mismatch' | 'onboarding-shape-unverified' | 'onboarding-incomplete' | 'onboarding-binding-unverifiable' | 'onboarding-required';
|
|
14
|
+
export interface SeatOnboardingFile {
|
|
15
|
+
/** Logical destination, resolved at cell stage — never a path. */
|
|
16
|
+
destKey: SeatOnboardingDestKey;
|
|
17
|
+
format: SeatOnboardingFormat;
|
|
18
|
+
/** Canonical re-serialized bytes only. */
|
|
19
|
+
contentBase64: string;
|
|
20
|
+
/** Hex digest of the decoded bytes. */
|
|
21
|
+
sha256: string;
|
|
22
|
+
/** Decoded length; must match. */
|
|
23
|
+
byteLength: number;
|
|
24
|
+
}
|
|
25
|
+
export interface SeatOnboardingV1 {
|
|
26
|
+
schemaVersion: 1;
|
|
27
|
+
cli: SeatCli;
|
|
28
|
+
/** == bundle.identity.seatRef */
|
|
29
|
+
seatRef: string;
|
|
30
|
+
/** == bundle.provenance.accountBinding (custodian assertion, §3.4) */
|
|
31
|
+
accountBinding: string;
|
|
32
|
+
/** Only eligible basis: a reference that survives token refresh. */
|
|
33
|
+
accountBindingBasis: 'custodian-stable-ref';
|
|
34
|
+
/** == bundle.lifecycle {epoch, generation, operationId} */
|
|
35
|
+
lineage: SeatLineageTuple;
|
|
36
|
+
reboundFrom?: SeatLineageTuple;
|
|
37
|
+
reboundAt?: string;
|
|
38
|
+
nativeCliVersion: string;
|
|
39
|
+
os: 'linux' | 'macos' | 'windows';
|
|
40
|
+
/** Custodian-observed; never read from the source file. */
|
|
41
|
+
capturedAt: string;
|
|
42
|
+
consent: {
|
|
43
|
+
source: 'owner-interactive-cli';
|
|
44
|
+
ownerScope: string;
|
|
45
|
+
};
|
|
46
|
+
/** Per-CLI standing decision; [] for agy. */
|
|
47
|
+
cellSynthesis: SeatCellSynthesis[];
|
|
48
|
+
/** 1..N, N = allowlist size for the CLI (1 in v1). */
|
|
49
|
+
files: SeatOnboardingFile[];
|
|
50
|
+
}
|
|
51
|
+
/** Serialized seat envelope: bundle + base64 auth files + agy tuple + onboarding. */
|
|
52
|
+
export interface SeatEnvelopeV1 {
|
|
53
|
+
bundle: SeatBundleV1;
|
|
54
|
+
files?: Record<string, string>;
|
|
55
|
+
agy?: Record<string, unknown>;
|
|
56
|
+
onboarding?: SeatOnboardingV1;
|
|
57
|
+
}
|
|
58
|
+
export type SeatOnboardingStatus = 'present' | 'absent';
|
|
59
|
+
export type SeatLaunchGate = {
|
|
60
|
+
eligible: true;
|
|
61
|
+
} | {
|
|
62
|
+
eligible: false;
|
|
63
|
+
code: 'onboarding-required';
|
|
64
|
+
};
|
|
65
|
+
export type SeatOnboardingValidationResult = {
|
|
66
|
+
ok: true;
|
|
67
|
+
block: SeatOnboardingV1;
|
|
68
|
+
} | {
|
|
69
|
+
ok: false;
|
|
70
|
+
code: SeatOnboardingCode;
|
|
71
|
+
detail: string;
|
|
72
|
+
};
|
|
73
|
+
export type SeatEnvelopeValidationResult = {
|
|
74
|
+
ok: true;
|
|
75
|
+
bundle: SeatBundleV1;
|
|
76
|
+
files: Record<string, string>;
|
|
77
|
+
agy: Record<string, unknown> | null;
|
|
78
|
+
onboarding: SeatOnboardingV1 | null;
|
|
79
|
+
onboardingStatus: SeatOnboardingStatus;
|
|
80
|
+
launchGate: SeatLaunchGate;
|
|
81
|
+
} | {
|
|
82
|
+
ok: false;
|
|
83
|
+
code: SeatValidationCode | SeatOnboardingCode;
|
|
84
|
+
detail: string;
|
|
85
|
+
};
|
|
86
|
+
export declare class SeatOnboardingError extends Error {
|
|
87
|
+
readonly code: SeatOnboardingCode;
|
|
88
|
+
constructor(code: SeatOnboardingCode, message: string);
|
|
89
|
+
}
|
|
90
|
+
/** Bench-measured auth-file allowlist, seat-directory-relative storage names. */
|
|
91
|
+
export declare const SEAT_ENVELOPE_AUTH_FILES: Record<SeatCli, readonly string[]>;
|
|
92
|
+
/** Decoded-byte cap per transported onboarding file. */
|
|
93
|
+
export declare const SEAT_ONBOARDING_FILE_CAPS: Record<SeatOnboardingDestKey, number>;
|
|
94
|
+
/** Reviewed full completed-step set per pinned agy version (measured 1.4.12). */
|
|
95
|
+
export declare const AGY_REQUIRED_COMPLETED_STEPS: Record<string, readonly string[]>;
|
|
96
|
+
/** Reviewed muse trust.json schema versions; starts as a singleton. */
|
|
97
|
+
export declare const MUSE_TRUST_KNOWN_SCHEMA_VERSIONS: readonly number[];
|
|
98
|
+
/** Reviewed codex approval policies for v1 (sufficiency unverified until the L4 probe). */
|
|
99
|
+
export declare const CODEX_APPROVAL_POLICY_VALUES: readonly string[];
|
|
100
|
+
/**
|
|
101
|
+
* The single gate fact every downstream stage uses: a present block (any
|
|
102
|
+
* CLI) and vibe-absent are eligible; agy/claude/muse/codex absent close the
|
|
103
|
+
* gate with the launch-gate code `onboarding-required`.
|
|
104
|
+
*/
|
|
105
|
+
export declare function seatLaunchGate(cli: SeatCli, onboardingStatus: SeatOnboardingStatus): SeatLaunchGate;
|
|
106
|
+
export type PbtxtScalar = {
|
|
107
|
+
kind: 'enum';
|
|
108
|
+
token: string;
|
|
109
|
+
} | {
|
|
110
|
+
kind: 'string';
|
|
111
|
+
value: string;
|
|
112
|
+
} | {
|
|
113
|
+
kind: 'number';
|
|
114
|
+
value: string;
|
|
115
|
+
};
|
|
116
|
+
export interface PbtxtField {
|
|
117
|
+
name: string;
|
|
118
|
+
scalar?: PbtxtScalar;
|
|
119
|
+
children?: PbtxtField[];
|
|
120
|
+
}
|
|
121
|
+
/** Parse the pbtxt subset; throws SeatOnboardingError on shape drift. */
|
|
122
|
+
export declare function parseAgyJetskiPbtxt(text: string): PbtxtField[];
|
|
123
|
+
/** Canonical serialization: fixed key order, reviewed enum order, one trailing newline. */
|
|
124
|
+
export declare function canonicalAgyJetskiBytes(nativeCliVersion: string, steps: readonly string[]): string;
|
|
125
|
+
/**
|
|
126
|
+
* Validate transported agy bytes: canonical form only. The step set must be
|
|
127
|
+
* exactly the full reviewed set for the pinned version; any extra key,
|
|
128
|
+
* value kind or step refuses.
|
|
129
|
+
*/
|
|
130
|
+
export declare function validateAgyJetskiContent(text: string, nativeCliVersion: string): SeatOnboardingCode | null;
|
|
131
|
+
export declare const CLAUDE_VERSION_PATTERN: RegExp;
|
|
132
|
+
export declare const MCP_SERVER_NAME_PATTERN: RegExp;
|
|
133
|
+
/** Validate one transported file's decoded content against its format. */
|
|
134
|
+
export declare function validateOnboardingFileContent(format: SeatOnboardingFormat, bytes: Uint8Array, nativeCliVersion: string): SeatOnboardingCode | null;
|
|
135
|
+
/** Structural validation of one onboarding block; binding checks live in validateSeatEnvelope. */
|
|
136
|
+
export declare function validateSeatOnboarding(block: unknown): SeatOnboardingValidationResult;
|
|
137
|
+
/**
|
|
138
|
+
* Validate the whole serialized seat envelope as one unit: bundle, agy
|
|
139
|
+
* tuple translation where applicable, auth-file allowlist, onboarding
|
|
140
|
+
* validation and binding. An absent block is a valid envelope (D1); what
|
|
141
|
+
* absence denies is launch, through seatLaunchGate — never envelope
|
|
142
|
+
* validity. `onboarding-required` is never returned here.
|
|
143
|
+
*/
|
|
144
|
+
export declare function validateSeatEnvelope(envelope: unknown, ctx?: SeatValidationContext): SeatEnvelopeValidationResult;
|
|
145
|
+
/**
|
|
146
|
+
* D11 rebind: move only the lineage pointer on a same-epoch forward
|
|
147
|
+
* transition. Never recaptures and never edits content; an epoch change or
|
|
148
|
+
* a CLI version change requires a fresh interactive capture.
|
|
149
|
+
*/
|
|
150
|
+
export declare function rebindSeatOnboarding(block: SeatOnboardingV1, nextBundle: SeatBundleV1, options: {
|
|
151
|
+
reboundAt: string;
|
|
152
|
+
files?: readonly SeatOnboardingFile[];
|
|
153
|
+
}): SeatOnboardingValidationResult;
|
|
154
|
+
/**
|
|
155
|
+
* Capture-side canonicalizer: parse the source file, keep only the
|
|
156
|
+
* allowlisted step set, check it against the pinned version's required
|
|
157
|
+
* set, and re-serialize canonically. No code path copies source bytes
|
|
158
|
+
* through; `installation_uuid` and `migrations` are discarded here.
|
|
159
|
+
*/
|
|
160
|
+
export declare function canonicaliseAgyJetski(sourceText: string, nativeCliVersion: string): string;
|
|
161
|
+
//# sourceMappingURL=seat-onboarding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seat-onboarding.d.ts","sourceRoot":"","sources":["../../src/enrollment/seat-onboarding.ts"],"names":[],"mappings":"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"}
|