@claudexor/schema 3.5.0 → 3.8.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/accounts-migration.d.ts +112 -0
- package/dist/accounts-migration.d.ts.map +1 -0
- package/dist/accounts-migration.js +74 -0
- package/dist/accounts-migration.js.map +1 -0
- package/dist/agent-capabilities.d.ts +32 -0
- package/dist/agent-capabilities.d.ts.map +1 -1
- package/dist/agent-capabilities.js +4 -0
- package/dist/agent-capabilities.js.map +1 -1
- package/dist/config.d.ts +48 -30
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +32 -11
- package/dist/config.js.map +1 -1
- package/dist/control-harness-list.d.ts +197 -1
- package/dist/control-harness-list.d.ts.map +1 -1
- package/dist/control-operation-responses.d.ts +7 -7
- package/dist/control-run-detail.d.ts +19 -19
- package/dist/control-run-failure.d.ts +4 -4
- package/dist/control-run-failure.d.ts.map +1 -1
- package/dist/control-run-failure.js +7 -1
- package/dist/control-run-failure.js.map +1 -1
- package/dist/control.d.ts +23 -23
- package/dist/control.d.ts.map +1 -1
- package/dist/control.js +8 -8
- package/dist/control.js.map +1 -1
- package/dist/credential-profile-snapshot.d.ts +644 -30
- package/dist/credential-profile-snapshot.d.ts.map +1 -1
- package/dist/credential-profile.d.ts +365 -38
- package/dist/credential-profile.d.ts.map +1 -1
- package/dist/credential-profile.js +140 -28
- package/dist/credential-profile.js.map +1 -1
- package/dist/credential-store.d.ts +19 -6
- package/dist/credential-store.d.ts.map +1 -1
- package/dist/credential-store.js +21 -6
- package/dist/credential-store.js.map +1 -1
- package/dist/events.d.ts +44 -4
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +34 -0
- package/dist/events.js.map +1 -1
- package/dist/harness.d.ts +252 -59
- package/dist/harness.d.ts.map +1 -1
- package/dist/harness.js +2 -32
- package/dist/harness.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp-run-result.d.ts +10 -10
- package/dist/platform-auth.d.ts +196 -0
- package/dist/platform-auth.d.ts.map +1 -0
- package/dist/platform-auth.js +142 -0
- package/dist/platform-auth.js.map +1 -0
- package/dist/quota.d.ts +42 -21
- package/dist/quota.d.ts.map +1 -1
- package/dist/quota.js +35 -0
- package/dist/quota.js.map +1 -1
- package/dist/rate-limit.d.ts +9 -0
- package/dist/rate-limit.d.ts.map +1 -1
- package/dist/rate-limit.js +21 -0
- package/dist/rate-limit.js.map +1 -1
- package/dist/readiness.d.ts +178 -1
- package/dist/readiness.d.ts.map +1 -1
- package/dist/readiness.js +12 -0
- package/dist/readiness.js.map +1 -1
- package/dist/setup-login.d.ts +5 -5
- package/dist/setup.d.ts +102 -95
- package/dist/setup.d.ts.map +1 -1
- package/dist/setup.js +29 -5
- package/dist/setup.js.map +1 -1
- package/generated/AccountsUnifiedMigrationFile.schema.json +61 -0
- package/generated/AgentCapabilityCatalog.schema.json +26 -0
- package/generated/ControlAccountPoolsResponse.schema.json +93 -0
- package/generated/ControlAccountsMigrationRollbackRequest.schema.json +18 -0
- package/generated/ControlAccountsMigrationRollbackResponse.schema.json +63 -0
- package/generated/ControlCredentialProfileCreateRequest.schema.json +1 -1
- package/generated/ControlCredentialProfileCreateResponse.schema.json +4 -4
- package/generated/ControlCredentialProfileDeleteResponse.schema.json +28 -4
- package/generated/ControlCredentialProfileUpdateResponse.schema.json +4 -4
- package/generated/ControlCredentialProfilesQueryResponse.schema.json +212 -7
- package/generated/ControlCredentialProfilesResponse.schema.json +81 -5
- package/generated/ControlCredentialProfilesSnapshotResponse.schema.json +209 -7
- package/generated/ControlHarnessAccountPool.schema.json +79 -0
- package/generated/ControlHarnessListResponse.schema.json +124 -0
- package/generated/ControlHarnessSettingsPatch.schema.json +2 -1
- package/generated/ControlPoolNextUp.schema.json +63 -0
- package/generated/ControlQuotaResponse.schema.json +4 -2
- package/generated/ControlRunDetail.schema.json +2 -1
- package/generated/ControlRunListResponse.schema.json +2 -1
- package/generated/ControlRunSummary.schema.json +2 -1
- package/generated/ControlSettingsSnapshot.schema.json +3 -2
- package/generated/ControlSettingsUpdateRequest.schema.json +2 -1
- package/generated/ControlSetupJob.schema.json +5 -1
- package/generated/ControlSetupJobCreateRequest.schema.json +1 -1
- package/generated/ControlSetupJobEvent.schema.json +5 -1
- package/generated/ControlSetupJobListResponse.schema.json +5 -1
- package/generated/ControlSetupJobSnapshot.schema.json +5 -1
- package/generated/CredentialProfile.schema.json +3 -3
- package/generated/CredentialProfileStatus.schema.json +1 -1
- package/generated/GlobalConfig.schema.json +7 -6
- package/generated/HarnessEvent.schema.json +2 -1
- package/generated/HarnessManifest.schema.json +98 -0
- package/generated/HarnessStatusDto.schema.json +124 -0
- package/generated/McpRunHandleResult.schema.json +2 -1
- package/generated/McpRunToolResult.schema.json +2 -1
- package/generated/RunEvent.schema.json +4 -0
- package/generated/RunFailure.schema.json +2 -1
- package/package.json +2 -2
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { z } from "zod/v3";
|
|
2
|
+
/**
|
|
3
|
+
* Unified-accounts startup migration state (INV-135 rewrite, plan §L.3).
|
|
4
|
+
*
|
|
5
|
+
* The per-harness record lives in `~/.claudexor/v3/migration/accounts-unified.json`
|
|
6
|
+
* — deliberately a SEPARATE file, never a config.yaml key: the 3.5.0 strict
|
|
7
|
+
* config parser must keep reading the migrated config, and a downgraded engine
|
|
8
|
+
* simply never opens this file. Phases are restart-idempotent; an INCOMPLETE
|
|
9
|
+
* record is a typed refusal of that harness's runs only (other harnesses keep
|
|
10
|
+
* working) until the next daemon start finishes the remaining phases.
|
|
11
|
+
*/
|
|
12
|
+
export declare const AccountsMigrationPhase: z.ZodEnum<["reserved", "registry_written", "continuity_migrated", "completed", "rolling_back"]>;
|
|
13
|
+
export type AccountsMigrationPhase = z.infer<typeof AccountsMigrationPhase>;
|
|
14
|
+
export declare const AccountsHarnessMigration: z.ZodObject<{
|
|
15
|
+
phase: z.ZodEnum<["reserved", "registry_written", "continuity_migrated", "completed", "rolling_back"]>;
|
|
16
|
+
row_id: z.ZodString;
|
|
17
|
+
legacy_aliases: z.ZodArray<z.ZodNullable<z.ZodString>, "many">;
|
|
18
|
+
locator: z.ZodString;
|
|
19
|
+
backup_ref: z.ZodNullable<z.ZodString>;
|
|
20
|
+
}, "strict", z.ZodTypeAny, {
|
|
21
|
+
phase: "completed" | "continuity_migrated" | "registry_written" | "reserved" | "rolling_back";
|
|
22
|
+
row_id: string;
|
|
23
|
+
legacy_aliases: (string | null)[];
|
|
24
|
+
locator: string;
|
|
25
|
+
backup_ref: string | null;
|
|
26
|
+
}, {
|
|
27
|
+
phase: "completed" | "continuity_migrated" | "registry_written" | "reserved" | "rolling_back";
|
|
28
|
+
row_id: string;
|
|
29
|
+
legacy_aliases: (string | null)[];
|
|
30
|
+
locator: string;
|
|
31
|
+
backup_ref: string | null;
|
|
32
|
+
}>;
|
|
33
|
+
export type AccountsHarnessMigration = z.infer<typeof AccountsHarnessMigration>;
|
|
34
|
+
/** The whole migration file: harness id → its migration record. */
|
|
35
|
+
export declare const AccountsUnifiedMigrationFile: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
36
|
+
phase: z.ZodEnum<["reserved", "registry_written", "continuity_migrated", "completed", "rolling_back"]>;
|
|
37
|
+
row_id: z.ZodString;
|
|
38
|
+
legacy_aliases: z.ZodArray<z.ZodNullable<z.ZodString>, "many">;
|
|
39
|
+
locator: z.ZodString;
|
|
40
|
+
backup_ref: z.ZodNullable<z.ZodString>;
|
|
41
|
+
}, "strict", z.ZodTypeAny, {
|
|
42
|
+
phase: "completed" | "continuity_migrated" | "registry_written" | "reserved" | "rolling_back";
|
|
43
|
+
row_id: string;
|
|
44
|
+
legacy_aliases: (string | null)[];
|
|
45
|
+
locator: string;
|
|
46
|
+
backup_ref: string | null;
|
|
47
|
+
}, {
|
|
48
|
+
phase: "completed" | "continuity_migrated" | "registry_written" | "reserved" | "rolling_back";
|
|
49
|
+
row_id: string;
|
|
50
|
+
legacy_aliases: (string | null)[];
|
|
51
|
+
locator: string;
|
|
52
|
+
backup_ref: string | null;
|
|
53
|
+
}>>;
|
|
54
|
+
export type AccountsUnifiedMigrationFile = z.infer<typeof AccountsUnifiedMigrationFile>;
|
|
55
|
+
/** POST /accounts-migration/rollback — the supported downgrade path's first
|
|
56
|
+
* step (run BEFORE installing 3.5.0, whose canonicalizers refuse the migrated
|
|
57
|
+
* row's native locator). Surgically reverses the migration: sessions,
|
|
58
|
+
* checkpoints, and lane homes return to the null engine-default keys, the
|
|
59
|
+
* auto-registered row leaves the registry, and its `enabled` state returns to
|
|
60
|
+
* the `native_credentials_enabled` setting. */
|
|
61
|
+
export declare const ControlAccountsMigrationRollbackRequest: z.ZodObject<{
|
|
62
|
+
harnessId: z.ZodOptional<z.ZodString>;
|
|
63
|
+
}, "strict", z.ZodTypeAny, {
|
|
64
|
+
harnessId?: string | undefined;
|
|
65
|
+
}, {
|
|
66
|
+
harnessId?: string | undefined;
|
|
67
|
+
}>;
|
|
68
|
+
export type ControlAccountsMigrationRollbackRequest = z.infer<typeof ControlAccountsMigrationRollbackRequest>;
|
|
69
|
+
export declare const ControlAccountsMigrationRollbackResponse: z.ZodObject<{
|
|
70
|
+
rolledBack: z.ZodArray<z.ZodObject<{
|
|
71
|
+
harness_id: z.ZodString;
|
|
72
|
+
row_id: z.ZodString;
|
|
73
|
+
sessions: z.ZodNumber;
|
|
74
|
+
checkpoints: z.ZodNumber;
|
|
75
|
+
lanes: z.ZodNumber;
|
|
76
|
+
skipped_partitions: z.ZodArray<z.ZodString, "many">;
|
|
77
|
+
}, "strict", z.ZodTypeAny, {
|
|
78
|
+
harness_id: string;
|
|
79
|
+
row_id: string;
|
|
80
|
+
sessions: number;
|
|
81
|
+
checkpoints: number;
|
|
82
|
+
lanes: number;
|
|
83
|
+
skipped_partitions: string[];
|
|
84
|
+
}, {
|
|
85
|
+
harness_id: string;
|
|
86
|
+
row_id: string;
|
|
87
|
+
sessions: number;
|
|
88
|
+
checkpoints: number;
|
|
89
|
+
lanes: number;
|
|
90
|
+
skipped_partitions: string[];
|
|
91
|
+
}>, "many">;
|
|
92
|
+
}, "strict", z.ZodTypeAny, {
|
|
93
|
+
rolledBack: {
|
|
94
|
+
harness_id: string;
|
|
95
|
+
row_id: string;
|
|
96
|
+
sessions: number;
|
|
97
|
+
checkpoints: number;
|
|
98
|
+
lanes: number;
|
|
99
|
+
skipped_partitions: string[];
|
|
100
|
+
}[];
|
|
101
|
+
}, {
|
|
102
|
+
rolledBack: {
|
|
103
|
+
harness_id: string;
|
|
104
|
+
row_id: string;
|
|
105
|
+
sessions: number;
|
|
106
|
+
checkpoints: number;
|
|
107
|
+
lanes: number;
|
|
108
|
+
skipped_partitions: string[];
|
|
109
|
+
}[];
|
|
110
|
+
}>;
|
|
111
|
+
export type ControlAccountsMigrationRollbackResponse = z.infer<typeof ControlAccountsMigrationRollbackResponse>;
|
|
112
|
+
//# sourceMappingURL=accounts-migration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accounts-migration.d.ts","sourceRoot":"","sources":["../src/accounts-migration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAG3B;;;;;;;;;GASG;AACH,eAAO,MAAM,sBAAsB,iGAIhC,CAAC;AACJ,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAE5E,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;EAwBwB,CAAC;AAC9D,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAEhF,mEAAmE;AACnE,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;GAE4C,CAAC;AACtF,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAExF;;;;;+CAK+C;AAC/C,eAAO,MAAM,uCAAuC;;;;;;EAOc,CAAC;AACnE,MAAM,MAAM,uCAAuC,GAAG,CAAC,CAAC,KAAK,CAC3D,OAAO,uCAAuC,CAC/C,CAAC;AAEF,eAAO,MAAM,wCAAwC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4BY,CAAC;AAClE,MAAM,MAAM,wCAAwC,GAAG,CAAC,CAAC,KAAK,CAC5D,OAAO,wCAAwC,CAChD,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { z } from "zod/v3";
|
|
2
|
+
import { Id } from "./primitives.js";
|
|
3
|
+
/**
|
|
4
|
+
* Unified-accounts startup migration state (INV-135 rewrite, plan §L.3).
|
|
5
|
+
*
|
|
6
|
+
* The per-harness record lives in `~/.claudexor/v3/migration/accounts-unified.json`
|
|
7
|
+
* — deliberately a SEPARATE file, never a config.yaml key: the 3.5.0 strict
|
|
8
|
+
* config parser must keep reading the migrated config, and a downgraded engine
|
|
9
|
+
* simply never opens this file. Phases are restart-idempotent; an INCOMPLETE
|
|
10
|
+
* record is a typed refusal of that harness's runs only (other harnesses keep
|
|
11
|
+
* working) until the next daemon start finishes the remaining phases.
|
|
12
|
+
*/
|
|
13
|
+
export const AccountsMigrationPhase = z
|
|
14
|
+
.enum(["reserved", "registry_written", "continuity_migrated", "completed", "rolling_back"])
|
|
15
|
+
.describe("Crash-recoverable migration phase for one harness: reserved (id + backup persisted) → registry_written (row in config) → continuity_migrated (sessions/checkpoints/lane homes on the row id) → completed (legacy null quota subject retired). rolling_back marks an in-flight rollback: the startup migration never resumes it forward; re-running the rollback command finishes it.");
|
|
16
|
+
export const AccountsHarnessMigration = z
|
|
17
|
+
.object({
|
|
18
|
+
phase: AccountsMigrationPhase,
|
|
19
|
+
row_id: Id.describe("The reserved registry row id (claude-default / codex-default, deterministic -2 suffix on collision) — persisted BEFORE any other phase so a crash can never re-reserve a different id."),
|
|
20
|
+
legacy_aliases: z
|
|
21
|
+
.array(z.string().nullable())
|
|
22
|
+
.describe("Every legacy identity this row absorbed — [null] for the engine-default subject. Deletion of the row must retire the canonical id PLUS these aliases in one lifecycle operation."),
|
|
23
|
+
locator: z
|
|
24
|
+
.string()
|
|
25
|
+
.describe("The exact legacy native store dir registered as the row's isolation_locator (bytes never move). Also the delete fence's exact-path allowlist entry for this row."),
|
|
26
|
+
backup_ref: z
|
|
27
|
+
.string()
|
|
28
|
+
.nullable()
|
|
29
|
+
.describe("Pre-migration backup directory (config.yaml copy), the manual-recovery half of the supported downgrade path; null when the backup could not be written."),
|
|
30
|
+
})
|
|
31
|
+
.strict()
|
|
32
|
+
.describe("Per-harness unified-accounts migration record.");
|
|
33
|
+
/** The whole migration file: harness id → its migration record. */
|
|
34
|
+
export const AccountsUnifiedMigrationFile = z
|
|
35
|
+
.record(z.string(), AccountsHarnessMigration)
|
|
36
|
+
.describe("accounts-unified.json: harness id → unified-accounts migration record.");
|
|
37
|
+
/** POST /accounts-migration/rollback — the supported downgrade path's first
|
|
38
|
+
* step (run BEFORE installing 3.5.0, whose canonicalizers refuse the migrated
|
|
39
|
+
* row's native locator). Surgically reverses the migration: sessions,
|
|
40
|
+
* checkpoints, and lane homes return to the null engine-default keys, the
|
|
41
|
+
* auto-registered row leaves the registry, and its `enabled` state returns to
|
|
42
|
+
* the `native_credentials_enabled` setting. */
|
|
43
|
+
export const ControlAccountsMigrationRollbackRequest = z
|
|
44
|
+
.object({
|
|
45
|
+
harnessId: Id.optional().describe("Roll back one harness's migration; omitted = every migrated harness."),
|
|
46
|
+
})
|
|
47
|
+
.strict()
|
|
48
|
+
.describe("Request body for POST /accounts-migration/rollback.");
|
|
49
|
+
export const ControlAccountsMigrationRollbackResponse = z
|
|
50
|
+
.object({
|
|
51
|
+
rolledBack: z
|
|
52
|
+
.array(z
|
|
53
|
+
.object({
|
|
54
|
+
harness_id: Id,
|
|
55
|
+
row_id: Id.describe("The auto-registered row the rollback removed."),
|
|
56
|
+
sessions: z
|
|
57
|
+
.number()
|
|
58
|
+
.int()
|
|
59
|
+
.describe("Thread sessions returned to the null engine-default subject."),
|
|
60
|
+
checkpoints: z
|
|
61
|
+
.number()
|
|
62
|
+
.int()
|
|
63
|
+
.describe("Lane checkpoints re-seeded onto the null lane."),
|
|
64
|
+
lanes: z.number().int().describe("Durable lane home dirs renamed back."),
|
|
65
|
+
skipped_partitions: z
|
|
66
|
+
.array(z.string())
|
|
67
|
+
.describe("Quarantined project partitions whose sessions could NOT be rolled back (disclosed residual: recover them and rerun the rollback before downgrading)."),
|
|
68
|
+
})
|
|
69
|
+
.strict())
|
|
70
|
+
.describe("Per-harness rollback receipts (empty when nothing was migrated)."),
|
|
71
|
+
})
|
|
72
|
+
.strict()
|
|
73
|
+
.describe("Receipt for a unified-accounts migration rollback.");
|
|
74
|
+
//# sourceMappingURL=accounts-migration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accounts-migration.js","sourceRoot":"","sources":["../src/accounts-migration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAErC;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC;KACpC,IAAI,CAAC,CAAC,UAAU,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;KAC1F,QAAQ,CACP,sXAAsX,CACvX,CAAC;AAGJ,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC;KACtC,MAAM,CAAC;IACN,KAAK,EAAE,sBAAsB;IAC7B,MAAM,EAAE,EAAE,CAAC,QAAQ,CACjB,wLAAwL,CACzL;IACD,cAAc,EAAE,CAAC;SACd,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;SAC5B,QAAQ,CACP,kLAAkL,CACnL;IACH,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,QAAQ,CACP,kKAAkK,CACnK;IACH,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,yJAAyJ,CAC1J;CACJ,CAAC;KACD,MAAM,EAAE;KACR,QAAQ,CAAC,gDAAgD,CAAC,CAAC;AAG9D,mEAAmE;AACnE,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC;KAC1C,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,wBAAwB,CAAC;KAC5C,QAAQ,CAAC,wEAAwE,CAAC,CAAC;AAGtF;;;;;+CAK+C;AAC/C,MAAM,CAAC,MAAM,uCAAuC,GAAG,CAAC;KACrD,MAAM,CAAC;IACN,SAAS,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC/B,sEAAsE,CACvE;CACF,CAAC;KACD,MAAM,EAAE;KACR,QAAQ,CAAC,qDAAqD,CAAC,CAAC;AAKnE,MAAM,CAAC,MAAM,wCAAwC,GAAG,CAAC;KACtD,MAAM,CAAC;IACN,UAAU,EAAE,CAAC;SACV,KAAK,CACJ,CAAC;SACE,MAAM,CAAC;QACN,UAAU,EAAE,EAAE;QACd,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;QACpE,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,GAAG,EAAE;aACL,QAAQ,CAAC,8DAA8D,CAAC;QAC3E,WAAW,EAAE,CAAC;aACX,MAAM,EAAE;aACR,GAAG,EAAE;aACL,QAAQ,CAAC,gDAAgD,CAAC;QAC7D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;QACxE,kBAAkB,EAAE,CAAC;aAClB,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;aACjB,QAAQ,CACP,sJAAsJ,CACvJ;KACJ,CAAC;SACD,MAAM,EAAE,CACZ;SACA,QAAQ,CAAC,kEAAkE,CAAC;CAChF,CAAC;KACD,MAAM,EAAE;KACR,QAAQ,CAAC,oDAAoD,CAAC,CAAC"}
|
|
@@ -120,6 +120,13 @@ export declare const CatalogHarness: z.ZodObject<{
|
|
|
120
120
|
remediation?: string | null | undefined;
|
|
121
121
|
requiresFullAccess?: boolean | undefined;
|
|
122
122
|
}>;
|
|
123
|
+
setupLogin: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
124
|
+
mode: z.ZodEnum<["in_app", "external_terminal"]>;
|
|
125
|
+
}, "strict", z.ZodTypeAny, {
|
|
126
|
+
mode: "external_terminal" | "in_app";
|
|
127
|
+
}, {
|
|
128
|
+
mode: "external_terminal" | "in_app";
|
|
129
|
+
}>>>;
|
|
123
130
|
}, "strip", z.ZodTypeAny, {
|
|
124
131
|
id: string;
|
|
125
132
|
enabled: boolean;
|
|
@@ -153,6 +160,9 @@ export declare const CatalogHarness: z.ZodObject<{
|
|
|
153
160
|
remediation: string | null;
|
|
154
161
|
requiresFullAccess: boolean;
|
|
155
162
|
};
|
|
163
|
+
setupLogin?: {
|
|
164
|
+
mode: "external_terminal" | "in_app";
|
|
165
|
+
} | null | undefined;
|
|
156
166
|
}, {
|
|
157
167
|
id: string;
|
|
158
168
|
enabled: boolean;
|
|
@@ -186,6 +196,9 @@ export declare const CatalogHarness: z.ZodObject<{
|
|
|
186
196
|
remediation?: string | null | undefined;
|
|
187
197
|
requiresFullAccess?: boolean | undefined;
|
|
188
198
|
};
|
|
199
|
+
setupLogin?: {
|
|
200
|
+
mode: "external_terminal" | "in_app";
|
|
201
|
+
} | null | undefined;
|
|
189
202
|
}>;
|
|
190
203
|
export type CatalogHarness = z.infer<typeof CatalogHarness>;
|
|
191
204
|
export declare const CatalogCliCommand: z.ZodObject<{
|
|
@@ -335,6 +348,13 @@ export declare const AgentCapabilityCatalog: z.ZodObject<{
|
|
|
335
348
|
remediation?: string | null | undefined;
|
|
336
349
|
requiresFullAccess?: boolean | undefined;
|
|
337
350
|
}>;
|
|
351
|
+
setupLogin: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
352
|
+
mode: z.ZodEnum<["in_app", "external_terminal"]>;
|
|
353
|
+
}, "strict", z.ZodTypeAny, {
|
|
354
|
+
mode: "external_terminal" | "in_app";
|
|
355
|
+
}, {
|
|
356
|
+
mode: "external_terminal" | "in_app";
|
|
357
|
+
}>>>;
|
|
338
358
|
}, "strip", z.ZodTypeAny, {
|
|
339
359
|
id: string;
|
|
340
360
|
enabled: boolean;
|
|
@@ -368,6 +388,9 @@ export declare const AgentCapabilityCatalog: z.ZodObject<{
|
|
|
368
388
|
remediation: string | null;
|
|
369
389
|
requiresFullAccess: boolean;
|
|
370
390
|
};
|
|
391
|
+
setupLogin?: {
|
|
392
|
+
mode: "external_terminal" | "in_app";
|
|
393
|
+
} | null | undefined;
|
|
371
394
|
}, {
|
|
372
395
|
id: string;
|
|
373
396
|
enabled: boolean;
|
|
@@ -401,6 +424,9 @@ export declare const AgentCapabilityCatalog: z.ZodObject<{
|
|
|
401
424
|
remediation?: string | null | undefined;
|
|
402
425
|
requiresFullAccess?: boolean | undefined;
|
|
403
426
|
};
|
|
427
|
+
setupLogin?: {
|
|
428
|
+
mode: "external_terminal" | "in_app";
|
|
429
|
+
} | null | undefined;
|
|
404
430
|
}>, "many">;
|
|
405
431
|
availableHarnesses: z.ZodArray<z.ZodString, "many">;
|
|
406
432
|
modes: z.ZodArray<z.ZodEnum<["ask", "plan", "agent"]>, "many">;
|
|
@@ -501,6 +527,9 @@ export declare const AgentCapabilityCatalog: z.ZodObject<{
|
|
|
501
527
|
remediation: string | null;
|
|
502
528
|
requiresFullAccess: boolean;
|
|
503
529
|
};
|
|
530
|
+
setupLogin?: {
|
|
531
|
+
mode: "external_terminal" | "in_app";
|
|
532
|
+
} | null | undefined;
|
|
504
533
|
}[];
|
|
505
534
|
availableHarnesses: string[];
|
|
506
535
|
modes: ("agent" | "ask" | "plan")[];
|
|
@@ -569,6 +598,9 @@ export declare const AgentCapabilityCatalog: z.ZodObject<{
|
|
|
569
598
|
remediation?: string | null | undefined;
|
|
570
599
|
requiresFullAccess?: boolean | undefined;
|
|
571
600
|
};
|
|
601
|
+
setupLogin?: {
|
|
602
|
+
mode: "external_terminal" | "in_app";
|
|
603
|
+
} | null | undefined;
|
|
572
604
|
}[];
|
|
573
605
|
availableHarnesses: string[];
|
|
574
606
|
modes: ("agent" | "ask" | "plan")[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-capabilities.d.ts","sourceRoot":"","sources":["../src/agent-capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAiB,QAAQ,EAAkB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-capabilities.d.ts","sourceRoot":"","sources":["../src/agent-capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAiB,QAAQ,EAAkB,MAAM,iBAAiB,CAAC;AAS1E;;;;;;;;GAQG;AAEH;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,8BAA8B,YACzC,UAAU,EACV,QAAQ,EACR,WAAW,EACX,SAAS,EACT,SAAS,EACT,aAAa,EACb,oBAAoB,CACZ,CAAC;AAEX;;;;;GAKG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAI9E,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;EAmBkE,CAAC;AACnG,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEtE,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2DsD,CAAC;AAClF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;EAe3B,CAAC;AACJ,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAElE,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;EAyBjC,CAAC;AACJ,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAE9E,eAAO,MAAM,0BAA0B;;;;;;;;;;;;EAQ4C,CAAC;AACpF,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAEpF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2ChC,CAAC;AACJ,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC"}
|
|
@@ -6,6 +6,7 @@ import { AttachmentInputClass } from "./attachment.js";
|
|
|
6
6
|
import { OutputSchemaDialect } from "./output-schema-dialect.js";
|
|
7
7
|
import { DelegationCapability } from "./delegation.js";
|
|
8
8
|
import { GitCapability } from "./git-capability.js";
|
|
9
|
+
import { SetupLoginCapability } from "./readiness.js";
|
|
9
10
|
/**
|
|
10
11
|
* AgentCapabilityCatalog — the machine-readable answer to "what can this
|
|
11
12
|
* Claudexor install do RIGHT NOW", for external agents (MCP hosts, scripts,
|
|
@@ -110,6 +111,9 @@ export const CatalogHarness = z
|
|
|
110
111
|
.describe("Access profiles the adapter can enforce."),
|
|
111
112
|
readonlyMechanism: ReadonlyMechanism.describe("HOW read-only is enforced (fs_sandbox | permission_deny | tool_allowlist | none) — none means read-only intent is advisory for this harness."),
|
|
112
113
|
delegation: DelegationCapability.describe("Whether this installed runtime can offer Delegate through this harness."),
|
|
114
|
+
setupLogin: SetupLoginCapability.nullable()
|
|
115
|
+
.optional()
|
|
116
|
+
.describe("Effective setup-login flow for this harness on the current host; current producers emit null or an object, while omission identifies a legacy catalog row."),
|
|
113
117
|
})
|
|
114
118
|
.describe("Per-harness live capability row (manifest + doctor + model truth).");
|
|
115
119
|
export const CatalogCliCommand = z
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-capabilities.js","sourceRoot":"","sources":["../src/agent-capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-capabilities.js","sourceRoot":"","sources":["../src/agent-capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEtD;;;;;;;;GAQG;AAEH;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC5C,UAAU;IACV,QAAQ;IACR,WAAW;IACX,SAAS;IACT,SAAS;IACT,aAAa;IACb,oBAAoB;CACZ,CAAC;AAEX;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAuD;IACjF,GAAG,EAAE,MAAM;IACX,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;CACf,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC;KACjC,MAAM,CAAC;IACN,MAAM,EAAE,CAAC;SACN,IAAI,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;SACjC,QAAQ,CACP,iKAAiK,CAClK;IACH,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,4EAA4E,CAAC;IACzF,eAAe,EAAE,CAAC;SACf,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,+FAA+F,CAChG;CACJ,CAAC;KACD,QAAQ,CAAC,qFAAqF,CAAC,CAAC;AAGnG,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC;KAC5B,MAAM,CAAC;IACN,EAAE,EAAE,CAAC;SACF,MAAM,EAAE;SACR,QAAQ,CAAC,yEAAyE,CAAC;IACtF,OAAO,EAAE,CAAC;SACP,OAAO,EAAE;SACT,QAAQ,CACP,4HAA4H,CAC7H;IACH,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IACzE,MAAM,EAAE,aAAa,CAAC,QAAQ,CAC5B,2EAA2E,CAC5E;IACD,cAAc,EAAE,cAAc,CAAC,QAAQ,CAAC,sCAAsC,CAAC;IAC/E,cAAc,EAAE,CAAC;SACd,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,CAAC,2DAA2D,CAAC;IACxE,eAAe,EAAE,CAAC;SACf,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,CAAC,0DAA0D,CAAC;IACvE,OAAO,EAAE,CAAC;SACP,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,CAAC,6EAA6E,CAAC;IAC1F,eAAe,EAAE,CAAC;SACf,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,0FAA0F,CAC3F;IACH,oBAAoB,EAAE,CAAC;SACpB,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,kFAAkF,CAAC;IAC/F,MAAM,EAAE,mBAAmB;IAC3B,SAAS,EAAE,CAAC;SACT,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;SACjD,QAAQ,CAAC,yDAAyD,CAAC;IACtE,gBAAgB,EAAE,CAAC;SAChB,KAAK,CAAC,oBAAoB,CAAC;SAC3B,QAAQ,CAAC,uEAAuE,CAAC;IACpF,YAAY,EAAE,CAAC;SACZ,KAAK,CAAC,UAAU,CAAC;SACjB,QAAQ,CAAC,0EAA0E,CAAC;IACvF,uBAAuB,EAAE,CAAC;SACvB,KAAK,CAAC,aAAa,CAAC;SACpB,QAAQ,CAAC,0CAA0C,CAAC;IACvD,iBAAiB,EAAE,iBAAiB,CAAC,QAAQ,CAC3C,8IAA8I,CAC/I;IACD,UAAU,EAAE,oBAAoB,CAAC,QAAQ,CACvC,yEAAyE,CAC1E;IACD,UAAU,EAAE,oBAAoB,CAAC,QAAQ,EAAE;SACxC,QAAQ,EAAE;SACV,QAAQ,CACP,4JAA4J,CAC7J;CACJ,CAAC;KACD,QAAQ,CAAC,oEAAoE,CAAC,CAAC;AAGlF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC;KAC/B,MAAM,CAAC;IACN,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;IACpC,UAAU,EAAE,CAAC;SACV,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;SAC1C,QAAQ,CACP,kLAAkL,CACnL;IACH,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IACzF,QAAQ,EAAE,CAAC;SACR,OAAO,EAAE;SACT,QAAQ,CAAC,mEAAmE,CAAC;CACjF,CAAC;KACD,QAAQ,CACP,2FAA2F,CAC5F,CAAC;AAGJ,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC;KACrC,MAAM,CAAC;IACN,aAAa,EAAE,CAAC;SACb,KAAK,CAAC,QAAQ,CAAC;SACf,QAAQ,CAAC,gEAAgE,CAAC;IAC7E,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,iDAAiD,CAAC;IACzF,cAAc,EAAE,CAAC;SACd,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;SACnC,QAAQ,CACP,sIAAsI,CACvI;IACH,cAAc,EAAE,CAAC;SACd,KAAK,CAAC,aAAa,CAAC;SACpB,QAAQ,CAAC,+CAA+C,CAAC;IAC5D,cAAc,EAAE,CAAC;SACd,KAAK,CAAC,aAAa,CAAC;SACpB,QAAQ,CACP,iHAAiH,CAClH;IACH,UAAU,EAAE,CAAC;SACV,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;SAClD,QAAQ,CAAC,iEAAiE,CAAC;CAC/E,CAAC;KACD,QAAQ,CACP,uHAAuH,CACxH,CAAC;AAGJ,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC;KACxC,MAAM,CAAC;IACN,OAAO,EAAE,mBAAmB,CAAC,QAAQ,CAAC,uDAAuD,CAAC;IAC9F,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;IAClF,kBAAkB,EAAE,CAAC;SAClB,OAAO,EAAE;SACT,QAAQ,CAAC,+EAA+E,CAAC;CAC7F,CAAC;KACD,QAAQ,CAAC,sEAAsE,CAAC,CAAC;AAGpF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC;KACpC,MAAM,CAAC;IACN,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,oDAAoD,CAAC;IAClF,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,QAAQ,CACP,uGAAuG,CACxG;IACH,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;IAChF,GAAG,EAAE,aAAa,CAAC,QAAQ,CACzB,iGAAiG,CAClG;IACD,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,gDAAgD,CAAC;IAC7F,kBAAkB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,yCAAyC,CAAC;IAC3F,KAAK,EAAE,CAAC;SACL,KAAK,CAAC,QAAQ,CAAC;SACf,QAAQ,CACP,uFAAuF,CACxF;IACH,cAAc,EAAE,CAAC;SACd,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,CACP,uIAAuI,CACxI;IACH,oBAAoB,EAAE,CAAC;SACpB,KAAK,CAAC,0BAA0B,CAAC;SACjC,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,8EAA8E,CAAC;IAC3F,UAAU,EAAE,uBAAuB;IACnC,WAAW,EAAE,CAAC;SACX,KAAK,CAAC,iBAAiB,CAAC;SACxB,QAAQ,CACP,qFAAqF,CACtF;IACH,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,+CAA+C,CAAC;IACvF,cAAc,EAAE,CAAC;SACd,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,CACP,gMAAgM,CACjM;CACJ,CAAC;KACD,QAAQ,CACP,2FAA2F,CAC5F,CAAC"}
|
package/dist/config.d.ts
CHANGED
|
@@ -371,10 +371,11 @@ export declare const GlobalConfig: z.ZodObject<{
|
|
|
371
371
|
keep_last_runs_per_project?: number | undefined;
|
|
372
372
|
}>>;
|
|
373
373
|
/**
|
|
374
|
-
* Durable NON-SECRET
|
|
375
|
-
*
|
|
376
|
-
*
|
|
377
|
-
*
|
|
374
|
+
* Durable NON-SECRET named-binding registry (INV-135): additional routing
|
|
375
|
+
* bindings per harness beyond the engine default. Uniqueness of
|
|
376
|
+
* (harness_id, profile_id) is enforced here; credential material may live
|
|
377
|
+
* in Claudexor-owned scoped state, a managed secret store, or a
|
|
378
|
+
* platform-declared vendor/OS-user store, never in config.
|
|
378
379
|
*/
|
|
379
380
|
credential_profiles: z.ZodEffects<z.ZodDefault<z.ZodArray<z.ZodEffects<z.ZodObject<{
|
|
380
381
|
profile_id: z.ZodString;
|
|
@@ -460,20 +461,28 @@ export declare const GlobalConfig: z.ZodObject<{
|
|
|
460
461
|
/**
|
|
461
462
|
* ONE typed profile-selection policy (INV-135, W5.4): what happens
|
|
462
463
|
* when the selected credential profile hits its vendor limit.
|
|
463
|
-
*
|
|
464
|
-
*
|
|
465
|
-
*
|
|
464
|
+
* `auto` is the stored default and resolves BY CREDENTIAL KIND at
|
|
465
|
+
* decision time (`effectiveLimitAction`): rotate for subscription
|
|
466
|
+
* (`local_session`) subjects, fail for metered API-key or unknown
|
|
467
|
+
* routes. This SUPERSEDES the earlier "rotation is opt-in" lock
|
|
468
|
+
* (CONCEPT-CHANGE(INV-135), owner decision 2026-08-17): a spent
|
|
469
|
+
* subscription window fails over by default, while explicitly
|
|
470
|
+
* persisted `fail`/`ask`/`rotate` values keep their exact meaning
|
|
471
|
+
* and are never rewritten — only the interpretation of an ABSENT
|
|
472
|
+
* key changed. Rotation still fires only on typed vendor-limit
|
|
473
|
+
* signals, proactive headroom breaches, or the structural
|
|
474
|
+
* pre-progress predicate — never on ordinary network errors.
|
|
466
475
|
*/
|
|
467
476
|
profile_policy: z.ZodDefault<z.ZodObject<{
|
|
468
|
-
limit_action: z.ZodDefault<z.ZodEnum<["fail", "ask", "rotate"]>>;
|
|
477
|
+
limit_action: z.ZodDefault<z.ZodEnum<["auto", "fail", "ask", "rotate"]>>;
|
|
469
478
|
rotation_eligible: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
470
479
|
headroom_threshold: z.ZodDefault<z.ZodNumber>;
|
|
471
480
|
}, "strict", z.ZodTypeAny, {
|
|
472
|
-
limit_action: "ask" | "fail" | "rotate";
|
|
481
|
+
limit_action: "ask" | "auto" | "fail" | "rotate";
|
|
473
482
|
rotation_eligible: string[];
|
|
474
483
|
headroom_threshold: number;
|
|
475
484
|
}, {
|
|
476
|
-
limit_action?: "ask" | "fail" | "rotate" | undefined;
|
|
485
|
+
limit_action?: "ask" | "auto" | "fail" | "rotate" | undefined;
|
|
477
486
|
rotation_eligible?: string[] | undefined;
|
|
478
487
|
headroom_threshold?: number | undefined;
|
|
479
488
|
}>>;
|
|
@@ -491,7 +500,7 @@ export declare const GlobalConfig: z.ZodObject<{
|
|
|
491
500
|
max_turns: number | null;
|
|
492
501
|
max_rounds: number | null;
|
|
493
502
|
profile_policy: {
|
|
494
|
-
limit_action: "ask" | "fail" | "rotate";
|
|
503
|
+
limit_action: "ask" | "auto" | "fail" | "rotate";
|
|
495
504
|
rotation_eligible: string[];
|
|
496
505
|
headroom_threshold: number;
|
|
497
506
|
};
|
|
@@ -508,7 +517,7 @@ export declare const GlobalConfig: z.ZodObject<{
|
|
|
508
517
|
max_turns?: number | null | undefined;
|
|
509
518
|
max_rounds?: number | null | undefined;
|
|
510
519
|
profile_policy?: {
|
|
511
|
-
limit_action?: "ask" | "fail" | "rotate" | undefined;
|
|
520
|
+
limit_action?: "ask" | "auto" | "fail" | "rotate" | undefined;
|
|
512
521
|
rotation_eligible?: string[] | undefined;
|
|
513
522
|
headroom_threshold?: number | undefined;
|
|
514
523
|
} | undefined;
|
|
@@ -575,7 +584,7 @@ export declare const GlobalConfig: z.ZodObject<{
|
|
|
575
584
|
max_turns: number | null;
|
|
576
585
|
max_rounds: number | null;
|
|
577
586
|
profile_policy: {
|
|
578
|
-
limit_action: "ask" | "fail" | "rotate";
|
|
587
|
+
limit_action: "ask" | "auto" | "fail" | "rotate";
|
|
579
588
|
rotation_eligible: string[];
|
|
580
589
|
headroom_threshold: number;
|
|
581
590
|
};
|
|
@@ -642,7 +651,7 @@ export declare const GlobalConfig: z.ZodObject<{
|
|
|
642
651
|
max_turns?: number | null | undefined;
|
|
643
652
|
max_rounds?: number | null | undefined;
|
|
644
653
|
profile_policy?: {
|
|
645
|
-
limit_action?: "ask" | "fail" | "rotate" | undefined;
|
|
654
|
+
limit_action?: "ask" | "auto" | "fail" | "rotate" | undefined;
|
|
646
655
|
rotation_eligible?: string[] | undefined;
|
|
647
656
|
headroom_threshold?: number | undefined;
|
|
648
657
|
} | undefined;
|
|
@@ -1003,10 +1012,11 @@ export declare const ResolvedConfig: z.ZodObject<{
|
|
|
1003
1012
|
keep_last_runs_per_project?: number | undefined;
|
|
1004
1013
|
}>>;
|
|
1005
1014
|
/**
|
|
1006
|
-
* Durable NON-SECRET
|
|
1007
|
-
*
|
|
1008
|
-
*
|
|
1009
|
-
*
|
|
1015
|
+
* Durable NON-SECRET named-binding registry (INV-135): additional routing
|
|
1016
|
+
* bindings per harness beyond the engine default. Uniqueness of
|
|
1017
|
+
* (harness_id, profile_id) is enforced here; credential material may live
|
|
1018
|
+
* in Claudexor-owned scoped state, a managed secret store, or a
|
|
1019
|
+
* platform-declared vendor/OS-user store, never in config.
|
|
1010
1020
|
*/
|
|
1011
1021
|
credential_profiles: z.ZodEffects<z.ZodDefault<z.ZodArray<z.ZodEffects<z.ZodObject<{
|
|
1012
1022
|
profile_id: z.ZodString;
|
|
@@ -1092,20 +1102,28 @@ export declare const ResolvedConfig: z.ZodObject<{
|
|
|
1092
1102
|
/**
|
|
1093
1103
|
* ONE typed profile-selection policy (INV-135, W5.4): what happens
|
|
1094
1104
|
* when the selected credential profile hits its vendor limit.
|
|
1095
|
-
*
|
|
1096
|
-
*
|
|
1097
|
-
*
|
|
1105
|
+
* `auto` is the stored default and resolves BY CREDENTIAL KIND at
|
|
1106
|
+
* decision time (`effectiveLimitAction`): rotate for subscription
|
|
1107
|
+
* (`local_session`) subjects, fail for metered API-key or unknown
|
|
1108
|
+
* routes. This SUPERSEDES the earlier "rotation is opt-in" lock
|
|
1109
|
+
* (CONCEPT-CHANGE(INV-135), owner decision 2026-08-17): a spent
|
|
1110
|
+
* subscription window fails over by default, while explicitly
|
|
1111
|
+
* persisted `fail`/`ask`/`rotate` values keep their exact meaning
|
|
1112
|
+
* and are never rewritten — only the interpretation of an ABSENT
|
|
1113
|
+
* key changed. Rotation still fires only on typed vendor-limit
|
|
1114
|
+
* signals, proactive headroom breaches, or the structural
|
|
1115
|
+
* pre-progress predicate — never on ordinary network errors.
|
|
1098
1116
|
*/
|
|
1099
1117
|
profile_policy: z.ZodDefault<z.ZodObject<{
|
|
1100
|
-
limit_action: z.ZodDefault<z.ZodEnum<["fail", "ask", "rotate"]>>;
|
|
1118
|
+
limit_action: z.ZodDefault<z.ZodEnum<["auto", "fail", "ask", "rotate"]>>;
|
|
1101
1119
|
rotation_eligible: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
1102
1120
|
headroom_threshold: z.ZodDefault<z.ZodNumber>;
|
|
1103
1121
|
}, "strict", z.ZodTypeAny, {
|
|
1104
|
-
limit_action: "ask" | "fail" | "rotate";
|
|
1122
|
+
limit_action: "ask" | "auto" | "fail" | "rotate";
|
|
1105
1123
|
rotation_eligible: string[];
|
|
1106
1124
|
headroom_threshold: number;
|
|
1107
1125
|
}, {
|
|
1108
|
-
limit_action?: "ask" | "fail" | "rotate" | undefined;
|
|
1126
|
+
limit_action?: "ask" | "auto" | "fail" | "rotate" | undefined;
|
|
1109
1127
|
rotation_eligible?: string[] | undefined;
|
|
1110
1128
|
headroom_threshold?: number | undefined;
|
|
1111
1129
|
}>>;
|
|
@@ -1123,7 +1141,7 @@ export declare const ResolvedConfig: z.ZodObject<{
|
|
|
1123
1141
|
max_turns: number | null;
|
|
1124
1142
|
max_rounds: number | null;
|
|
1125
1143
|
profile_policy: {
|
|
1126
|
-
limit_action: "ask" | "fail" | "rotate";
|
|
1144
|
+
limit_action: "ask" | "auto" | "fail" | "rotate";
|
|
1127
1145
|
rotation_eligible: string[];
|
|
1128
1146
|
headroom_threshold: number;
|
|
1129
1147
|
};
|
|
@@ -1140,7 +1158,7 @@ export declare const ResolvedConfig: z.ZodObject<{
|
|
|
1140
1158
|
max_turns?: number | null | undefined;
|
|
1141
1159
|
max_rounds?: number | null | undefined;
|
|
1142
1160
|
profile_policy?: {
|
|
1143
|
-
limit_action?: "ask" | "fail" | "rotate" | undefined;
|
|
1161
|
+
limit_action?: "ask" | "auto" | "fail" | "rotate" | undefined;
|
|
1144
1162
|
rotation_eligible?: string[] | undefined;
|
|
1145
1163
|
headroom_threshold?: number | undefined;
|
|
1146
1164
|
} | undefined;
|
|
@@ -1207,7 +1225,7 @@ export declare const ResolvedConfig: z.ZodObject<{
|
|
|
1207
1225
|
max_turns: number | null;
|
|
1208
1226
|
max_rounds: number | null;
|
|
1209
1227
|
profile_policy: {
|
|
1210
|
-
limit_action: "ask" | "fail" | "rotate";
|
|
1228
|
+
limit_action: "ask" | "auto" | "fail" | "rotate";
|
|
1211
1229
|
rotation_eligible: string[];
|
|
1212
1230
|
headroom_threshold: number;
|
|
1213
1231
|
};
|
|
@@ -1274,7 +1292,7 @@ export declare const ResolvedConfig: z.ZodObject<{
|
|
|
1274
1292
|
max_turns?: number | null | undefined;
|
|
1275
1293
|
max_rounds?: number | null | undefined;
|
|
1276
1294
|
profile_policy?: {
|
|
1277
|
-
limit_action?: "ask" | "fail" | "rotate" | undefined;
|
|
1295
|
+
limit_action?: "ask" | "auto" | "fail" | "rotate" | undefined;
|
|
1278
1296
|
rotation_eligible?: string[] | undefined;
|
|
1279
1297
|
headroom_threshold?: number | undefined;
|
|
1280
1298
|
} | undefined;
|
|
@@ -1382,7 +1400,7 @@ export declare const ResolvedConfig: z.ZodObject<{
|
|
|
1382
1400
|
max_turns: number | null;
|
|
1383
1401
|
max_rounds: number | null;
|
|
1384
1402
|
profile_policy: {
|
|
1385
|
-
limit_action: "ask" | "fail" | "rotate";
|
|
1403
|
+
limit_action: "ask" | "auto" | "fail" | "rotate";
|
|
1386
1404
|
rotation_eligible: string[];
|
|
1387
1405
|
headroom_threshold: number;
|
|
1388
1406
|
};
|
|
@@ -1490,7 +1508,7 @@ export declare const ResolvedConfig: z.ZodObject<{
|
|
|
1490
1508
|
max_turns?: number | null | undefined;
|
|
1491
1509
|
max_rounds?: number | null | undefined;
|
|
1492
1510
|
profile_policy?: {
|
|
1493
|
-
limit_action?: "ask" | "fail" | "rotate" | undefined;
|
|
1511
|
+
limit_action?: "ask" | "auto" | "fail" | "rotate" | undefined;
|
|
1494
1512
|
rotation_eligible?: string[] | undefined;
|
|
1495
1513
|
headroom_threshold?: number | undefined;
|
|
1496
1514
|
} | undefined;
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAY3B;;6EAE6E;AAC7E,eAAO,MAAM,0BAA0B,mBAAwB,CAAC;AAEhE;;uCAEuC;AACvC,eAAO,MAAM,uBAAuB,4BAMvB,CAAC;AAEd;;;;;;kEAMkE;AAClE,eAAO,MAAM,qCAAqC,UAAY,CAAC;AAW/D;;;;GAIG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiDvB,CAAC;AACJ,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,8EAA8E;AAC9E,eAAO,MAAM,WAAW;;;;IAUpB;;;;;;OAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgBJ,CAAC;AACJ,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD,qEAAqE;AACrE,eAAO,MAAM,YAAY;;IAGrB;8EAC0E;;;;;QAetE;;;;WAIG;;QAOH,iEAAiE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAYjE;;;;;;;;WAQG;;;;;;;;;;;;;;;;;;;;QAcH;;;WAGG;;;;;;;;;;;;;;;QAkCH;;;;;;;;;;;;;WAaG;;;;;;;;;;;;;;;;;;;IAaP;;;;;;OAMG;;;;;;;;;;;;;;IAyBH
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/config.js
CHANGED
|
@@ -258,16 +258,18 @@ export const GlobalConfig = z
|
|
|
258
258
|
.default({})
|
|
259
259
|
.describe("Disk retention policy for engine-owned runtime artifacts."),
|
|
260
260
|
/**
|
|
261
|
-
* Durable NON-SECRET
|
|
262
|
-
*
|
|
263
|
-
*
|
|
264
|
-
*
|
|
261
|
+
* Durable NON-SECRET named-binding registry (INV-135): additional routing
|
|
262
|
+
* bindings per harness beyond the engine default. Uniqueness of
|
|
263
|
+
* (harness_id, profile_id) is enforced here; credential material may live
|
|
264
|
+
* in Claudexor-owned scoped state, a managed secret store, or a
|
|
265
|
+
* platform-declared vendor/OS-user store, never in config.
|
|
265
266
|
*/
|
|
266
267
|
credential_profiles: z
|
|
267
268
|
.array(CredentialProfile)
|
|
268
269
|
.default([])
|
|
269
270
|
.superRefine((profiles, ctx) => {
|
|
270
271
|
const seen = new Set();
|
|
272
|
+
const locators = new Set();
|
|
271
273
|
for (const p of profiles) {
|
|
272
274
|
const key = `${p.harness_id}\u0000${p.profile_id}`;
|
|
273
275
|
if (seen.has(key))
|
|
@@ -276,9 +278,20 @@ export const GlobalConfig = z
|
|
|
276
278
|
message: `duplicate credential profile ${p.profile_id} for harness ${p.harness_id}`,
|
|
277
279
|
});
|
|
278
280
|
seen.add(key);
|
|
281
|
+
// Locator uniqueness (unified account model): two rows sharing one
|
|
282
|
+
// config dir would be two names for ONE scoped state root — deletion,
|
|
283
|
+
// routing, and quota attribution could not tell them apart.
|
|
284
|
+
if (p.isolation_locator) {
|
|
285
|
+
if (locators.has(p.isolation_locator))
|
|
286
|
+
ctx.addIssue({
|
|
287
|
+
code: "custom",
|
|
288
|
+
message: `credential profiles must not share isolation_locator ${p.isolation_locator}`,
|
|
289
|
+
});
|
|
290
|
+
locators.add(p.isolation_locator);
|
|
291
|
+
}
|
|
279
292
|
}
|
|
280
293
|
})
|
|
281
|
-
.describe("Durable non-secret
|
|
294
|
+
.describe("Durable non-secret named-binding registry; credential material may live in Claudexor-owned scoped state, a managed secret store, or a platform-declared vendor/OS-user store, never in config."),
|
|
282
295
|
harnesses: z
|
|
283
296
|
.record(z.string(), z
|
|
284
297
|
.object({
|
|
@@ -325,16 +338,24 @@ export const GlobalConfig = z
|
|
|
325
338
|
/**
|
|
326
339
|
* ONE typed profile-selection policy (INV-135, W5.4): what happens
|
|
327
340
|
* when the selected credential profile hits its vendor limit.
|
|
328
|
-
*
|
|
329
|
-
*
|
|
330
|
-
*
|
|
341
|
+
* `auto` is the stored default and resolves BY CREDENTIAL KIND at
|
|
342
|
+
* decision time (`effectiveLimitAction`): rotate for subscription
|
|
343
|
+
* (`local_session`) subjects, fail for metered API-key or unknown
|
|
344
|
+
* routes. This SUPERSEDES the earlier "rotation is opt-in" lock
|
|
345
|
+
* (CONCEPT-CHANGE(INV-135), owner decision 2026-08-17): a spent
|
|
346
|
+
* subscription window fails over by default, while explicitly
|
|
347
|
+
* persisted `fail`/`ask`/`rotate` values keep their exact meaning
|
|
348
|
+
* and are never rewritten — only the interpretation of an ABSENT
|
|
349
|
+
* key changed. Rotation still fires only on typed vendor-limit
|
|
350
|
+
* signals, proactive headroom breaches, or the structural
|
|
351
|
+
* pre-progress predicate — never on ordinary network errors.
|
|
331
352
|
*/
|
|
332
353
|
profile_policy: z
|
|
333
354
|
.object({
|
|
334
355
|
limit_action: z
|
|
335
|
-
.enum(["fail", "ask", "rotate"])
|
|
336
|
-
.default("
|
|
337
|
-
.describe("On a typed vendor limit: fail the attempt, surface a typed ask, or rotate to the next eligible profile."),
|
|
356
|
+
.enum(["auto", "fail", "ask", "rotate"])
|
|
357
|
+
.default("auto")
|
|
358
|
+
.describe("On a typed vendor limit: auto (kind-aware default — rotate for subscription subjects, fail for metered), fail the attempt, surface a typed ask, or rotate to the next eligible profile."),
|
|
338
359
|
rotation_eligible: z
|
|
339
360
|
.array(z.string())
|
|
340
361
|
.default([])
|