@claudexor/harness-agy 3.8.0 → 3.8.2
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/README.md +13 -3
- package/dist/index.d.ts +8 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +61 -22
- package/dist/index.js.map +1 -1
- package/dist/keychain.d.ts +41 -0
- package/dist/keychain.d.ts.map +1 -0
- package/dist/keychain.js +354 -0
- package/dist/keychain.js.map +1 -0
- package/dist/profile.d.ts +2 -0
- package/dist/profile.d.ts.map +1 -1
- package/dist/profile.js +23 -1
- package/dist/profile.js.map +1 -1
- package/dist/vendor-cli-version.d.ts +6 -3
- package/dist/vendor-cli-version.d.ts.map +1 -1
- package/dist/vendor-cli-version.js +6 -3
- package/dist/vendor-cli-version.js.map +1 -1
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -6,9 +6,19 @@ Adapter for Google's Antigravity CLI (`agy`): translates
|
|
|
6
6
|
Accounts use NAMED credential-profile bindings only (there is no engine-default
|
|
7
7
|
agy credential). Every binding has a Claudexor-owned HOME that scopes vendor
|
|
8
8
|
state under `$HOME/.gemini/...`; credential custody is platform-defined.
|
|
9
|
-
Darwin
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
On Darwin, Claudexor lazily prepares the profile's own
|
|
10
|
+
`Library/Keychains/login.keychain-db` before an agy child starts. When setup
|
|
11
|
+
succeeds this prevents the missing-keychain prompt; an unsafe profile path
|
|
12
|
+
refuses that child before it can trigger SecurityAgent, while an operational
|
|
13
|
+
setup miss leaves the vendor's own file fallback available. The implementation
|
|
14
|
+
bootstraps the DB under a neutral filename and adopts the canonical name,
|
|
15
|
+
because Apple's `security` tool treats a path containing `login.keychain` as a
|
|
16
|
+
user search-list entry. This keeps host default/list preferences untouched.
|
|
17
|
+
The vendor still owns the item; no host Keychain is bridged and no credential
|
|
18
|
+
bytes are copied. Linux keeps the config-file/HOME route.
|
|
19
|
+
Windows uses the current OS user's Credential Manager identity, permits one
|
|
20
|
+
enabled binding, and treats HOME as state scoping rather than an independent
|
|
21
|
+
Google identity.
|
|
12
22
|
Readiness always comes from the bounded vendor `/model` probe, never from the
|
|
13
23
|
presence or absence of `antigravity-oauth-token`. See `src/profile.ts` for the
|
|
14
24
|
route and verification contract.
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { HarnessCapabilityProfile } from "@claudexor/schema";
|
|
2
2
|
import type { HarnessAdapter } from "@claudexor/core";
|
|
3
3
|
export { AGY_BIN, agyProfileRunEnv, canonicalAgyProfileHome } from "./profile.js";
|
|
4
|
+
export { isAgyProfileKeychainUnsafe, prepareAgyProfileKeychain } from "./keychain.js";
|
|
4
5
|
export { classifyAgyPrintResult, runAgyPrintCommand, type AgyPrintClassification, } from "./print-command.js";
|
|
5
6
|
/**
|
|
6
7
|
* The vendor's two quota GROUPS map onto disjoint halves of the same
|
|
@@ -17,12 +18,17 @@ export declare const AGY_MANAGED_LOGIN: {
|
|
|
17
18
|
/**
|
|
18
19
|
* Static auth/profile policy. Windows Credential Manager is scoped to the OS
|
|
19
20
|
* user, not the profile HOME, so only one enabled binding is honest there.
|
|
20
|
-
* Darwin
|
|
21
|
+
* Darwin keeps both the vendor file fallback and its private profile-local
|
|
22
|
+
* keychain; Linux retains the legacy profile-scoped file route.
|
|
21
23
|
*/
|
|
22
24
|
export declare const AGY_CAPABILITY_PROFILE: HarnessCapabilityProfile;
|
|
23
25
|
/** Platform disclosure derived from the same transport and effective-policy
|
|
24
26
|
* facts used by admission. Darwin is the one live-proven profile-isolation
|
|
25
27
|
* lane; other lanes stay explicit rather than maintaining parallel truth. */
|
|
26
28
|
export declare function agyPlatformIsolationDetail(platform?: NodeJS.Platform): string | null;
|
|
27
|
-
export
|
|
29
|
+
export interface AgyAdapterOptions {
|
|
30
|
+
/** Test seam; production prepares the declared private Darwin keychain. */
|
|
31
|
+
prepareProfileKeychain?: (home: string, platform?: NodeJS.Platform) => void;
|
|
32
|
+
}
|
|
33
|
+
export declare function createAgyAdapter(options?: AgyAdapterOptions): HarnessAdapter;
|
|
28
34
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,wBAAwB,EAIzB,MAAM,mBAAmB,CAAC;AAQ3B,OAAO,KAAK,EAAc,cAAc,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,wBAAwB,EAIzB,MAAM,mBAAmB,CAAC;AAQ3B,OAAO,KAAK,EAAc,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAsBlE,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAClF,OAAO,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AACtF,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,KAAK,sBAAsB,GAC5B,MAAM,oBAAoB,CAAC;AA0D5B;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,0WAA0D,CAAC;AACzF,eAAO,MAAM,sBAAsB,0WAA2D,CAAC;AAE/F,4EAA4E;AAC5E,eAAO,MAAM,iBAAiB;aAAK,KAAK,EAAE,UAAU;CAAW,CAAC;AAEhE;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,EAAE,wBA+CjC,CAAC;AAEL;;6EAE6E;AAC7E,wBAAgB,0BAA0B,CACxC,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,MAAM,GAAG,IAAI,CAgBf;AAeD,MAAM,WAAW,iBAAiB;IAChC,2EAA2E;IAC3E,sBAAsB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC;CAC7E;AAED,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,iBAAsB,GAAG,cAAc,CAiLhF"}
|
package/dist/index.js
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import { ConformanceReport as ConformanceReportSchema, credentialProfilePolicyForPlatform, credentialTransportsForPlatform, HarnessCapabilityProfile as HarnessCapabilityProfileSchema, HarnessManifest as HarnessManifestSchema, } from "@claudexor/schema";
|
|
2
|
-
import { HarnessUnavailableError, harnessPlatform, promptWithInstructions, runCapture, runCliHarness, } from "@claudexor/core";
|
|
2
|
+
import { HarnessUnavailableError, harnessPlatform, needsPrivatePerProfileKeychain, promptWithInstructions, runCapture, runCliHarness, } from "@claudexor/core";
|
|
3
3
|
import { CLAUDEXOR_VERSION, nowIso, redactSecrets } from "@claudexor/util";
|
|
4
4
|
import { parseAgyEvent } from "./parse.js";
|
|
5
|
-
import {
|
|
5
|
+
import { isAgyProfileKeychainUnsafe, prepareAgyProfileKeychain } from "./keychain.js";
|
|
6
|
+
import { AGY_BIN, defaultAgyModelProbe, probeAgyCredentialProfile, resolveAgyProfileRoute, } from "./profile.js";
|
|
6
7
|
import { AGY_VENDOR_CLI_VERSION } from "./vendor-cli-version.js";
|
|
7
8
|
// The package publishes only what other packages consume. The profile probe,
|
|
8
9
|
// the route resolver and the stream parser are reached through the adapter
|
|
9
10
|
// this file returns, so re-exporting them would be a dead public surface.
|
|
10
11
|
export { AGY_BIN, agyProfileRunEnv, canonicalAgyProfileHome } from "./profile.js";
|
|
12
|
+
export { isAgyProfileKeychainUnsafe, prepareAgyProfileKeychain } from "./keychain.js";
|
|
11
13
|
export { classifyAgyPrintResult, runAgyPrintCommand, } from "./print-command.js";
|
|
12
14
|
/**
|
|
13
15
|
* Access mapping, each leg LIVE-PROVEN on agy 1.1.13 (PLAN §1.2 F11, §1.2d):
|
|
@@ -22,7 +24,6 @@ function accessArgs(access) {
|
|
|
22
24
|
case "workspace_write":
|
|
23
25
|
return ["--mode", "accept-edits"];
|
|
24
26
|
case "full":
|
|
25
|
-
case "external_sandbox_full":
|
|
26
27
|
return ["--dangerously-skip-permissions"];
|
|
27
28
|
case "inherit_native":
|
|
28
29
|
return [];
|
|
@@ -77,7 +78,8 @@ export const AGY_MANAGED_LOGIN = { stdin: "terminal" };
|
|
|
77
78
|
/**
|
|
78
79
|
* Static auth/profile policy. Windows Credential Manager is scoped to the OS
|
|
79
80
|
* user, not the profile HOME, so only one enabled binding is honest there.
|
|
80
|
-
* Darwin
|
|
81
|
+
* Darwin keeps both the vendor file fallback and its private profile-local
|
|
82
|
+
* keychain; Linux retains the legacy profile-scoped file route.
|
|
81
83
|
*/
|
|
82
84
|
export const AGY_CAPABILITY_PROFILE = HarnessCapabilityProfileSchema.parse({
|
|
83
85
|
auth: {
|
|
@@ -88,7 +90,19 @@ export const AGY_CAPABILITY_PROFILE = HarnessCapabilityProfileSchema.parse({
|
|
|
88
90
|
source: "native_session",
|
|
89
91
|
kind: "config_file",
|
|
90
92
|
relocatable_by: ["HOME"],
|
|
91
|
-
platforms: ["
|
|
93
|
+
platforms: ["linux"],
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
source: "native_session",
|
|
97
|
+
kind: "config_file",
|
|
98
|
+
relocatable_by: ["HOME"],
|
|
99
|
+
platforms: ["darwin"],
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
source: "native_session",
|
|
103
|
+
kind: "os_keychain",
|
|
104
|
+
relocatable_by: ["HOME"],
|
|
105
|
+
platforms: ["darwin"],
|
|
92
106
|
},
|
|
93
107
|
{
|
|
94
108
|
source: "native_session",
|
|
@@ -109,7 +123,9 @@ export const AGY_CAPABILITY_PROFILE = HarnessCapabilityProfileSchema.parse({
|
|
|
109
123
|
managed_login: AGY_MANAGED_LOGIN,
|
|
110
124
|
},
|
|
111
125
|
access_control: { readonly_mechanism: "permission_deny" },
|
|
112
|
-
isolation: {
|
|
126
|
+
isolation: {
|
|
127
|
+
supported_containment: ["env_or_file_injection", "private_per_profile_keychain"],
|
|
128
|
+
},
|
|
113
129
|
attachment_inputs: [],
|
|
114
130
|
});
|
|
115
131
|
/** Platform disclosure derived from the same transport and effective-policy
|
|
@@ -141,7 +157,13 @@ const AGY_ENABLED_INTENTS = [
|
|
|
141
157
|
"synthesize",
|
|
142
158
|
"audit",
|
|
143
159
|
];
|
|
144
|
-
export function createAgyAdapter() {
|
|
160
|
+
export function createAgyAdapter(options = {}) {
|
|
161
|
+
const prepareProfileKeychain = options.prepareProfileKeychain ??
|
|
162
|
+
((home, platform = process.platform) => {
|
|
163
|
+
if (!needsPrivatePerProfileKeychain(AGY_CAPABILITY_PROFILE, platform))
|
|
164
|
+
return;
|
|
165
|
+
prepareAgyProfileKeychain(home, { platform });
|
|
166
|
+
});
|
|
145
167
|
return {
|
|
146
168
|
id: "agy",
|
|
147
169
|
capabilityProfile: AGY_CAPABILITY_PROFILE,
|
|
@@ -182,13 +204,7 @@ export function createAgyAdapter() {
|
|
|
182
204
|
},
|
|
183
205
|
capability_profile: AGY_CAPABILITY_PROFILE,
|
|
184
206
|
auth_modes: ["local_session"],
|
|
185
|
-
access_profiles_supported: [
|
|
186
|
-
"readonly",
|
|
187
|
-
"workspace_write",
|
|
188
|
-
"full",
|
|
189
|
-
"external_sandbox_full",
|
|
190
|
-
"inherit_native",
|
|
191
|
-
],
|
|
207
|
+
access_profiles_supported: ["readonly", "workspace_write", "full", "inherit_native"],
|
|
192
208
|
});
|
|
193
209
|
},
|
|
194
210
|
async doctor(spec) {
|
|
@@ -197,10 +213,11 @@ export function createAgyAdapter() {
|
|
|
197
213
|
const versionDrift = version !== null && installedSemver !== AGY_VENDOR_CLI_VERSION
|
|
198
214
|
? `installed agy "${version}" differs from the verified ${AGY_VENDOR_CLI_VERSION}; the platform credential transport and profile policy are re-proven per version (R-2')`
|
|
199
215
|
: null;
|
|
200
|
-
// Л-24 + INV-067:
|
|
201
|
-
//
|
|
202
|
-
// account proof. Windows has
|
|
203
|
-
//
|
|
216
|
+
// Л-24 + INV-067: Darwin's profile-local keychain plus vendor fallback
|
|
217
|
+
// preserves the proven profile identity route. Linux retains the
|
|
218
|
+
// config-file transport without a live multi-account proof. Windows has
|
|
219
|
+
// a different effective policy altogether: the vendor credential is
|
|
220
|
+
// OS-user-scoped and HOME scopes state only.
|
|
204
221
|
const platformProof = agyPlatformIsolationDetail();
|
|
205
222
|
const requestedSource = spec.authSource;
|
|
206
223
|
if (requestedSource !== undefined && requestedSource !== "native_session") {
|
|
@@ -288,21 +305,24 @@ export function createAgyAdapter() {
|
|
|
288
305
|
});
|
|
289
306
|
},
|
|
290
307
|
run(spec) {
|
|
291
|
-
return runAgy(spec);
|
|
308
|
+
return runAgy(spec, prepareProfileKeychain);
|
|
292
309
|
},
|
|
293
310
|
review(spec) {
|
|
294
|
-
return runAgy(spec);
|
|
311
|
+
return runAgy(spec, prepareProfileKeychain);
|
|
295
312
|
},
|
|
296
313
|
// INV-135: pinned routing is admitted by THIS probe (there is no default
|
|
297
314
|
// store for the harness doctor to credit).
|
|
298
315
|
async probeCredentialProfile(profile, abortSignal) {
|
|
299
316
|
// The signal must reach the live probe: dropping it left an aborted
|
|
300
317
|
// doctor sweep waiting out the probe's own 30s timeout.
|
|
301
|
-
return probeAgyCredentialProfile(profile,
|
|
318
|
+
return probeAgyCredentialProfile(profile, {
|
|
319
|
+
runModelProbe: defaultAgyModelProbe,
|
|
320
|
+
prepareProfileKeychain: (home) => prepareProfileKeychain(home),
|
|
321
|
+
}, abortSignal);
|
|
302
322
|
},
|
|
303
323
|
};
|
|
304
324
|
}
|
|
305
|
-
async function* runAgy(spec) {
|
|
325
|
+
async function* runAgy(spec, prepareProfileKeychain) {
|
|
306
326
|
const profile = spec.credential_profile;
|
|
307
327
|
// Л-4: no engine-default credential — an unpinned agy run has nothing to
|
|
308
328
|
// route. Typed stream refusal (error then completed), the one refusal
|
|
@@ -323,6 +343,25 @@ async function* runAgy(spec) {
|
|
|
323
343
|
yield { type: "completed", session_id: spec.session_id, ts: nowIso() };
|
|
324
344
|
return;
|
|
325
345
|
}
|
|
346
|
+
// Path and identity failures are unsafe and stop before the vendor child.
|
|
347
|
+
// A recoverable security-tool miss keeps agy's own file fallback available;
|
|
348
|
+
// a custom test seam may model that same operational degradation.
|
|
349
|
+
try {
|
|
350
|
+
prepareProfileKeychain(route.home);
|
|
351
|
+
}
|
|
352
|
+
catch (error) {
|
|
353
|
+
if (isAgyProfileKeychainUnsafe(error)) {
|
|
354
|
+
yield {
|
|
355
|
+
type: "error",
|
|
356
|
+
session_id: spec.session_id,
|
|
357
|
+
ts: nowIso(),
|
|
358
|
+
error: redactSecrets(error instanceof Error ? error.message : String(error)).slice(0, 300),
|
|
359
|
+
};
|
|
360
|
+
yield { type: "completed", session_id: spec.session_id, ts: nowIso() };
|
|
361
|
+
return;
|
|
362
|
+
}
|
|
363
|
+
// The vendor probe/run remains the final transport authority.
|
|
364
|
+
}
|
|
326
365
|
const args = ["-p", promptWithInstructions(spec), "--output-format", "stream-json"];
|
|
327
366
|
// Л-18: without --add-dir agy resolves relative paths against its own app
|
|
328
367
|
// data dir instead of the workspace (live-proven §1.2d).
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export interface AgySecurityResult {
|
|
2
|
+
status: number | null;
|
|
3
|
+
detail?: string;
|
|
4
|
+
}
|
|
5
|
+
export type AgySecurityRunner = (args: readonly string[], env: NodeJS.ProcessEnv) => AgySecurityResult;
|
|
6
|
+
export interface AgyKeychainOptions {
|
|
7
|
+
platform?: NodeJS.Platform;
|
|
8
|
+
runSecurity?: AgySecurityRunner;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Typed, bounded setup result. `unsafe` means the profile path or target
|
|
12
|
+
* identity is not proven and callers must refuse the vendor child; a false
|
|
13
|
+
* value is a recoverable security-tool miss where agy's file fallback may
|
|
14
|
+
* still keep authentication working.
|
|
15
|
+
*/
|
|
16
|
+
export declare class AgyProfileKeychainError extends Error {
|
|
17
|
+
readonly code: "agy_profile_keychain_unavailable";
|
|
18
|
+
readonly unsafe: boolean;
|
|
19
|
+
constructor(detail: string, options?: {
|
|
20
|
+
unsafe?: boolean;
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
export declare function isAgyProfileKeychainUnsafe(error: unknown): boolean;
|
|
24
|
+
/** The only keychain path agy may use for one named profile. */
|
|
25
|
+
export declare function agyProfileKeychainPath(profileHome: string): string;
|
|
26
|
+
/**
|
|
27
|
+
* Prepare the private Darwin keychain declared by the agy capability profile.
|
|
28
|
+
* Other platforms deliberately do nothing: Linux and Windows retain their
|
|
29
|
+
* vendor-owned credential behavior. The helper never reads, copies, or
|
|
30
|
+
* removes credential items; agy itself remains the only item owner. Creation
|
|
31
|
+
* uses a neutral bootstrap filename before adopting login.keychain-db because
|
|
32
|
+
* Apple's create operation treats the latter name as a user-list entry on the
|
|
33
|
+
* supported Darwin path.
|
|
34
|
+
*/
|
|
35
|
+
export declare function prepareAgyProfileKeychain(profileHome: string, options?: AgyKeychainOptions): void;
|
|
36
|
+
/**
|
|
37
|
+
* Low-level Darwin ensure used by the adapter's production seams and tests.
|
|
38
|
+
* The caller has already established that this is the private agy route.
|
|
39
|
+
*/
|
|
40
|
+
export declare function ensureAgyProfileKeychain(profileHome: string, options?: AgyKeychainOptions): void;
|
|
41
|
+
//# sourceMappingURL=keychain.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keychain.d.ts","sourceRoot":"","sources":["../src/keychain.ts"],"names":[],"mappings":"AAoBA,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,iBAAiB,GAAG,CAC9B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,EAAE,MAAM,CAAC,UAAU,KACnB,iBAAiB,CAAC;AAEvB,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,WAAW,CAAC,EAAE,iBAAiB,CAAC;CACjC;AAED;;;;;GAKG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,QAAQ,CAAC,IAAI,EAAG,kCAAkC,CAAU;IAC5D,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAEzB,YAAY,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAO,EAI7D;CACF;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAElE;AAED,gEAAgE;AAChE,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAGlE;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,kBAAuB,GAC/B,IAAI,CAIN;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,kBAAuB,GAC/B,IAAI,CAqHN"}
|
package/dist/keychain.js
ADDED
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
import { execFileSync } from "node:child_process";
|
|
2
|
+
import { closeSync, constants, fchmodSync, fstatSync, linkSync, lstatSync, openSync, realpathSync, unlinkSync, } from "node:fs";
|
|
3
|
+
import { join, resolve } from "node:path";
|
|
4
|
+
import { canonicalIsolationLocator } from "@claudexor/core";
|
|
5
|
+
import { ensureCanonicalPrivateDirectory, redactSecrets } from "@claudexor/util";
|
|
6
|
+
const SECURITY_BINARY = "/usr/bin/security";
|
|
7
|
+
const SECURITY_TIMEOUT_MS = 5_000;
|
|
8
|
+
const configuredKeychains = new Set();
|
|
9
|
+
/**
|
|
10
|
+
* Typed, bounded setup result. `unsafe` means the profile path or target
|
|
11
|
+
* identity is not proven and callers must refuse the vendor child; a false
|
|
12
|
+
* value is a recoverable security-tool miss where agy's file fallback may
|
|
13
|
+
* still keep authentication working.
|
|
14
|
+
*/
|
|
15
|
+
export class AgyProfileKeychainError extends Error {
|
|
16
|
+
code = "agy_profile_keychain_unavailable";
|
|
17
|
+
unsafe;
|
|
18
|
+
constructor(detail, options = {}) {
|
|
19
|
+
super(`agy profile keychain setup failed: ${redactSecrets(detail).slice(0, 300)}`);
|
|
20
|
+
this.name = "AgyProfileKeychainError";
|
|
21
|
+
this.unsafe = options.unsafe === true;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export function isAgyProfileKeychainUnsafe(error) {
|
|
25
|
+
return error instanceof AgyProfileKeychainError && error.unsafe;
|
|
26
|
+
}
|
|
27
|
+
/** The only keychain path agy may use for one named profile. */
|
|
28
|
+
export function agyProfileKeychainPath(profileHome) {
|
|
29
|
+
const home = canonicalIsolationLocator(profileHome, "credential profile Antigravity HOME");
|
|
30
|
+
return join(home, "Library", "Keychains", "login.keychain-db");
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Prepare the private Darwin keychain declared by the agy capability profile.
|
|
34
|
+
* Other platforms deliberately do nothing: Linux and Windows retain their
|
|
35
|
+
* vendor-owned credential behavior. The helper never reads, copies, or
|
|
36
|
+
* removes credential items; agy itself remains the only item owner. Creation
|
|
37
|
+
* uses a neutral bootstrap filename before adopting login.keychain-db because
|
|
38
|
+
* Apple's create operation treats the latter name as a user-list entry on the
|
|
39
|
+
* supported Darwin path.
|
|
40
|
+
*/
|
|
41
|
+
export function prepareAgyProfileKeychain(profileHome, options = {}) {
|
|
42
|
+
const platform = options.platform ?? process.platform;
|
|
43
|
+
if (platform !== "darwin")
|
|
44
|
+
return;
|
|
45
|
+
ensureAgyProfileKeychain(profileHome, { ...options, platform });
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Low-level Darwin ensure used by the adapter's production seams and tests.
|
|
49
|
+
* The caller has already established that this is the private agy route.
|
|
50
|
+
*/
|
|
51
|
+
export function ensureAgyProfileKeychain(profileHome, options = {}) {
|
|
52
|
+
const platform = options.platform ?? process.platform;
|
|
53
|
+
if (platform !== "darwin")
|
|
54
|
+
return;
|
|
55
|
+
let home;
|
|
56
|
+
let keychain;
|
|
57
|
+
try {
|
|
58
|
+
home = canonicalIsolationLocator(profileHome, "credential profile Antigravity HOME");
|
|
59
|
+
keychain = agyProfileKeychainPath(home);
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
throw new AgyProfileKeychainError(error instanceof Error ? error.message : String(error), {
|
|
63
|
+
unsafe: true,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
try {
|
|
67
|
+
try {
|
|
68
|
+
ensureOwnedDirectory(home, platform);
|
|
69
|
+
ensureOwnedDirectory(join(home, "Library"), platform);
|
|
70
|
+
ensureOwnedDirectory(join(home, "Library", "Keychains"), platform);
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
throw new AgyProfileKeychainError(error instanceof Error ? error.message : String(error), {
|
|
74
|
+
unsafe: true,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
let exists = validateKeychainFile(keychain, home, false);
|
|
78
|
+
const runSecurity = options.runSecurity ?? defaultSecurityRunner;
|
|
79
|
+
const env = securityEnv(home);
|
|
80
|
+
if (!exists) {
|
|
81
|
+
const bootstrap = temporaryKeychainPath(join(home, "Library", "Keychains"));
|
|
82
|
+
if (bootstrap.includes("/login.keychain")) {
|
|
83
|
+
throw new AgyProfileKeychainError("profile keychain path would match Apple's login-keychain search-list heuristic", { unsafe: true });
|
|
84
|
+
}
|
|
85
|
+
const bootstrapExists = validateKeychainFile(bootstrap, home, false);
|
|
86
|
+
const created = bootstrapExists
|
|
87
|
+
? { status: 48, detail: "bootstrap keychain already exists" }
|
|
88
|
+
: runSecurity(["create-keychain", "-p", "", bootstrap], env);
|
|
89
|
+
const canonicalAfterCreate = validateKeychainFile(keychain, home, false);
|
|
90
|
+
if (!canonicalAfterCreate) {
|
|
91
|
+
let bootstrapReady = false;
|
|
92
|
+
if (created.status !== 0) {
|
|
93
|
+
// A concurrent process may have won creation with a
|
|
94
|
+
// platform-specific already-exists status. Revalidation, not a
|
|
95
|
+
// numeric status guess, is the idempotence authority.
|
|
96
|
+
try {
|
|
97
|
+
validateKeychainFile(bootstrap, home, true);
|
|
98
|
+
bootstrapReady = true;
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
// A peer can adopt and remove the bootstrap file between our
|
|
102
|
+
// status check and this validation. Recheck the canonical winner
|
|
103
|
+
// only for that missing-file race; identity failures remain hard
|
|
104
|
+
// refusals.
|
|
105
|
+
if (pathIsMissing(bootstrap) && validateKeychainFile(keychain, home, false)) {
|
|
106
|
+
exists = true;
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
// A failed create with no usable target is unsafe: spawning agy
|
|
110
|
+
// would return to the missing-keychain prompt. Explicit security
|
|
111
|
+
// errors remain recoverable only when a valid file exists.
|
|
112
|
+
if (error instanceof AgyProfileKeychainError)
|
|
113
|
+
throw error;
|
|
114
|
+
throw new AgyProfileKeychainError(created.detail ?? "create-keychain failed", {
|
|
115
|
+
unsafe: true,
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
validateKeychainFile(bootstrap, home, true);
|
|
122
|
+
bootstrapReady = true;
|
|
123
|
+
}
|
|
124
|
+
if (bootstrapReady) {
|
|
125
|
+
adoptBootstrapKeychain(bootstrap, keychain, home);
|
|
126
|
+
exists = true;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
// Another process completed the canonical rename while this process
|
|
131
|
+
// was creating its neutral bootstrap file. The neutral file is ours;
|
|
132
|
+
// remove it only after the canonical target is identity-checked.
|
|
133
|
+
removeBootstrapKeychain(bootstrap, home);
|
|
134
|
+
exists = true;
|
|
135
|
+
}
|
|
136
|
+
configuredKeychains.delete(keychain);
|
|
137
|
+
}
|
|
138
|
+
let unlockedBeforeSettings = false;
|
|
139
|
+
if (!configuredKeychains.has(keychain)) {
|
|
140
|
+
const unlocked = runSecurity(["unlock-keychain", "-p", "", keychain], env);
|
|
141
|
+
if (unlocked.status !== 0) {
|
|
142
|
+
throw new AgyProfileKeychainError(unlocked.detail ?? "unlock-keychain failed");
|
|
143
|
+
}
|
|
144
|
+
unlockedBeforeSettings = true;
|
|
145
|
+
const settings = runSecurity(["set-keychain-settings", keychain], env);
|
|
146
|
+
if (settings.status !== 0) {
|
|
147
|
+
throw new AgyProfileKeychainError(settings.detail ?? "set-keychain-settings failed");
|
|
148
|
+
}
|
|
149
|
+
configuredKeychains.add(keychain);
|
|
150
|
+
}
|
|
151
|
+
// A login keychain can still be locked by sleep, logout, or an explicit
|
|
152
|
+
// user action. Re-open it at every vendor-spawn boundary; the first-call
|
|
153
|
+
// unlock above also makes set-keychain-settings safe on a locked file.
|
|
154
|
+
if (!unlockedBeforeSettings) {
|
|
155
|
+
const unlocked = runSecurity(["unlock-keychain", "-p", "", keychain], env);
|
|
156
|
+
if (unlocked.status !== 0) {
|
|
157
|
+
throw new AgyProfileKeychainError(unlocked.detail ?? "unlock-keychain failed");
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
validateKeychainFile(keychain, home, true);
|
|
161
|
+
}
|
|
162
|
+
catch (error) {
|
|
163
|
+
configuredKeychains.delete(keychain);
|
|
164
|
+
if (error instanceof AgyProfileKeychainError)
|
|
165
|
+
throw error;
|
|
166
|
+
throw new AgyProfileKeychainError(error instanceof Error ? error.message : String(error), {
|
|
167
|
+
unsafe: true,
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
function securityEnv(home) {
|
|
172
|
+
return {
|
|
173
|
+
HOME: home,
|
|
174
|
+
USERPROFILE: home,
|
|
175
|
+
PATH: "/usr/bin:/bin",
|
|
176
|
+
...(process.env.TMPDIR ? { TMPDIR: process.env.TMPDIR } : {}),
|
|
177
|
+
...(process.env.LANG ? { LANG: process.env.LANG } : {}),
|
|
178
|
+
...(process.env.LC_ALL ? { LC_ALL: process.env.LC_ALL } : {}),
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
function defaultSecurityRunner(args, env) {
|
|
182
|
+
try {
|
|
183
|
+
execFileSync(SECURITY_BINARY, [...args], {
|
|
184
|
+
env,
|
|
185
|
+
stdio: "ignore",
|
|
186
|
+
timeout: SECURITY_TIMEOUT_MS,
|
|
187
|
+
windowsHide: true,
|
|
188
|
+
});
|
|
189
|
+
return { status: 0 };
|
|
190
|
+
}
|
|
191
|
+
catch (error) {
|
|
192
|
+
const status = typeof error === "object" && error !== null && "status" in error
|
|
193
|
+
? error.status
|
|
194
|
+
: null;
|
|
195
|
+
return {
|
|
196
|
+
status: typeof status === "number" ? status : null,
|
|
197
|
+
detail: error instanceof Error ? error.message : String(error),
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
function ensureOwnedDirectory(path, platform) {
|
|
202
|
+
try {
|
|
203
|
+
ensureCanonicalPrivateDirectory(path, platform);
|
|
204
|
+
}
|
|
205
|
+
catch (error) {
|
|
206
|
+
if (!(error instanceof Error) || !/EEXIST|already exists/i.test(error.message))
|
|
207
|
+
throw error;
|
|
208
|
+
// Another process won the mkdir race. Re-run the full identity proof.
|
|
209
|
+
ensureCanonicalPrivateDirectory(path, platform);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
function temporaryKeychainPath(directory) {
|
|
213
|
+
// Keep one deterministic neutral name so a crash between create and adopt
|
|
214
|
+
// is recoverable on the next preparation rather than accumulating orphan
|
|
215
|
+
// keychain databases. It deliberately does not contain "login.keychain",
|
|
216
|
+
// the Apple Security heuristic that updates the user search list.
|
|
217
|
+
return join(directory, ".agy-profile-bootstrap.keychain-db");
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Install the neutral-name keychain without calling a user-domain list
|
|
221
|
+
* mutation. A hard link gives us an atomic no-replace destination on the
|
|
222
|
+
* same APFS directory; the source is then removed, so the vendor sees one
|
|
223
|
+
* canonical login.keychain-db path and no bootstrap alias remains.
|
|
224
|
+
*/
|
|
225
|
+
function adoptBootstrapKeychain(source, destination, home) {
|
|
226
|
+
try {
|
|
227
|
+
linkSync(source, destination);
|
|
228
|
+
}
|
|
229
|
+
catch (error) {
|
|
230
|
+
if (isAlreadyExists(error)) {
|
|
231
|
+
validateKeychainFile(destination, home, true);
|
|
232
|
+
removeBootstrapKeychain(source, home);
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
if (isMissing(error) && validateKeychainFile(destination, home, false)) {
|
|
236
|
+
// A peer may have adopted and removed the bootstrap between our
|
|
237
|
+
// identity check and this no-replace link. The canonical winner is
|
|
238
|
+
// authoritative; do not turn that benign race into a profile refusal.
|
|
239
|
+
return;
|
|
240
|
+
}
|
|
241
|
+
throw new AgyProfileKeychainError(error instanceof Error ? error.message : String(error), {
|
|
242
|
+
unsafe: true,
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
try {
|
|
246
|
+
unlinkSync(source);
|
|
247
|
+
}
|
|
248
|
+
catch (error) {
|
|
249
|
+
if (isMissing(error)) {
|
|
250
|
+
validateKeychainFile(destination, home, true);
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
throw new AgyProfileKeychainError(error instanceof Error ? error.message : String(error), {
|
|
254
|
+
unsafe: true,
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
validateKeychainFile(destination, home, true);
|
|
258
|
+
}
|
|
259
|
+
function removeBootstrapKeychain(path, home) {
|
|
260
|
+
let exists = false;
|
|
261
|
+
try {
|
|
262
|
+
exists = validateKeychainFile(path, home, false);
|
|
263
|
+
}
|
|
264
|
+
catch (error) {
|
|
265
|
+
if (error instanceof AgyProfileKeychainError)
|
|
266
|
+
throw error;
|
|
267
|
+
throw new AgyProfileKeychainError(error instanceof Error ? error.message : String(error), {
|
|
268
|
+
unsafe: true,
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
if (!exists)
|
|
272
|
+
return;
|
|
273
|
+
try {
|
|
274
|
+
unlinkSync(path);
|
|
275
|
+
}
|
|
276
|
+
catch (error) {
|
|
277
|
+
if (isMissing(error))
|
|
278
|
+
return;
|
|
279
|
+
throw new AgyProfileKeychainError(error instanceof Error ? error.message : String(error), {
|
|
280
|
+
unsafe: true,
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
function validateKeychainFile(path, home, required) {
|
|
285
|
+
const absolute = resolve(path);
|
|
286
|
+
let named;
|
|
287
|
+
try {
|
|
288
|
+
named = lstatSync(absolute);
|
|
289
|
+
}
|
|
290
|
+
catch (error) {
|
|
291
|
+
if (!required && isMissing(error))
|
|
292
|
+
return false;
|
|
293
|
+
throw new AgyProfileKeychainError("private keychain path is missing or unreadable", {
|
|
294
|
+
unsafe: true,
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
if (named.isSymbolicLink() || !named.isFile()) {
|
|
298
|
+
throw new AgyProfileKeychainError("private keychain path is not a regular file", {
|
|
299
|
+
unsafe: true,
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
let fd;
|
|
303
|
+
try {
|
|
304
|
+
fd = openSync(absolute, constants.O_RDWR | constants.O_NOFOLLOW);
|
|
305
|
+
}
|
|
306
|
+
catch {
|
|
307
|
+
throw new AgyProfileKeychainError("private keychain path cannot be opened safely", {
|
|
308
|
+
unsafe: true,
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
try {
|
|
312
|
+
const opened = fstatSync(fd);
|
|
313
|
+
const current = lstatSync(absolute);
|
|
314
|
+
if (!opened.isFile() ||
|
|
315
|
+
current.isSymbolicLink() ||
|
|
316
|
+
!current.isFile() ||
|
|
317
|
+
opened.dev !== current.dev ||
|
|
318
|
+
opened.ino !== current.ino ||
|
|
319
|
+
realpathSync.native(absolute) !== absolute ||
|
|
320
|
+
(typeof process.getuid === "function" && opened.uid !== process.getuid()) ||
|
|
321
|
+
!absolute.startsWith(resolve(home) + "/")) {
|
|
322
|
+
throw new AgyProfileKeychainError("private keychain identity is not canonical", {
|
|
323
|
+
unsafe: true,
|
|
324
|
+
});
|
|
325
|
+
}
|
|
326
|
+
fchmodSync(fd, 0o600);
|
|
327
|
+
}
|
|
328
|
+
finally {
|
|
329
|
+
closeSync(fd);
|
|
330
|
+
}
|
|
331
|
+
return true;
|
|
332
|
+
}
|
|
333
|
+
function isMissing(error) {
|
|
334
|
+
return typeof error === "object" && error !== null && "code" in error
|
|
335
|
+
? error.code === "ENOENT"
|
|
336
|
+
: false;
|
|
337
|
+
}
|
|
338
|
+
function pathIsMissing(path) {
|
|
339
|
+
try {
|
|
340
|
+
lstatSync(path);
|
|
341
|
+
return false;
|
|
342
|
+
}
|
|
343
|
+
catch (error) {
|
|
344
|
+
if (isMissing(error))
|
|
345
|
+
return true;
|
|
346
|
+
throw error;
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
function isAlreadyExists(error) {
|
|
350
|
+
return typeof error === "object" && error !== null && "code" in error
|
|
351
|
+
? error.code === "EEXIST"
|
|
352
|
+
: false;
|
|
353
|
+
}
|
|
354
|
+
//# sourceMappingURL=keychain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keychain.js","sourceRoot":"","sources":["../src/keychain.ts"],"names":[],"mappings":"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"}
|
package/dist/profile.d.ts
CHANGED
|
@@ -46,6 +46,8 @@ export declare function resolveAgyProfileRoute(profile: Pick<CredentialProfile,
|
|
|
46
46
|
export interface AgyProfileProbeDeps {
|
|
47
47
|
/** Injectable live probe (tests): print-mode `/model` under the profile env. */
|
|
48
48
|
runModelProbe: (env: EnvMap, abortSignal?: AbortSignal) => Promise<AgyModelProbe>;
|
|
49
|
+
/** Production adapter seam: prepare the profile before the vendor probe. */
|
|
50
|
+
prepareProfileKeychain?: (home: string) => void;
|
|
49
51
|
}
|
|
50
52
|
export type AgyModelProbe = {
|
|
51
53
|
kind: "authenticated";
|
package/dist/profile.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../src/profile.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../src/profile.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAMpF,KAAK,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;AAExD,eAAO,MAAM,OAAO,cAA+C,CAAC;AAEpE,yEAAyE;AACzE,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED;;kFAEkF;AAClF,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE,MAAW,GAAG,MAAM,CASlF;AAED,MAAM,MAAM,uBAAuB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1F;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,YAAY,GAAG,iBAAiB,GAAG,mBAAmB,CAAC,EACxF,OAAO,GAAE,MAAW,GACnB,uBAAuB,CAWzB;AAED,MAAM,WAAW,mBAAmB;IAClC,gFAAgF;IAChF,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;IAClF,4EAA4E;IAC5E,sBAAsB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACjD;AAED,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7C;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,MAAM,EACX,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,aAAa,CAAC,CA0BxB;AAED;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,iBAAiB,EAC1B,IAAI,GAAE,mBAA6D,EACnE,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,uBAAuB,CAAC,CAyDlC"}
|
package/dist/profile.js
CHANGED
|
@@ -2,6 +2,7 @@ import { join } from "node:path";
|
|
|
2
2
|
import { canonicalIsolationLocator, providerScrubEnv } from "@claudexor/core";
|
|
3
3
|
import { CredentialProfileStatus as CredentialProfileStatusSchema } from "@claudexor/schema";
|
|
4
4
|
import { nowIso, redactSecrets } from "@claudexor/util";
|
|
5
|
+
import { isAgyProfileKeychainUnsafe } from "./keychain.js";
|
|
5
6
|
import { classifyAgyPrintResult, runAgyPrintCommand } from "./print-command.js";
|
|
6
7
|
export const AGY_BIN = () => process.env.CLAUDEXOR_AGY_BIN || "agy";
|
|
7
8
|
/** Canonical, Claudexor-owned HOME for one named Antigravity binding. */
|
|
@@ -114,6 +115,24 @@ export async function probeAgyCredentialProfile(profile, deps = { runModelProbe:
|
|
|
114
115
|
verification: "not_run",
|
|
115
116
|
detail: route.refusal,
|
|
116
117
|
});
|
|
118
|
+
let keychainSetupWarning = null;
|
|
119
|
+
try {
|
|
120
|
+
deps.prepareProfileKeychain?.(route.home);
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
if (isAgyProfileKeychainUnsafe(error)) {
|
|
124
|
+
return CredentialProfileStatusSchema.parse({
|
|
125
|
+
...base,
|
|
126
|
+
availability: "unavailable",
|
|
127
|
+
verification: "not_run",
|
|
128
|
+
detail: redactSecrets(error instanceof Error ? error.message : String(error)).slice(0, 300),
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
// A custom operational seam may model a recoverable security-tool miss.
|
|
132
|
+
// Keep the vendor file fallback and disclose the degraded container on
|
|
133
|
+
// the profile status rather than presenting a completely clean proof.
|
|
134
|
+
keychainSetupWarning = redactSecrets(error instanceof Error ? error.message : String(error)).slice(0, 300);
|
|
135
|
+
}
|
|
117
136
|
const probe = await deps.runModelProbe(route.env, abortSignal);
|
|
118
137
|
if (probe.kind === "authenticated")
|
|
119
138
|
return CredentialProfileStatusSchema.parse({
|
|
@@ -121,7 +140,10 @@ export async function probeAgyCredentialProfile(profile, deps = { runModelProbe:
|
|
|
121
140
|
availability: "available",
|
|
122
141
|
verification: "passed",
|
|
123
142
|
verification_source: "vendor",
|
|
124
|
-
detail: `Antigravity accepted the named binding${probe.modelId ? ` (model ${probe.modelId})` : ""}; whether the credential is backed by a keyring or file is not inferred
|
|
143
|
+
detail: `Antigravity accepted the named binding${probe.modelId ? ` (model ${probe.modelId})` : ""}; whether the credential is backed by a keyring or file is not inferred` +
|
|
144
|
+
(keychainSetupWarning
|
|
145
|
+
? `; private profile keychain setup degraded: ${keychainSetupWarning}`
|
|
146
|
+
: ""),
|
|
125
147
|
last_verified_at: nowIso(),
|
|
126
148
|
});
|
|
127
149
|
if (probe.kind === "unauthenticated")
|
package/dist/profile.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../src/profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAE9E,OAAO,EAAE,uBAAuB,IAAI,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AAC7F,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAIhF,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,KAAK,CAAC;AAEpE,yEAAyE;AACzE,MAAM,UAAU,uBAAuB,CAAC,OAAe;IACrD,OAAO,yBAAyB,CAAC,OAAO,EAAE,qCAAqC,CAAC,CAAC;AACnF,CAAC;AAED;;kFAEkF;AAClF,MAAM,UAAU,YAAY,CAAC,WAAmB;IAC9C,OAAO,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,iBAAiB,EAAE,yBAAyB,CAAC,CAAC;AACpF,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,gBAAgB,CAAC,WAAmB,EAAE,OAAO,GAAW,EAAE;IACxE,MAAM,IAAI,GAAG,uBAAuB,CAAC,WAAW,CAAC,CAAC;IAClD,OAAO;QACL,GAAG,OAAO;QACV,GAAG,gBAAgB,EAAE;QACrB,IAAI,EAAE,IAAI;QACV,WAAW,EAAE,IAAI;QACjB,2BAA2B,EAAE,MAAM;KACpC,CAAC;AACJ,CAAC;AAID;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CACpC,OAAwF,EACxF,OAAO,GAAW,EAAE;IAEpB,IAAI,OAAO,CAAC,eAAe,KAAK,kBAAkB;QAChD,OAAO;YACL,OAAO,EAAE,uBAAuB,OAAO,CAAC,UAAU,4EAA4E;SAC/H,CAAC;IACJ,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,uBAAuB,CAAC,OAAO,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;QACtE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;IACxD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IACvE,CAAC;AACH,CAAC;
|
|
1
|
+
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../src/profile.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,9 +7,12 @@ import type { PinnedVendorCliVersion } from "@claudexor/util";
|
|
|
7
7
|
* uses the vendor's official script, cursor-style, `human_observed`). It IS
|
|
8
8
|
* the verification stamp: `known_models_verified_against` reads it, fixture
|
|
9
9
|
* provenance records it, and the doctor discloses drift when the installed
|
|
10
|
-
* binary self-updates past it. The profile file-token fallback
|
|
11
|
-
*
|
|
12
|
-
*
|
|
10
|
+
* binary self-updates past it. The profile file-token fallback is re-proven
|
|
11
|
+
* per bump of this constant. On Darwin a private profile keychain is prepared
|
|
12
|
+
* through a neutral bootstrap/adoption step before the vendor child; the file
|
|
13
|
+
* fallback remains vendor-owned recovery behavior. This Darwin exception
|
|
14
|
+
* supersedes the historical file-only lock in PLAN Л-15/R-2' under
|
|
15
|
+
* CONCEPT-CHANGE(INV-067, INV-135).
|
|
13
16
|
*/
|
|
14
17
|
export declare const AGY_VENDOR_CLI_VERSION: PinnedVendorCliVersion;
|
|
15
18
|
//# sourceMappingURL=vendor-cli-version.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vendor-cli-version.d.ts","sourceRoot":"","sources":["../src/vendor-cli-version.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAE9D
|
|
1
|
+
{"version":3,"file":"vendor-cli-version.d.ts","sourceRoot":"","sources":["../src/vendor-cli-version.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAE9D;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,sBAAsB,EAAE,sBAAiC,CAAC"}
|
|
@@ -6,9 +6,12 @@
|
|
|
6
6
|
* uses the vendor's official script, cursor-style, `human_observed`). It IS
|
|
7
7
|
* the verification stamp: `known_models_verified_against` reads it, fixture
|
|
8
8
|
* provenance records it, and the doctor discloses drift when the installed
|
|
9
|
-
* binary self-updates past it. The profile file-token fallback
|
|
10
|
-
*
|
|
11
|
-
*
|
|
9
|
+
* binary self-updates past it. The profile file-token fallback is re-proven
|
|
10
|
+
* per bump of this constant. On Darwin a private profile keychain is prepared
|
|
11
|
+
* through a neutral bootstrap/adoption step before the vendor child; the file
|
|
12
|
+
* fallback remains vendor-owned recovery behavior. This Darwin exception
|
|
13
|
+
* supersedes the historical file-only lock in PLAN Л-15/R-2' under
|
|
14
|
+
* CONCEPT-CHANGE(INV-067, INV-135).
|
|
12
15
|
*/
|
|
13
16
|
export const AGY_VENDOR_CLI_VERSION = "1.1.13";
|
|
14
17
|
//# sourceMappingURL=vendor-cli-version.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vendor-cli-version.js","sourceRoot":"","sources":["../src/vendor-cli-version.ts"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"vendor-cli-version.js","sourceRoot":"","sources":["../src/vendor-cli-version.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAA2B,QAAQ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@claudexor/harness-agy",
|
|
3
|
-
"version": "3.8.
|
|
3
|
+
"version": "3.8.2",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Google Antigravity CLI adapter (agy -p --output-format stream-json).",
|
|
6
6
|
"type": "module",
|
|
@@ -16,9 +16,9 @@
|
|
|
16
16
|
"dist"
|
|
17
17
|
],
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@claudexor/core": "3.8.
|
|
20
|
-
"@claudexor/
|
|
21
|
-
"@claudexor/
|
|
19
|
+
"@claudexor/core": "3.8.2",
|
|
20
|
+
"@claudexor/schema": "3.8.2",
|
|
21
|
+
"@claudexor/util": "3.8.2"
|
|
22
22
|
},
|
|
23
23
|
"repository": {
|
|
24
24
|
"type": "git",
|