youmd 0.10.2 → 0.12.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/commands/brain.d.ts.map +1 -1
- package/dist/commands/brain.js +91 -28
- package/dist/commands/brain.js.map +1 -1
- package/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +6 -1
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/conversations.d.ts +5 -0
- package/dist/commands/conversations.d.ts.map +1 -0
- package/dist/commands/conversations.js +116 -0
- package/dist/commands/conversations.js.map +1 -0
- package/dist/commands/doctor.d.ts +1 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +16 -1
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/founder.d.ts +13 -0
- package/dist/commands/founder.d.ts.map +1 -0
- package/dist/commands/founder.js +189 -0
- package/dist/commands/founder.js.map +1 -0
- package/dist/commands/handoff.d.ts +5 -0
- package/dist/commands/handoff.d.ts.map +1 -0
- package/dist/commands/handoff.js +432 -0
- package/dist/commands/handoff.js.map +1 -0
- package/dist/commands/orchestrate.d.ts +15 -0
- package/dist/commands/orchestrate.d.ts.map +1 -1
- package/dist/commands/orchestrate.js +294 -0
- package/dist/commands/orchestrate.js.map +1 -1
- package/dist/commands/project.d.ts.map +1 -1
- package/dist/commands/project.js +8 -1
- package/dist/commands/project.js.map +1 -1
- package/dist/commands/reconcile.d.ts +15 -0
- package/dist/commands/reconcile.d.ts.map +1 -0
- package/dist/commands/reconcile.js +260 -0
- package/dist/commands/reconcile.js.map +1 -0
- package/dist/commands/session.d.ts +28 -0
- package/dist/commands/session.d.ts.map +1 -0
- package/dist/commands/session.js +895 -0
- package/dist/commands/session.js.map +1 -0
- package/dist/commands/stack.d.ts +2 -0
- package/dist/commands/stack.d.ts.map +1 -1
- package/dist/commands/stack.js +26 -0
- package/dist/commands/stack.js.map +1 -1
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +11 -0
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/tasks.d.ts +57 -0
- package/dist/commands/tasks.d.ts.map +1 -1
- package/dist/commands/tasks.js +236 -31
- package/dist/commands/tasks.js.map +1 -1
- package/dist/generated/capability-registry.d.ts +311 -71
- package/dist/generated/capability-registry.d.ts.map +1 -1
- package/dist/generated/capability-registry.js +346 -71
- package/dist/generated/capability-registry.js.map +1 -1
- package/dist/index.js +113 -2
- package/dist/index.js.map +1 -1
- package/dist/lib/api.d.ts +362 -1
- package/dist/lib/api.d.ts.map +1 -1
- package/dist/lib/api.js +171 -0
- package/dist/lib/api.js.map +1 -1
- package/dist/lib/brain/adapters.d.ts +20 -1
- package/dist/lib/brain/adapters.d.ts.map +1 -1
- package/dist/lib/brain/adapters.js +113 -2
- package/dist/lib/brain/adapters.js.map +1 -1
- package/dist/lib/brain/approval-key-trust.d.ts +29 -0
- package/dist/lib/brain/approval-key-trust.d.ts.map +1 -0
- package/dist/lib/brain/approval-key-trust.js +139 -0
- package/dist/lib/brain/approval-key-trust.js.map +1 -0
- package/dist/lib/brain/cache.d.ts +2 -2
- package/dist/lib/brain/cache.d.ts.map +1 -1
- package/dist/lib/brain/cache.js +4 -4
- package/dist/lib/brain/cache.js.map +1 -1
- package/dist/lib/brain/content.d.ts +56 -0
- package/dist/lib/brain/content.d.ts.map +1 -0
- package/dist/lib/brain/content.js +362 -0
- package/dist/lib/brain/content.js.map +1 -0
- package/dist/lib/brain/descriptor-validator.d.ts +11 -0
- package/dist/lib/brain/descriptor-validator.d.ts.map +1 -0
- package/dist/lib/brain/descriptor-validator.js +185 -0
- package/dist/lib/brain/descriptor-validator.js.map +1 -0
- package/dist/lib/brain/discovery.d.ts.map +1 -1
- package/dist/lib/brain/discovery.js +103 -60
- package/dist/lib/brain/discovery.js.map +1 -1
- package/dist/lib/brain/index.d.ts +2 -0
- package/dist/lib/brain/index.d.ts.map +1 -1
- package/dist/lib/brain/index.js +8 -2
- package/dist/lib/brain/index.js.map +1 -1
- package/dist/lib/brain/proposal.d.ts +53 -5
- package/dist/lib/brain/proposal.d.ts.map +1 -1
- package/dist/lib/brain/proposal.js +341 -64
- package/dist/lib/brain/proposal.js.map +1 -1
- package/dist/lib/brain/safe-file.d.ts +25 -1
- package/dist/lib/brain/safe-file.d.ts.map +1 -1
- package/dist/lib/brain/safe-file.js +250 -30
- package/dist/lib/brain/safe-file.js.map +1 -1
- package/dist/lib/brain/safe-open.d.ts +2 -0
- package/dist/lib/brain/safe-open.d.ts.map +1 -0
- package/dist/lib/brain/safe-open.js +77 -0
- package/dist/lib/brain/safe-open.js.map +1 -0
- package/dist/lib/brain/safety.d.ts.map +1 -1
- package/dist/lib/brain/safety.js +5 -0
- package/dist/lib/brain/safety.js.map +1 -1
- package/dist/lib/brain/staged-apply.d.ts +2 -1
- package/dist/lib/brain/staged-apply.d.ts.map +1 -1
- package/dist/lib/brain/staged-apply.js +6 -3
- package/dist/lib/brain/staged-apply.js.map +1 -1
- package/dist/lib/brain/store.d.ts +3 -0
- package/dist/lib/brain/store.d.ts.map +1 -1
- package/dist/lib/brain/store.js +68 -0
- package/dist/lib/brain/store.js.map +1 -1
- package/dist/lib/brain/sync.d.ts +87 -0
- package/dist/lib/brain/sync.d.ts.map +1 -0
- package/dist/lib/brain/sync.js +238 -0
- package/dist/lib/brain/sync.js.map +1 -0
- package/dist/lib/brain/types.d.ts +23 -0
- package/dist/lib/brain/types.d.ts.map +1 -1
- package/dist/lib/config.d.ts +7 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +3 -0
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/daemon.js +1 -1
- package/dist/lib/daemon.js.map +1 -1
- package/dist/lib/goalRegistryFile.d.ts +169 -0
- package/dist/lib/goalRegistryFile.d.ts.map +1 -0
- package/dist/lib/goalRegistryFile.js +518 -0
- package/dist/lib/goalRegistryFile.js.map +1 -0
- package/dist/lib/goalsFile.d.ts +101 -0
- package/dist/lib/goalsFile.d.ts.map +1 -0
- package/dist/lib/goalsFile.js +413 -0
- package/dist/lib/goalsFile.js.map +1 -0
- package/dist/lib/handoff.d.ts +170 -0
- package/dist/lib/handoff.d.ts.map +1 -0
- package/dist/lib/handoff.js +316 -0
- package/dist/lib/handoff.js.map +1 -0
- package/dist/lib/machine-identity.d.ts +2 -0
- package/dist/lib/machine-identity.d.ts.map +1 -1
- package/dist/lib/machine-identity.js +13 -6
- package/dist/lib/machine-identity.js.map +1 -1
- package/dist/lib/onboarding.d.ts +4 -1
- package/dist/lib/onboarding.d.ts.map +1 -1
- package/dist/lib/onboarding.js +11 -3
- package/dist/lib/onboarding.js.map +1 -1
- package/dist/lib/orchestrator/loop.d.ts +7 -0
- package/dist/lib/orchestrator/loop.d.ts.map +1 -1
- package/dist/lib/orchestrator/loop.js +53 -0
- package/dist/lib/orchestrator/loop.js.map +1 -1
- package/dist/lib/orchestrator/run-journal.d.ts +178 -0
- package/dist/lib/orchestrator/run-journal.d.ts.map +1 -0
- package/dist/lib/orchestrator/run-journal.js +912 -0
- package/dist/lib/orchestrator/run-journal.js.map +1 -0
- package/dist/lib/orchestrator/supervisor.d.ts +11 -0
- package/dist/lib/orchestrator/supervisor.d.ts.map +1 -1
- package/dist/lib/orchestrator/supervisor.js +304 -116
- package/dist/lib/orchestrator/supervisor.js.map +1 -1
- package/dist/lib/orchestrator/tools.d.ts +2 -0
- package/dist/lib/orchestrator/tools.d.ts.map +1 -1
- package/dist/lib/orchestrator/tools.js +214 -1
- package/dist/lib/orchestrator/tools.js.map +1 -1
- package/dist/lib/redact.d.ts.map +1 -1
- package/dist/lib/redact.js +31 -6
- package/dist/lib/redact.js.map +1 -1
- package/dist/lib/remote-agent-event.d.ts +19 -0
- package/dist/lib/remote-agent-event.d.ts.map +1 -0
- package/dist/lib/remote-agent-event.js +85 -0
- package/dist/lib/remote-agent-event.js.map +1 -0
- package/dist/lib/remote-command.d.ts.map +1 -1
- package/dist/lib/remote-command.js +19 -0
- package/dist/lib/remote-command.js.map +1 -1
- package/dist/lib/remote-executor.d.ts +7 -1
- package/dist/lib/remote-executor.d.ts.map +1 -1
- package/dist/lib/remote-executor.js +391 -0
- package/dist/lib/remote-executor.js.map +1 -1
- package/dist/lib/sessionCheckpoint.d.ts +104 -0
- package/dist/lib/sessionCheckpoint.d.ts.map +1 -0
- package/dist/lib/sessionCheckpoint.js +191 -0
- package/dist/lib/sessionCheckpoint.js.map +1 -0
- package/dist/lib/sessionHandoff.d.ts +47 -0
- package/dist/lib/sessionHandoff.d.ts.map +1 -0
- package/dist/lib/sessionHandoff.js +305 -0
- package/dist/lib/sessionHandoff.js.map +1 -0
- package/dist/lib/stream.d.ts +3 -1
- package/dist/lib/stream.d.ts.map +1 -1
- package/dist/lib/stream.js +8 -3
- package/dist/lib/stream.js.map +1 -1
- package/dist/lib/taskLedgerProposal.d.ts +102 -0
- package/dist/lib/taskLedgerProposal.d.ts.map +1 -0
- package/dist/lib/taskLedgerProposal.js +408 -0
- package/dist/lib/taskLedgerProposal.js.map +1 -0
- package/dist/lib/tasksFile.d.ts +23 -2
- package/dist/lib/tasksFile.d.ts.map +1 -1
- package/dist/lib/tasksFile.js +122 -10
- package/dist/lib/tasksFile.js.map +1 -1
- package/dist/mcp/registry.d.ts.map +1 -1
- package/dist/mcp/registry.js +110 -0
- package/dist/mcp/registry.js.map +1 -1
- package/native/prebuilds/darwin-universal/youmd_safe_open.node +0 -0
- package/native/safe-open/youmd_safe_open.c +224 -0
- package/package.json +11 -3
- package/scripts/build-safe-open.mjs +63 -0
- package/scripts/skillstack-sync/com.you.context-sync.plist +1 -1
- package/scripts/skillstack-sync/com.you.identity-sync.plist +1 -1
- package/scripts/skillstack-sync/com.you.orchestrator-watch.plist +1 -1
- package/scripts/skillstack-sync/com.you.realtime-sync.plist +7 -1
- package/scripts/skillstack-sync/com.you.skillstack-sync.plist +1 -1
- package/scripts/skillstack-sync/context-sync.sh +19 -7
- package/scripts/skillstack-sync/install-daemons-linux.sh +6 -0
- package/scripts/smoke-safe-open-node.cjs +50 -0
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure contract and planner for `you handoff`.
|
|
3
|
+
*
|
|
4
|
+
* The planner deliberately has no process, network, or filesystem access. The
|
|
5
|
+
* CLI adapter inventories the fleet through the existing You orchestrator and
|
|
6
|
+
* remote-command boundary, then executes only the actions returned here.
|
|
7
|
+
*/
|
|
8
|
+
export declare const HANDOFF_CONTRACT: Readonly<{
|
|
9
|
+
schemaVersion: "you-md/handoff/v1";
|
|
10
|
+
never: readonly ["sigterm-active-work", "force-push", "reset", "auto-merge"];
|
|
11
|
+
dirtyRepos: "blocked-native-clean-repo-mvp";
|
|
12
|
+
cleanAheadPush: "exact-observed-head-no-force";
|
|
13
|
+
cleanCloneUpdate: "git-pull-ff-only";
|
|
14
|
+
arbitraryChatControl: false;
|
|
15
|
+
dreamCycle: "deferred-explicit-opt-in";
|
|
16
|
+
}>;
|
|
17
|
+
export type HandoffWorkerStatus = "running" | "exited" | "failed" | "stopped" | "unknown";
|
|
18
|
+
export interface HandoffMachine {
|
|
19
|
+
machineKey: string;
|
|
20
|
+
host: string;
|
|
21
|
+
isLocal: boolean;
|
|
22
|
+
online: boolean;
|
|
23
|
+
managed: boolean;
|
|
24
|
+
lastSeenAt?: number;
|
|
25
|
+
note?: string;
|
|
26
|
+
}
|
|
27
|
+
export interface HandoffProject {
|
|
28
|
+
slug: string;
|
|
29
|
+
directoryName: string;
|
|
30
|
+
repoFullName?: string;
|
|
31
|
+
repoUrl?: string;
|
|
32
|
+
repoIdentity?: string | null;
|
|
33
|
+
}
|
|
34
|
+
export interface HandoffWorker {
|
|
35
|
+
id: string;
|
|
36
|
+
host: string;
|
|
37
|
+
project?: string;
|
|
38
|
+
status: HandoffWorkerStatus;
|
|
39
|
+
harness?: string;
|
|
40
|
+
}
|
|
41
|
+
export type HandoffRepoAvailability = "managed" | "unmanaged" | "offline" | "error";
|
|
42
|
+
export interface HandoffRepoState {
|
|
43
|
+
machineKey: string;
|
|
44
|
+
host: string;
|
|
45
|
+
project: string;
|
|
46
|
+
availability: HandoffRepoAvailability;
|
|
47
|
+
dirty?: boolean;
|
|
48
|
+
branch?: string | null;
|
|
49
|
+
ahead?: number;
|
|
50
|
+
behind?: number;
|
|
51
|
+
headOid?: string | null;
|
|
52
|
+
upstream?: string | null;
|
|
53
|
+
upstreamOid?: string | null;
|
|
54
|
+
remoteUrl?: string | null;
|
|
55
|
+
remoteIdentity?: string | null;
|
|
56
|
+
note?: string;
|
|
57
|
+
}
|
|
58
|
+
export interface HandoffInventory {
|
|
59
|
+
machines: HandoffMachine[];
|
|
60
|
+
projects: HandoffProject[];
|
|
61
|
+
workers: HandoffWorker[];
|
|
62
|
+
repos: HandoffRepoState[];
|
|
63
|
+
}
|
|
64
|
+
/** Exact and short hostname aliases cannot safely address two stable machines on the current bus. */
|
|
65
|
+
export declare function findAmbiguousMachineHosts(machines: Array<{
|
|
66
|
+
machineKey: string;
|
|
67
|
+
host: string;
|
|
68
|
+
}>): Set<string>;
|
|
69
|
+
/**
|
|
70
|
+
* Normalize one Git remote to a transport-independent repository identity.
|
|
71
|
+
* HTTPS, SSH URLs, and SCP-style Git URLs for the same host/path converge;
|
|
72
|
+
* local paths remain exact file identities. Invalid or ambiguous inputs fail
|
|
73
|
+
* closed instead of being guessed from a directory name.
|
|
74
|
+
*/
|
|
75
|
+
export declare function normalizeGitRemoteIdentity(value: string | null | undefined): string | null;
|
|
76
|
+
export declare function projectRemoteIdentity(project: Pick<HandoffProject, "repoIdentity" | "repoUrl" | "repoFullName">): string | null;
|
|
77
|
+
export type HandoffAction = {
|
|
78
|
+
kind: "worker_state_receipt";
|
|
79
|
+
machineKey: string;
|
|
80
|
+
host: string;
|
|
81
|
+
workerIds: string[];
|
|
82
|
+
verified: false;
|
|
83
|
+
} | {
|
|
84
|
+
kind: "push_clean";
|
|
85
|
+
machineKey: string;
|
|
86
|
+
host: string;
|
|
87
|
+
project: string;
|
|
88
|
+
target: string;
|
|
89
|
+
expectedHead: string;
|
|
90
|
+
expectedBranch: string;
|
|
91
|
+
expectedUpstream: string;
|
|
92
|
+
expectedUpstreamOid: string;
|
|
93
|
+
expectedRemoteIdentity: string;
|
|
94
|
+
expectedFinalOid: string;
|
|
95
|
+
reason: string;
|
|
96
|
+
} | {
|
|
97
|
+
kind: "pull_ff_only";
|
|
98
|
+
machineKey: string;
|
|
99
|
+
host: string;
|
|
100
|
+
project: string;
|
|
101
|
+
target: string;
|
|
102
|
+
expectedHead: string;
|
|
103
|
+
expectedBranch: string;
|
|
104
|
+
expectedUpstream: string;
|
|
105
|
+
expectedUpstreamOid: string;
|
|
106
|
+
expectedRemoteIdentity: string;
|
|
107
|
+
expectedFinalOid: string;
|
|
108
|
+
} | {
|
|
109
|
+
kind: "machine_sync";
|
|
110
|
+
machineKey: string;
|
|
111
|
+
host: string;
|
|
112
|
+
} | {
|
|
113
|
+
kind: "block";
|
|
114
|
+
project?: string;
|
|
115
|
+
hosts?: string[];
|
|
116
|
+
reason: string;
|
|
117
|
+
} | {
|
|
118
|
+
kind: "report";
|
|
119
|
+
host?: string;
|
|
120
|
+
project?: string;
|
|
121
|
+
reason: string;
|
|
122
|
+
};
|
|
123
|
+
export interface HandoffPlan {
|
|
124
|
+
schemaVersion: "you-md/handoff-plan/v1";
|
|
125
|
+
safeToRun: boolean;
|
|
126
|
+
actions: HandoffAction[];
|
|
127
|
+
conflicts: Array<{
|
|
128
|
+
project: string;
|
|
129
|
+
dirtyHosts: string[];
|
|
130
|
+
}>;
|
|
131
|
+
offlineHosts: string[];
|
|
132
|
+
unmanaged: Array<{
|
|
133
|
+
host: string;
|
|
134
|
+
project: string;
|
|
135
|
+
}>;
|
|
136
|
+
errorRepos: Array<{
|
|
137
|
+
host: string;
|
|
138
|
+
project: string;
|
|
139
|
+
reason: string;
|
|
140
|
+
}>;
|
|
141
|
+
unverifiedWorkers: Array<{
|
|
142
|
+
host: string;
|
|
143
|
+
workerId: string;
|
|
144
|
+
}>;
|
|
145
|
+
blockingReasons: string[];
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Execute an already-validated plan in safety order. No callback is invoked for
|
|
149
|
+
* an unsafe plan; every coordinator receipt must succeed before the first git
|
|
150
|
+
* or sync mutation; any later failure invalidates the remaining observations.
|
|
151
|
+
*/
|
|
152
|
+
export declare function executeGuardedHandoffPlan<T extends {
|
|
153
|
+
ok: boolean;
|
|
154
|
+
}>(plan: HandoffPlan, execute: (action: Exclude<HandoffAction, {
|
|
155
|
+
kind: "block";
|
|
156
|
+
} | {
|
|
157
|
+
kind: "report";
|
|
158
|
+
}>) => Promise<T>): Promise<Array<{
|
|
159
|
+
action: Exclude<HandoffAction, {
|
|
160
|
+
kind: "block";
|
|
161
|
+
} | {
|
|
162
|
+
kind: "report";
|
|
163
|
+
}>;
|
|
164
|
+
result: T;
|
|
165
|
+
}>>;
|
|
166
|
+
/** Build the complete guarded handoff plan from an already-observed fleet. */
|
|
167
|
+
export declare function buildHandoffPlan(inventory: HandoffInventory): HandoffPlan;
|
|
168
|
+
/** Stable You Agent goal text used in receipts and activity logs. */
|
|
169
|
+
export declare function buildHandoffGoal(mode: "plan" | "run"): string;
|
|
170
|
+
//# sourceMappingURL=handoff.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handoff.d.ts","sourceRoot":"","sources":["../../src/lib/handoff.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,316 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Pure contract and planner for `you handoff`.
|
|
4
|
+
*
|
|
5
|
+
* The planner deliberately has no process, network, or filesystem access. The
|
|
6
|
+
* CLI adapter inventories the fleet through the existing You orchestrator and
|
|
7
|
+
* remote-command boundary, then executes only the actions returned here.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.HANDOFF_CONTRACT = void 0;
|
|
11
|
+
exports.findAmbiguousMachineHosts = findAmbiguousMachineHosts;
|
|
12
|
+
exports.normalizeGitRemoteIdentity = normalizeGitRemoteIdentity;
|
|
13
|
+
exports.projectRemoteIdentity = projectRemoteIdentity;
|
|
14
|
+
exports.executeGuardedHandoffPlan = executeGuardedHandoffPlan;
|
|
15
|
+
exports.buildHandoffPlan = buildHandoffPlan;
|
|
16
|
+
exports.buildHandoffGoal = buildHandoffGoal;
|
|
17
|
+
exports.HANDOFF_CONTRACT = Object.freeze({
|
|
18
|
+
schemaVersion: "you-md/handoff/v1",
|
|
19
|
+
never: ["sigterm-active-work", "force-push", "reset", "auto-merge"],
|
|
20
|
+
dirtyRepos: "blocked-native-clean-repo-mvp",
|
|
21
|
+
cleanAheadPush: "exact-observed-head-no-force",
|
|
22
|
+
cleanCloneUpdate: "git-pull-ff-only",
|
|
23
|
+
arbitraryChatControl: false,
|
|
24
|
+
dreamCycle: "deferred-explicit-opt-in",
|
|
25
|
+
});
|
|
26
|
+
/** Exact and short hostname aliases cannot safely address two stable machines on the current bus. */
|
|
27
|
+
function findAmbiguousMachineHosts(machines) {
|
|
28
|
+
const keysByAlias = new Map();
|
|
29
|
+
for (const machine of machines) {
|
|
30
|
+
const host = machine.host.trim().toLowerCase();
|
|
31
|
+
if (!host)
|
|
32
|
+
continue;
|
|
33
|
+
for (const alias of new Set([host, host.split(".")[0]])) {
|
|
34
|
+
const keys = keysByAlias.get(alias) || new Set();
|
|
35
|
+
keys.add(machine.machineKey);
|
|
36
|
+
keysByAlias.set(alias, keys);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
const collidedAliases = new Set([...keysByAlias.entries()].filter(([, keys]) => keys.size > 1).map(([alias]) => alias));
|
|
40
|
+
return new Set(machines
|
|
41
|
+
.map((machine) => machine.host.trim().toLowerCase())
|
|
42
|
+
.filter((host) => collidedAliases.has(host) || collidedAliases.has(host.split(".")[0])));
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Normalize one Git remote to a transport-independent repository identity.
|
|
46
|
+
* HTTPS, SSH URLs, and SCP-style Git URLs for the same host/path converge;
|
|
47
|
+
* local paths remain exact file identities. Invalid or ambiguous inputs fail
|
|
48
|
+
* closed instead of being guessed from a directory name.
|
|
49
|
+
*/
|
|
50
|
+
function normalizeGitRemoteIdentity(value) {
|
|
51
|
+
const raw = value?.trim();
|
|
52
|
+
if (!raw || /[\r\n\0]/.test(raw))
|
|
53
|
+
return null;
|
|
54
|
+
if (raw.startsWith("file:/")) {
|
|
55
|
+
const normalized = raw.slice("file:".length).replace(/\\/g, "/").replace(/\/+$/, "").replace(/\.git$/i, "");
|
|
56
|
+
return normalized.startsWith("/") ? `file:${normalized}` : null;
|
|
57
|
+
}
|
|
58
|
+
if (raw.startsWith("/")) {
|
|
59
|
+
const normalized = raw.replace(/\\/g, "/").replace(/\/+$/, "").replace(/\.git$/i, "");
|
|
60
|
+
return normalized ? `file:${normalized}` : null;
|
|
61
|
+
}
|
|
62
|
+
if (/^(?:[A-Za-z0-9-]+\.)+[A-Za-z0-9-]+(?::\d+)?\/.+/.test(raw)) {
|
|
63
|
+
return normalizeGitRemoteIdentity(`https://${raw}`);
|
|
64
|
+
}
|
|
65
|
+
if (raw.startsWith("./") || raw.startsWith("../"))
|
|
66
|
+
return null;
|
|
67
|
+
const scp = raw.match(/^(?:[^@/:]+@)?([^/:]+):(.+)$/);
|
|
68
|
+
const candidate = scp && !raw.includes("://") ? `ssh://${scp[1]}/${scp[2]}` : raw;
|
|
69
|
+
try {
|
|
70
|
+
const parsed = new URL(candidate);
|
|
71
|
+
if (parsed.username && parsed.protocol !== "ssh:")
|
|
72
|
+
return null;
|
|
73
|
+
if (parsed.password || parsed.search || parsed.hash)
|
|
74
|
+
return null;
|
|
75
|
+
if (parsed.protocol === "file:") {
|
|
76
|
+
const pathname = parsed.pathname.replace(/\/+$/, "").replace(/\.git$/i, "");
|
|
77
|
+
return pathname ? `file:${pathname}` : null;
|
|
78
|
+
}
|
|
79
|
+
if (!["https:", "http:", "ssh:", "git:"].includes(parsed.protocol))
|
|
80
|
+
return null;
|
|
81
|
+
const host = parsed.hostname.toLowerCase();
|
|
82
|
+
let pathname = parsed.pathname.replace(/^\/+|\/+$/g, "").replace(/\.git$/i, "");
|
|
83
|
+
if (!host || !pathname || pathname.split("/").some((part) => !part || part === "." || part === ".."))
|
|
84
|
+
return null;
|
|
85
|
+
if (host === "github.com" || host.endsWith(".github.com")) {
|
|
86
|
+
if (pathname.split("/").length !== 2)
|
|
87
|
+
return null;
|
|
88
|
+
pathname = pathname.toLowerCase();
|
|
89
|
+
}
|
|
90
|
+
const port = parsed.port ? `:${parsed.port}` : "";
|
|
91
|
+
return `${host}${port}/${pathname}`;
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
function projectRemoteIdentity(project) {
|
|
98
|
+
const declared = normalizeGitRemoteIdentity(project.repoIdentity) || normalizeGitRemoteIdentity(project.repoUrl);
|
|
99
|
+
if (declared)
|
|
100
|
+
return declared;
|
|
101
|
+
const fullName = project.repoFullName?.trim().replace(/^\/+|\/+$/g, "").replace(/\.git$/i, "");
|
|
102
|
+
return fullName && /^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/.test(fullName)
|
|
103
|
+
? normalizeGitRemoteIdentity(`https://github.com/${fullName}`)
|
|
104
|
+
: null;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Execute an already-validated plan in safety order. No callback is invoked for
|
|
108
|
+
* an unsafe plan; every coordinator receipt must succeed before the first git
|
|
109
|
+
* or sync mutation; any later failure invalidates the remaining observations.
|
|
110
|
+
*/
|
|
111
|
+
async function executeGuardedHandoffPlan(plan, execute) {
|
|
112
|
+
if (!plan.safeToRun)
|
|
113
|
+
return [];
|
|
114
|
+
const executable = plan.actions.filter((action) => action.kind !== "block" && action.kind !== "report");
|
|
115
|
+
const ordered = [
|
|
116
|
+
...executable.filter((action) => action.kind === "worker_state_receipt"),
|
|
117
|
+
...executable.filter((action) => action.kind !== "worker_state_receipt"),
|
|
118
|
+
];
|
|
119
|
+
const receipts = [];
|
|
120
|
+
for (const action of ordered) {
|
|
121
|
+
const result = await execute(action);
|
|
122
|
+
receipts.push({ action, result });
|
|
123
|
+
if (!result.ok)
|
|
124
|
+
break;
|
|
125
|
+
}
|
|
126
|
+
return receipts;
|
|
127
|
+
}
|
|
128
|
+
/** Build the complete guarded handoff plan from an already-observed fleet. */
|
|
129
|
+
function buildHandoffPlan(inventory) {
|
|
130
|
+
const actions = [];
|
|
131
|
+
const conflicts = [];
|
|
132
|
+
const offlineHosts = inventory.machines.filter((machine) => !machine.online).map((machine) => machine.host);
|
|
133
|
+
const unmanaged = inventory.repos
|
|
134
|
+
.filter((repo) => repo.availability === "unmanaged")
|
|
135
|
+
.map((repo) => ({ host: repo.host, project: repo.project }));
|
|
136
|
+
const errorRepos = inventory.repos
|
|
137
|
+
.filter((repo) => repo.availability === "error")
|
|
138
|
+
.map((repo) => ({ host: repo.host, project: repo.project, reason: repo.note || "repository state could not be verified" }));
|
|
139
|
+
const unverifiedWorkers = inventory.workers
|
|
140
|
+
.filter((worker) => worker.status === "running")
|
|
141
|
+
.map((worker) => ({ host: worker.host, workerId: worker.id }));
|
|
142
|
+
for (const machine of inventory.machines) {
|
|
143
|
+
if (!machine.online) {
|
|
144
|
+
actions.push({ kind: "report", host: machine.host, reason: machine.note || "offline or daemon unavailable" });
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
const workers = inventory.workers.filter((worker) => worker.host === machine.host);
|
|
148
|
+
actions.push({ kind: "worker_state_receipt", machineKey: machine.machineKey, host: machine.host, workerIds: workers.map((worker) => worker.id), verified: false });
|
|
149
|
+
}
|
|
150
|
+
for (const project of inventory.projects) {
|
|
151
|
+
const states = inventory.repos.filter((repo) => repo.project === project.slug && repo.availability === "managed");
|
|
152
|
+
const dirty = states.filter((repo) => repo.dirty);
|
|
153
|
+
if (dirty.length > 1) {
|
|
154
|
+
const dirtyHosts = dirty.map((repo) => repo.host);
|
|
155
|
+
conflicts.push({ project: project.slug, dirtyHosts });
|
|
156
|
+
actions.push({
|
|
157
|
+
kind: "block",
|
|
158
|
+
project: project.slug,
|
|
159
|
+
hosts: dirtyHosts,
|
|
160
|
+
reason: "same repository is dirty on multiple hosts; no copy is chosen or changed",
|
|
161
|
+
});
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
164
|
+
if (dirty.length === 1) {
|
|
165
|
+
const authority = dirty[0];
|
|
166
|
+
actions.push({
|
|
167
|
+
kind: "block",
|
|
168
|
+
project: project.slug,
|
|
169
|
+
hosts: [authority.host],
|
|
170
|
+
reason: "native handoff currently supports clean repositories only; dirty work remains untouched and partial",
|
|
171
|
+
});
|
|
172
|
+
continue;
|
|
173
|
+
}
|
|
174
|
+
const declaredRemoteIdentity = projectRemoteIdentity(project);
|
|
175
|
+
const stateRemoteIdentities = states.map((state) => normalizeGitRemoteIdentity(state.remoteIdentity) || normalizeGitRemoteIdentity(state.remoteUrl));
|
|
176
|
+
const remoteIdentities = new Set(stateRemoteIdentities.filter((identity) => Boolean(identity)));
|
|
177
|
+
if (states.some((_, index) => !stateRemoteIdentities[index]) ||
|
|
178
|
+
remoteIdentities.size !== 1 ||
|
|
179
|
+
(declaredRemoteIdentity !== null && !remoteIdentities.has(declaredRemoteIdentity))) {
|
|
180
|
+
actions.push({
|
|
181
|
+
kind: "block",
|
|
182
|
+
project: project.slug,
|
|
183
|
+
hosts: states.map((state) => state.host),
|
|
184
|
+
reason: "project clones do not share one canonical remote repository identity",
|
|
185
|
+
});
|
|
186
|
+
continue;
|
|
187
|
+
}
|
|
188
|
+
const expectedRemoteIdentity = [...remoteIdentities][0];
|
|
189
|
+
const branches = new Set(states.map((state) => state.branch).filter((branch) => Boolean(branch)));
|
|
190
|
+
if (states.some((state) => !state.branch || !state.headOid || !state.upstream || !state.upstreamOid) || branches.size > 1) {
|
|
191
|
+
actions.push({
|
|
192
|
+
kind: "block",
|
|
193
|
+
project: project.slug,
|
|
194
|
+
hosts: states.map((state) => state.host),
|
|
195
|
+
reason: "clean clones do not share one fully observed branch/upstream/OID state",
|
|
196
|
+
});
|
|
197
|
+
continue;
|
|
198
|
+
}
|
|
199
|
+
const ahead = states.filter((state) => (state.ahead || 0) > 0);
|
|
200
|
+
if (ahead.length > 1 || ahead.some((state) => (state.behind || 0) > 0)) {
|
|
201
|
+
actions.push({
|
|
202
|
+
kind: "block",
|
|
203
|
+
project: project.slug,
|
|
204
|
+
hosts: ahead.map((state) => state.host),
|
|
205
|
+
reason: "clean clones have divergent or multiple ahead branches; handoff never chooses or merges",
|
|
206
|
+
});
|
|
207
|
+
continue;
|
|
208
|
+
}
|
|
209
|
+
if (ahead.length === 1) {
|
|
210
|
+
const authority = ahead[0];
|
|
211
|
+
const expectedFinalOid = authority.headOid;
|
|
212
|
+
actions.push({
|
|
213
|
+
kind: "push_clean",
|
|
214
|
+
machineKey: authority.machineKey,
|
|
215
|
+
host: authority.host,
|
|
216
|
+
project: project.slug,
|
|
217
|
+
target: project.directoryName,
|
|
218
|
+
expectedHead: authority.headOid,
|
|
219
|
+
expectedBranch: authority.branch,
|
|
220
|
+
expectedUpstream: authority.upstream,
|
|
221
|
+
expectedUpstreamOid: authority.upstreamOid,
|
|
222
|
+
expectedRemoteIdentity,
|
|
223
|
+
expectedFinalOid,
|
|
224
|
+
reason: "one clean, non-divergent clone is ahead; push its exact observed HEAD without force",
|
|
225
|
+
});
|
|
226
|
+
for (const state of states) {
|
|
227
|
+
if (state.machineKey !== authority.machineKey) {
|
|
228
|
+
actions.push({
|
|
229
|
+
kind: "pull_ff_only",
|
|
230
|
+
machineKey: state.machineKey,
|
|
231
|
+
host: state.host,
|
|
232
|
+
project: project.slug,
|
|
233
|
+
target: project.directoryName,
|
|
234
|
+
expectedHead: state.headOid,
|
|
235
|
+
expectedBranch: state.branch,
|
|
236
|
+
expectedUpstream: state.upstream,
|
|
237
|
+
expectedUpstreamOid: state.upstreamOid,
|
|
238
|
+
expectedRemoteIdentity,
|
|
239
|
+
expectedFinalOid,
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
continue;
|
|
244
|
+
}
|
|
245
|
+
const finalOids = new Set(states.map((state) => state.upstreamOid));
|
|
246
|
+
if (finalOids.size !== 1) {
|
|
247
|
+
actions.push({
|
|
248
|
+
kind: "block",
|
|
249
|
+
project: project.slug,
|
|
250
|
+
hosts: states.map((state) => state.host),
|
|
251
|
+
reason: "project clones do not resolve to one observed final remote OID",
|
|
252
|
+
});
|
|
253
|
+
continue;
|
|
254
|
+
}
|
|
255
|
+
const expectedFinalOid = [...finalOids][0];
|
|
256
|
+
for (const state of states) {
|
|
257
|
+
actions.push({
|
|
258
|
+
kind: "pull_ff_only",
|
|
259
|
+
machineKey: state.machineKey,
|
|
260
|
+
host: state.host,
|
|
261
|
+
project: project.slug,
|
|
262
|
+
target: project.directoryName,
|
|
263
|
+
expectedHead: state.headOid,
|
|
264
|
+
expectedBranch: state.branch,
|
|
265
|
+
expectedUpstream: state.upstream,
|
|
266
|
+
expectedUpstreamOid: state.upstreamOid,
|
|
267
|
+
expectedRemoteIdentity,
|
|
268
|
+
expectedFinalOid,
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
for (const machine of inventory.machines) {
|
|
273
|
+
if (machine.online)
|
|
274
|
+
actions.push({ kind: "machine_sync", machineKey: machine.machineKey, host: machine.host });
|
|
275
|
+
}
|
|
276
|
+
for (const row of unmanaged) {
|
|
277
|
+
actions.push({ kind: "report", ...row, reason: "project is not managed on this host" });
|
|
278
|
+
}
|
|
279
|
+
return {
|
|
280
|
+
schemaVersion: "you-md/handoff-plan/v1",
|
|
281
|
+
safeToRun: conflicts.length === 0 &&
|
|
282
|
+
offlineHosts.length === 0 &&
|
|
283
|
+
unmanaged.length === 0 &&
|
|
284
|
+
errorRepos.length === 0 &&
|
|
285
|
+
unverifiedWorkers.length === 0 &&
|
|
286
|
+
inventory.machines.every((machine) => machine.managed) &&
|
|
287
|
+
!actions.some((action) => action.kind === "block"),
|
|
288
|
+
actions,
|
|
289
|
+
conflicts,
|
|
290
|
+
offlineHosts,
|
|
291
|
+
unmanaged,
|
|
292
|
+
errorRepos,
|
|
293
|
+
unverifiedWorkers,
|
|
294
|
+
blockingReasons: [
|
|
295
|
+
...(offlineHosts.length ? [`${offlineHosts.length} machine(s) offline`] : []),
|
|
296
|
+
...(unmanaged.length ? [`${unmanaged.length} unmanaged project clone(s)`] : []),
|
|
297
|
+
...(errorRepos.length ? [`${errorRepos.length} repository state probe(s) failed`] : []),
|
|
298
|
+
...(unverifiedWorkers.length ? [`${unverifiedWorkers.length} running worker(s) have state receipts only, not agent-authored checkpoints`] : []),
|
|
299
|
+
...(inventory.machines.some((machine) => !machine.managed) ? ["one or more coordinator registries are unavailable"] : []),
|
|
300
|
+
...actions.filter((action) => action.kind === "block").map((action) => action.reason),
|
|
301
|
+
],
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
/** Stable You Agent goal text used in receipts and activity logs. */
|
|
305
|
+
function buildHandoffGoal(mode) {
|
|
306
|
+
return [
|
|
307
|
+
`${mode === "plan" ? "Plan" : "Run"} the end-of-day fleet handoff through the You Agent orchestrator.`,
|
|
308
|
+
"Inventory every synced machine, portfolio project, and registered orchestrator worker.",
|
|
309
|
+
"Request checkpoints only from registered coordinators that expose a receipt protocol; otherwise record state as unverified without signaling or terminating work.",
|
|
310
|
+
"Block repositories dirty on more than one host.",
|
|
311
|
+
"Leave dirty repositories untouched; for clean repositories, push only one non-divergent exact observed HEAD and update other clean clones with git pull --ff-only.",
|
|
312
|
+
"Sync You.md identity, shared skills, and project context, then report offline, unmanaged, and conflicted state honestly.",
|
|
313
|
+
"Never claim control of arbitrary Codex, Claude, or Cursor chats.",
|
|
314
|
+
].join(" ");
|
|
315
|
+
}
|
|
316
|
+
//# sourceMappingURL=handoff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handoff.js","sourceRoot":"","sources":["../../src/lib/handoff.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAmEH,8DAiBC;AAQD,gEAwCC;AAED,sDAOC;AA2BD,8DAoBC;AAGD,4CA6LC;AAGD,4CAUC;AAvYY,QAAA,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC5C,aAAa,EAAE,mBAA4B;IAC3C,KAAK,EAAE,CAAC,qBAAqB,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,CAAU;IAC5E,UAAU,EAAE,+BAAwC;IACpD,cAAc,EAAE,8BAAuC;IACvD,gBAAgB,EAAE,kBAA2B;IAC7C,oBAAoB,EAAE,KAAc;IACpC,UAAU,EAAE,0BAAmC;CAChD,CAAC,CAAC;AAwDH,qGAAqG;AACrG,SAAgB,yBAAyB,CAAC,QAAqD;IAC7F,MAAM,WAAW,GAAG,IAAI,GAAG,EAAuB,CAAC;IACnD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC/C,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,KAAK,MAAM,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,GAAG,EAAU,CAAC;YACzD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC7B,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IACD,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACxH,OAAO,IAAI,GAAG,CACZ,QAAQ;SACL,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;SACnD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC1F,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAgB,0BAA0B,CAAC,KAAgC;IACzE,MAAM,GAAG,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC;IAC1B,IAAI,CAAC,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAE9C,IAAI,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAC5G,OAAO,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAClE,CAAC;IACD,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACtF,OAAO,UAAU,CAAC,CAAC,CAAC,QAAQ,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAClD,CAAC;IACD,IAAI,iDAAiD,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAChE,OAAO,0BAA0B,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAE/D,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;IAClF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;QAClC,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,KAAK,MAAM;YAAE,OAAO,IAAI,CAAC;QAC/D,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACjE,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YAChC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YAC5E,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9C,CAAC;QACD,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC;YAAE,OAAO,IAAI,CAAC;QAChF,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;QAC3C,IAAI,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAChF,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAClH,IAAI,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YAC1D,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;YAClD,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;QACpC,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,OAAO,GAAG,IAAI,GAAG,IAAI,IAAI,QAAQ,EAAE,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAgB,qBAAqB,CAAC,OAA0E;IAC9G,MAAM,QAAQ,GAAG,0BAA0B,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,0BAA0B,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACjH,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAC/F,OAAO,QAAQ,IAAI,oCAAoC,CAAC,IAAI,CAAC,QAAQ,CAAC;QACpE,CAAC,CAAC,0BAA0B,CAAC,sBAAsB,QAAQ,EAAE,CAAC;QAC9D,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAsBD;;;;GAIG;AACI,KAAK,UAAU,yBAAyB,CAC7C,IAAiB,EACjB,OAA+F;IAE/F,IAAI,CAAC,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAC;IAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CACpC,CAAC,MAAM,EAA4E,EAAE,CACnF,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,CACtD,CAAC;IACF,MAAM,OAAO,GAAG;QACd,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,sBAAsB,CAAC;QACxE,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,sBAAsB,CAAC;KACzE,CAAC;IACF,MAAM,QAAQ,GAA2D,EAAE,CAAC;IAC5E,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;QACrC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,MAAM;IACxB,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,8EAA8E;AAC9E,SAAgB,gBAAgB,CAAC,SAA2B;IAC1D,MAAM,OAAO,GAAoB,EAAE,CAAC;IACpC,MAAM,SAAS,GAA6B,EAAE,CAAC;IAC/C,MAAM,YAAY,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5G,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK;SAC9B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,KAAK,WAAW,CAAC;SACnD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC/D,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK;SAC/B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,KAAK,OAAO,CAAC;SAC/C,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,IAAI,wCAAwC,EAAE,CAAC,CAAC,CAAC;IAC9H,MAAM,iBAAiB,GAAG,SAAS,CAAC,OAAO;SACxC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC;SAC/C,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAEjE,KAAK,MAAM,OAAO,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;QACzC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,IAAI,+BAA+B,EAAE,CAAC,CAAC;YAC9G,SAAS;QACX,CAAC;QACD,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QACnF,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IACrK,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CACnC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,CAC3E,CAAC;QACF,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAElD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClD,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;YACtD,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,OAAO,CAAC,IAAI;gBACrB,KAAK,EAAE,UAAU;gBACjB,MAAM,EAAE,0EAA0E;aACnF,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,OAAO,CAAC,IAAI;gBACrB,KAAK,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC;gBACvB,MAAM,EAAE,qGAAqG;aAC9G,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,MAAM,sBAAsB,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAC9D,MAAM,qBAAqB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACjD,0BAA0B,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,0BAA0B,CAAC,KAAK,CAAC,SAAS,CAAC,CAChG,CAAC;QACF,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAsB,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACpH,IACE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;YACxD,gBAAgB,CAAC,IAAI,KAAK,CAAC;YAC3B,CAAC,sBAAsB,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,EAClF,CAAC;YACD,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,OAAO,CAAC,IAAI;gBACrB,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;gBACxC,MAAM,EAAE,sEAAsE;aAC/E,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,MAAM,sBAAsB,GAAG,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;QAExD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAoB,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACpH,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC1H,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,OAAO,CAAC,IAAI;gBACrB,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;gBACxC,MAAM,EAAE,wEAAwE;aACjF,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/D,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACvE,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,OAAO,CAAC,IAAI;gBACrB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;gBACvC,MAAM,EAAE,yFAAyF;aAClG,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC3B,MAAM,gBAAgB,GAAG,SAAS,CAAC,OAAiB,CAAC;YACrD,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,YAAY;gBAClB,UAAU,EAAE,SAAS,CAAC,UAAU;gBAChC,IAAI,EAAE,SAAS,CAAC,IAAI;gBACpB,OAAO,EAAE,OAAO,CAAC,IAAI;gBACrB,MAAM,EAAE,OAAO,CAAC,aAAa;gBAC7B,YAAY,EAAE,SAAS,CAAC,OAAiB;gBACzC,cAAc,EAAE,SAAS,CAAC,MAAgB;gBAC1C,gBAAgB,EAAE,SAAS,CAAC,QAAkB;gBAC9C,mBAAmB,EAAE,SAAS,CAAC,WAAqB;gBACpD,sBAAsB;gBACtB,gBAAgB;gBAChB,MAAM,EAAE,qFAAqF;aAC9F,CAAC,CAAC;YACH,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,UAAU,EAAE,CAAC;oBAC9C,OAAO,CAAC,IAAI,CAAC;wBACX,IAAI,EAAE,cAAc;wBACpB,UAAU,EAAE,KAAK,CAAC,UAAU;wBAC5B,IAAI,EAAE,KAAK,CAAC,IAAI;wBAChB,OAAO,EAAE,OAAO,CAAC,IAAI;wBACrB,MAAM,EAAE,OAAO,CAAC,aAAa;wBAC7B,YAAY,EAAE,KAAK,CAAC,OAAiB;wBACrC,cAAc,EAAE,KAAK,CAAC,MAAgB;wBACtC,gBAAgB,EAAE,KAAK,CAAC,QAAkB;wBAC1C,mBAAmB,EAAE,KAAK,CAAC,WAAqB;wBAChD,sBAAsB;wBACtB,gBAAgB;qBACjB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YACD,SAAS;QACX,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAqB,CAAC,CAAC,CAAC;QAC9E,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,OAAO,CAAC,IAAI;gBACrB,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;gBACxC,MAAM,EAAE,gEAAgE;aACzE,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,MAAM,gBAAgB,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,cAAc;gBACpB,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,OAAO,EAAE,OAAO,CAAC,IAAI;gBACrB,MAAM,EAAE,OAAO,CAAC,aAAa;gBAC7B,YAAY,EAAE,KAAK,CAAC,OAAiB;gBACrC,cAAc,EAAE,KAAK,CAAC,MAAgB;gBACtC,gBAAgB,EAAE,KAAK,CAAC,QAAkB;gBAC1C,mBAAmB,EAAE,KAAK,CAAC,WAAqB;gBAChD,sBAAsB;gBACtB,gBAAgB;aACjB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;QACzC,IAAI,OAAO,CAAC,MAAM;YAAE,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACjH,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,GAAG,EAAE,MAAM,EAAE,qCAAqC,EAAE,CAAC,CAAC;IAC1F,CAAC;IAED,OAAO;QACL,aAAa,EAAE,wBAAwB;QACvC,SAAS,EACP,SAAS,CAAC,MAAM,KAAK,CAAC;YACtB,YAAY,CAAC,MAAM,KAAK,CAAC;YACzB,SAAS,CAAC,MAAM,KAAK,CAAC;YACtB,UAAU,CAAC,MAAM,KAAK,CAAC;YACvB,iBAAiB,CAAC,MAAM,KAAK,CAAC;YAC9B,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;YACtD,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC;QACpD,OAAO;QACP,SAAS;QACT,YAAY;QACZ,SAAS;QACT,UAAU;QACV,iBAAiB;QACjB,eAAe,EAAE;YACf,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM,qBAAqB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7E,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,6BAA6B,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/E,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,mCAAmC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACvF,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,MAAM,6EAA6E,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/I,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,oDAAoD,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACzH,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAuD,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;SAC3I;KACF,CAAC;AACJ,CAAC;AAED,qEAAqE;AACrE,SAAgB,gBAAgB,CAAC,IAAoB;IACnD,OAAO;QACL,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,mEAAmE;QACtG,wFAAwF;QACxF,mKAAmK;QACnK,iDAAiD;QACjD,oKAAoK;QACpK,0HAA0H;QAC1H,kEAAkE;KACnE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,CAAC"}
|
|
@@ -12,5 +12,7 @@ type MachineIdentityOptions = {
|
|
|
12
12
|
* workspace location participates in the identity.
|
|
13
13
|
*/
|
|
14
14
|
export declare function getPhysicalMachineKey(options?: MachineIdentityOptions): string;
|
|
15
|
+
/** Read the durable key without provisioning it. Safe for read-only plan/status commands. */
|
|
16
|
+
export declare function readPhysicalMachineKey(options?: Pick<MachineIdentityOptions, "bundleDir">): string | null;
|
|
15
17
|
export {};
|
|
16
18
|
//# sourceMappingURL=machine-identity.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"machine-identity.d.ts","sourceRoot":"","sources":["../../src/lib/machine-identity.ts"],"names":[],"mappings":"AAcA,KAAK,sBAAsB,GAAG;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,MAAM,CAAC;IAC1B,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB,CAAC;AAeF;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,sBAA2B,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"machine-identity.d.ts","sourceRoot":"","sources":["../../src/lib/machine-identity.ts"],"names":[],"mappings":"AAcA,KAAK,sBAAsB,GAAG;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,MAAM,CAAC;IAC1B,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB,CAAC;AAeF;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,sBAA2B,GAAG,MAAM,CAwClF;AAED,6FAA6F;AAC7F,wBAAgB,sBAAsB,CAAC,OAAO,GAAE,IAAI,CAAC,sBAAsB,EAAE,WAAW,CAAM,GAAG,MAAM,GAAG,IAAI,CAO7G"}
|
|
@@ -34,6 +34,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.getPhysicalMachineKey = getPhysicalMachineKey;
|
|
37
|
+
exports.readPhysicalMachineKey = readPhysicalMachineKey;
|
|
37
38
|
const crypto = __importStar(require("crypto"));
|
|
38
39
|
const fs = __importStar(require("fs"));
|
|
39
40
|
const path = __importStar(require("path"));
|
|
@@ -61,14 +62,11 @@ function nonEmptyString(value) {
|
|
|
61
62
|
*/
|
|
62
63
|
function getPhysicalMachineKey(options = {}) {
|
|
63
64
|
const bundleDir = options.bundleDir || (0, config_1.getWritableHomeBundleDir)();
|
|
64
|
-
const
|
|
65
|
-
const identityPath = path.join(machineDir, "physical-machine.json");
|
|
66
|
-
const existing = readJson(identityPath);
|
|
67
|
-
const existingKey = existing?.schemaVersion === IDENTITY_SCHEMA
|
|
68
|
-
? nonEmptyString(existing.machineKey)
|
|
69
|
-
: null;
|
|
65
|
+
const existingKey = readPhysicalMachineKey({ bundleDir });
|
|
70
66
|
if (existingKey)
|
|
71
67
|
return existingKey;
|
|
68
|
+
const machineDir = path.join(bundleDir, "machine");
|
|
69
|
+
const identityPath = path.join(machineDir, "physical-machine.json");
|
|
72
70
|
const secretVaultKeyPath = path.join(bundleDir, "secret-vault", "devices", "current-device-key.json");
|
|
73
71
|
const secretVaultDeviceId = nonEmptyString(readJson(secretVaultKeyPath)?.deviceId);
|
|
74
72
|
const record = {
|
|
@@ -98,4 +96,13 @@ function getPhysicalMachineKey(options = {}) {
|
|
|
98
96
|
throw error;
|
|
99
97
|
}
|
|
100
98
|
}
|
|
99
|
+
/** Read the durable key without provisioning it. Safe for read-only plan/status commands. */
|
|
100
|
+
function readPhysicalMachineKey(options = {}) {
|
|
101
|
+
const bundleDir = options.bundleDir || (0, config_1.getWritableHomeBundleDir)();
|
|
102
|
+
const identityPath = path.join(bundleDir, "machine", "physical-machine.json");
|
|
103
|
+
const existing = readJson(identityPath);
|
|
104
|
+
return existing?.schemaVersion === IDENTITY_SCHEMA
|
|
105
|
+
? nonEmptyString(existing.machineKey)
|
|
106
|
+
: null;
|
|
107
|
+
}
|
|
101
108
|
//# sourceMappingURL=machine-identity.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"machine-identity.js","sourceRoot":"","sources":["../../src/lib/machine-identity.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCA,
|
|
1
|
+
{"version":3,"file":"machine-identity.js","sourceRoot":"","sources":["../../src/lib/machine-identity.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/onboarding.d.ts
CHANGED
|
@@ -63,7 +63,10 @@ interface ChatMessage {
|
|
|
63
63
|
role: "system" | "user" | "assistant";
|
|
64
64
|
content: string;
|
|
65
65
|
}
|
|
66
|
-
declare function callLLM(apiKey: string | null, messages: ChatMessage[]
|
|
66
|
+
declare function callLLM(apiKey: string | null, messages: ChatMessage[], options?: {
|
|
67
|
+
authorizationToken?: string;
|
|
68
|
+
model?: "opus-5" | "gpt-5.6-sol";
|
|
69
|
+
}): Promise<string>;
|
|
67
70
|
interface SectionUpdate {
|
|
68
71
|
section: string;
|
|
69
72
|
content: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onboarding.d.ts","sourceRoot":"","sources":["../../src/lib/onboarding.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,cAAc,EAA6C,MAAM,UAAU,CAAC;AAYrF,QAAA,MAAM,cAAc,QAAyB,CAAC;AAC9C,QAAA,MAAM,UAAU,QAA2B,CAAC;AAC5C,QAAA,MAAM,YAAY,QAA6B,CAAC;AAQhD,QAAA,MAAM,cAAc;;;;;CAqCnB,CAAC;AAEF,iBAAS,WAAW,CAAC,QAAQ,EAAE,MAAM,OAAO,cAAc,GAAG,MAAM,CAGlE;AAsOD,QAAA,MAAM,eAAe,mKAQX,CAAC;AAEX,KAAK,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtD,QAAA,MAAM,aAAa,44LA6GV,CAAC;AAoBV,iBAAS,cAAc,IAAI,MAAM,CAIhC;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAG/D;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,GAAG,OAAO,CAkB3E;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAGpD;AAyBD,iBAAS,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAWzC;AAID,iBAAe,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA0B/D;AAID,UAAU,YAAY;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,iBAAe,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CActE;AAED,UAAU,cAAc;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,iBAAe,YAAY,CAAC,MAAM,EAAE;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAcjC;AA0BD,UAAU,WAAW;IACnB,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AASD,iBAAe,OAAO,CACpB,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,QAAQ,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"onboarding.d.ts","sourceRoot":"","sources":["../../src/lib/onboarding.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/onboarding.js
CHANGED
|
@@ -626,13 +626,21 @@ function displayScrapeResult(label, data) {
|
|
|
626
626
|
* directive blocks out of the live display. URL for the SSE proxy:
|
|
627
627
|
*/
|
|
628
628
|
const STREAM_CHAT_URL = `${_SITE}/api/v1/chat/stream`;
|
|
629
|
-
async function callLLM(apiKey, messages) {
|
|
629
|
+
async function callLLM(apiKey, messages, options) {
|
|
630
630
|
// Try the you.md proxy first (no API key needed)
|
|
631
631
|
try {
|
|
632
632
|
const proxyRes = await fetch(CHAT_PROXY_URL, {
|
|
633
633
|
method: "POST",
|
|
634
|
-
headers: {
|
|
635
|
-
|
|
634
|
+
headers: {
|
|
635
|
+
"Content-Type": "application/json",
|
|
636
|
+
...(options?.authorizationToken
|
|
637
|
+
? { Authorization: `Bearer ${options.authorizationToken}` }
|
|
638
|
+
: {}),
|
|
639
|
+
},
|
|
640
|
+
body: JSON.stringify({
|
|
641
|
+
messages,
|
|
642
|
+
...(options?.model ? { model: options.model } : {}),
|
|
643
|
+
}),
|
|
636
644
|
signal: AbortSignal.timeout(60000),
|
|
637
645
|
});
|
|
638
646
|
if (proxyRes.ok) {
|