@phigon/observer 8.1.0 → 8.3.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/README.md +244 -18
- package/dist/bin/guardian-runner-darwin-amd64 +0 -0
- package/dist/bin/guardian-runner-darwin-arm64 +0 -0
- package/dist/bin/guardian-runner-linux-amd64 +0 -0
- package/dist/bin/guardian-runner-linux-arm64 +0 -0
- package/dist/bin/guardian-runner-windows-amd64.exe +0 -0
- package/dist/bin/guardian-runner-windows-arm64.exe +0 -0
- package/dist/src/abortable-delay.d.ts +10 -0
- package/dist/src/abortable-delay.d.ts.map +1 -0
- package/dist/src/abortable-delay.js +21 -0
- package/dist/src/abortable-delay.js.map +1 -0
- package/dist/src/action-policy.d.ts.map +1 -1
- package/dist/src/action-policy.js +4 -2
- package/dist/src/action-policy.js.map +1 -1
- package/dist/src/activity/adapters/claude.d.ts.map +1 -1
- package/dist/src/activity/adapters/claude.js +28 -2
- package/dist/src/activity/adapters/claude.js.map +1 -1
- package/dist/src/activity/adapters/cline-task.d.ts +7 -0
- package/dist/src/activity/adapters/cline-task.d.ts.map +1 -0
- package/dist/src/activity/adapters/cline-task.js +197 -0
- package/dist/src/activity/adapters/cline-task.js.map +1 -0
- package/dist/src/activity/adapters/cline.d.ts +3 -0
- package/dist/src/activity/adapters/cline.d.ts.map +1 -0
- package/dist/src/activity/adapters/cline.js +102 -0
- package/dist/src/activity/adapters/cline.js.map +1 -0
- package/dist/src/activity/adapters/codex.d.ts.map +1 -1
- package/dist/src/activity/adapters/codex.js +76 -0
- package/dist/src/activity/adapters/codex.js.map +1 -1
- package/dist/src/activity/adapters/copilot-chat.d.ts +3 -0
- package/dist/src/activity/adapters/copilot-chat.d.ts.map +1 -0
- package/dist/src/activity/adapters/copilot-chat.js +176 -0
- package/dist/src/activity/adapters/copilot-chat.js.map +1 -0
- package/dist/src/activity/adapters/copilot.d.ts +2 -1
- package/dist/src/activity/adapters/copilot.d.ts.map +1 -1
- package/dist/src/activity/adapters/copilot.js +173 -2
- package/dist/src/activity/adapters/copilot.js.map +1 -1
- package/dist/src/activity/adapters/cursor.d.ts +3 -0
- package/dist/src/activity/adapters/cursor.d.ts.map +1 -0
- package/dist/src/activity/adapters/cursor.js +86 -0
- package/dist/src/activity/adapters/cursor.js.map +1 -0
- package/dist/src/activity/adapters/factory-droid.d.ts +3 -0
- package/dist/src/activity/adapters/factory-droid.d.ts.map +1 -0
- package/dist/src/activity/adapters/factory-droid.js +126 -0
- package/dist/src/activity/adapters/factory-droid.js.map +1 -0
- package/dist/src/activity/adapters/gemini.d.ts +3 -0
- package/dist/src/activity/adapters/gemini.d.ts.map +1 -0
- package/dist/src/activity/adapters/gemini.js +177 -0
- package/dist/src/activity/adapters/gemini.js.map +1 -0
- package/dist/src/activity/adapters/goose.d.ts +3 -0
- package/dist/src/activity/adapters/goose.d.ts.map +1 -0
- package/dist/src/activity/adapters/goose.js +116 -0
- package/dist/src/activity/adapters/goose.js.map +1 -0
- package/dist/src/activity/adapters/kiro.d.ts +3 -0
- package/dist/src/activity/adapters/kiro.d.ts.map +1 -0
- package/dist/src/activity/adapters/kiro.js +47 -0
- package/dist/src/activity/adapters/kiro.js.map +1 -0
- package/dist/src/activity/adapters/openai-compatible.d.ts.map +1 -1
- package/dist/src/activity/adapters/openai-compatible.js +9 -1
- package/dist/src/activity/adapters/openai-compatible.js.map +1 -1
- package/dist/src/activity/adapters/opencode.d.ts.map +1 -1
- package/dist/src/activity/adapters/opencode.js +108 -1
- package/dist/src/activity/adapters/opencode.js.map +1 -1
- package/dist/src/activity/adapters/zed.d.ts +3 -0
- package/dist/src/activity/adapters/zed.d.ts.map +1 -0
- package/dist/src/activity/adapters/zed.js +134 -0
- package/dist/src/activity/adapters/zed.js.map +1 -0
- package/dist/src/activity/collector.d.ts +43 -1
- package/dist/src/activity/collector.d.ts.map +1 -1
- package/dist/src/activity/collector.js +490 -77
- package/dist/src/activity/collector.js.map +1 -1
- package/dist/src/activity/goose-sqlite-source.d.ts +33 -0
- package/dist/src/activity/goose-sqlite-source.d.ts.map +1 -0
- package/dist/src/activity/goose-sqlite-source.js +274 -0
- package/dist/src/activity/goose-sqlite-source.js.map +1 -0
- package/dist/src/activity/index.d.ts +3 -0
- package/dist/src/activity/index.d.ts.map +1 -1
- package/dist/src/activity/index.js +3 -0
- package/dist/src/activity/index.js.map +1 -1
- package/dist/src/activity/ingest.d.ts +9 -0
- package/dist/src/activity/ingest.d.ts.map +1 -1
- package/dist/src/activity/ingest.js +94 -4
- package/dist/src/activity/ingest.js.map +1 -1
- package/dist/src/activity/json-document-source.d.ts +151 -0
- package/dist/src/activity/json-document-source.d.ts.map +1 -0
- package/dist/src/activity/json-document-source.js +586 -0
- package/dist/src/activity/json-document-source.js.map +1 -0
- package/dist/src/activity/native-capabilities.d.ts.map +1 -1
- package/dist/src/activity/native-capabilities.js +8 -12
- package/dist/src/activity/native-capabilities.js.map +1 -1
- package/dist/src/activity/normalize.d.ts.map +1 -1
- package/dist/src/activity/normalize.js +64 -6
- package/dist/src/activity/normalize.js.map +1 -1
- package/dist/src/activity/opencode-message-tables.d.ts +87 -0
- package/dist/src/activity/opencode-message-tables.d.ts.map +1 -0
- package/dist/src/activity/opencode-message-tables.js +546 -0
- package/dist/src/activity/opencode-message-tables.js.map +1 -0
- package/dist/src/activity/opencode-sqlite-source.d.ts +7 -0
- package/dist/src/activity/opencode-sqlite-source.d.ts.map +1 -1
- package/dist/src/activity/opencode-sqlite-source.js +154 -63
- package/dist/src/activity/opencode-sqlite-source.js.map +1 -1
- package/dist/src/activity/source-reader.d.ts +60 -4
- package/dist/src/activity/source-reader.d.ts.map +1 -1
- package/dist/src/activity/source-reader.js +593 -75
- package/dist/src/activity/source-reader.js.map +1 -1
- package/dist/src/activity/sqlite-connections.d.ts +77 -0
- package/dist/src/activity/sqlite-connections.d.ts.map +1 -0
- package/dist/src/activity/sqlite-connections.js +220 -0
- package/dist/src/activity/sqlite-connections.js.map +1 -0
- package/dist/src/activity/zed-sqlite-source.d.ts +65 -0
- package/dist/src/activity/zed-sqlite-source.d.ts.map +1 -0
- package/dist/src/activity/zed-sqlite-source.js +547 -0
- package/dist/src/activity/zed-sqlite-source.js.map +1 -0
- package/dist/src/agent-action-executor.d.ts +18 -1
- package/dist/src/agent-action-executor.d.ts.map +1 -1
- package/dist/src/agent-action-executor.js +113 -58
- package/dist/src/agent-action-executor.js.map +1 -1
- package/dist/src/agentic-guardian.d.ts.map +1 -1
- package/dist/src/agentic-guardian.js +6 -5
- package/dist/src/agentic-guardian.js.map +1 -1
- package/dist/src/atomic-replace.d.ts +7 -0
- package/dist/src/atomic-replace.d.ts.map +1 -1
- package/dist/src/atomic-replace.js +28 -3
- package/dist/src/atomic-replace.js.map +1 -1
- package/dist/src/bridge-journal.d.ts +32 -0
- package/dist/src/bridge-journal.d.ts.map +1 -0
- package/dist/src/bridge-journal.js +113 -0
- package/dist/src/bridge-journal.js.map +1 -0
- package/dist/src/cli.d.ts +7 -1
- package/dist/src/cli.d.ts.map +1 -1
- package/dist/src/cli.js +534 -50
- package/dist/src/cli.js.map +1 -1
- package/dist/src/collection-notice.d.ts +34 -0
- package/dist/src/collection-notice.d.ts.map +1 -0
- package/dist/src/collection-notice.js +73 -0
- package/dist/src/collection-notice.js.map +1 -0
- package/dist/src/config.d.ts +39 -0
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/config.js +187 -36
- package/dist/src/config.js.map +1 -1
- package/dist/src/connection-config.d.ts.map +1 -1
- package/dist/src/connection-config.js +5 -0
- package/dist/src/connection-config.js.map +1 -1
- package/dist/src/content-redaction.d.ts +17 -1
- package/dist/src/content-redaction.d.ts.map +1 -1
- package/dist/src/content-redaction.js +51 -3
- package/dist/src/content-redaction.js.map +1 -1
- package/dist/src/credential-store.d.ts +20 -1
- package/dist/src/credential-store.d.ts.map +1 -1
- package/dist/src/credential-store.js +29 -4
- package/dist/src/credential-store.js.map +1 -1
- package/dist/src/custom-agent-registry.d.ts.map +1 -1
- package/dist/src/custom-agent-registry.js +2 -1
- package/dist/src/custom-agent-registry.js.map +1 -1
- package/dist/src/discovery/adapters/generic.d.ts.map +1 -1
- package/dist/src/discovery/adapters/generic.js +160 -2
- package/dist/src/discovery/adapters/generic.js.map +1 -1
- package/dist/src/discovery/engine.d.ts +7 -1
- package/dist/src/discovery/engine.d.ts.map +1 -1
- package/dist/src/discovery/engine.js +21 -16
- package/dist/src/discovery/engine.js.map +1 -1
- package/dist/src/discovery/known-agent.d.ts +7 -0
- package/dist/src/discovery/known-agent.d.ts.map +1 -1
- package/dist/src/discovery/known-agent.js +9 -4
- package/dist/src/discovery/known-agent.js.map +1 -1
- package/dist/src/discovery/system-evidence.d.ts +40 -1
- package/dist/src/discovery/system-evidence.d.ts.map +1 -1
- package/dist/src/discovery/system-evidence.js +189 -16
- package/dist/src/discovery/system-evidence.js.map +1 -1
- package/dist/src/doctor-check.d.ts +51 -0
- package/dist/src/doctor-check.d.ts.map +1 -0
- package/dist/src/doctor-check.js +174 -0
- package/dist/src/doctor-check.js.map +1 -0
- package/dist/src/enroll.d.ts +86 -0
- package/dist/src/enroll.d.ts.map +1 -0
- package/dist/src/enroll.js +245 -0
- package/dist/src/enroll.js.map +1 -0
- package/dist/src/entry.d.ts +3 -0
- package/dist/src/entry.d.ts.map +1 -0
- package/dist/src/entry.js +14 -0
- package/dist/src/entry.js.map +1 -0
- package/dist/src/event-queue.d.ts +13 -1
- package/dist/src/event-queue.d.ts.map +1 -1
- package/dist/src/event-queue.js +137 -42
- package/dist/src/event-queue.js.map +1 -1
- package/dist/src/event-spool.d.ts +61 -3
- package/dist/src/event-spool.d.ts.map +1 -1
- package/dist/src/event-spool.js +341 -44
- package/dist/src/event-spool.js.map +1 -1
- package/dist/src/generated/phigon/v1/identity_pb.d.ts +7 -0
- package/dist/src/generated/phigon/v1/identity_pb.d.ts.map +1 -1
- package/dist/src/generated/phigon/v1/identity_pb.js +1 -1
- package/dist/src/generated/phigon/v1/identity_pb.js.map +1 -1
- package/dist/src/guardian-containment.d.ts +2 -6
- package/dist/src/guardian-containment.d.ts.map +1 -1
- package/dist/src/guardian-containment.js +12 -63
- package/dist/src/guardian-containment.js.map +1 -1
- package/dist/src/guardian-decision-journal.d.ts.map +1 -1
- package/dist/src/guardian-decision-journal.js +4 -19
- package/dist/src/guardian-decision-journal.js.map +1 -1
- package/dist/src/guardian-managed-exec.d.ts.map +1 -1
- package/dist/src/guardian-managed-exec.js +6 -18
- package/dist/src/guardian-managed-exec.js.map +1 -1
- package/dist/src/guardian-model-bridge.d.ts.map +1 -1
- package/dist/src/guardian-model-bridge.js +2 -1
- package/dist/src/guardian-model-bridge.js.map +1 -1
- package/dist/src/guardian-native.d.ts +0 -1
- package/dist/src/guardian-native.d.ts.map +1 -1
- package/dist/src/guardian-native.js +0 -6
- package/dist/src/guardian-native.js.map +1 -1
- package/dist/src/guardian-process-monitor.d.ts +4 -0
- package/dist/src/guardian-process-monitor.d.ts.map +1 -1
- package/dist/src/guardian-process-monitor.js +82 -26
- package/dist/src/guardian-process-monitor.js.map +1 -1
- package/dist/src/health.d.ts +19 -1
- package/dist/src/health.d.ts.map +1 -1
- package/dist/src/health.js +22 -1
- package/dist/src/health.js.map +1 -1
- package/dist/src/historical-identity-store.d.ts +8 -1
- package/dist/src/historical-identity-store.d.ts.map +1 -1
- package/dist/src/historical-identity-store.js +28 -10
- package/dist/src/historical-identity-store.js.map +1 -1
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/installation.d.ts +2 -0
- package/dist/src/installation.d.ts.map +1 -1
- package/dist/src/installation.js +6 -3
- package/dist/src/installation.js.map +1 -1
- package/dist/src/instance-lock.d.ts +45 -0
- package/dist/src/instance-lock.d.ts.map +1 -0
- package/dist/src/instance-lock.js +243 -0
- package/dist/src/instance-lock.js.map +1 -0
- package/dist/src/machine-command-executor.d.ts +22 -7
- package/dist/src/machine-command-executor.d.ts.map +1 -1
- package/dist/src/machine-command-executor.js +80 -19
- package/dist/src/machine-command-executor.js.map +1 -1
- package/dist/src/node-version.d.ts +8 -0
- package/dist/src/node-version.d.ts.map +1 -0
- package/dist/src/node-version.js +17 -0
- package/dist/src/node-version.js.map +1 -0
- package/dist/src/observer-log.d.ts +50 -0
- package/dist/src/observer-log.d.ts.map +1 -0
- package/dist/src/observer-log.js +141 -0
- package/dist/src/observer-log.js.map +1 -0
- package/dist/src/pair.d.ts +68 -1
- package/dist/src/pair.d.ts.map +1 -1
- package/dist/src/pair.js +204 -65
- package/dist/src/pair.js.map +1 -1
- package/dist/src/private-directory.d.ts +10 -0
- package/dist/src/private-directory.d.ts.map +1 -0
- package/dist/src/private-directory.js +66 -0
- package/dist/src/private-directory.js.map +1 -0
- package/dist/src/process-tree.d.ts +73 -0
- package/dist/src/process-tree.d.ts.map +1 -0
- package/dist/src/process-tree.js +256 -0
- package/dist/src/process-tree.js.map +1 -0
- package/dist/src/proxy.d.ts +68 -0
- package/dist/src/proxy.d.ts.map +1 -0
- package/dist/src/proxy.js +209 -0
- package/dist/src/proxy.js.map +1 -0
- package/dist/src/purge.d.ts +17 -0
- package/dist/src/purge.d.ts.map +1 -0
- package/dist/src/purge.js +84 -0
- package/dist/src/purge.js.map +1 -0
- package/dist/src/remove-machine.d.ts +5 -1
- package/dist/src/remove-machine.d.ts.map +1 -1
- package/dist/src/remove-machine.js +28 -14
- package/dist/src/remove-machine.js.map +1 -1
- package/dist/src/server-authority.d.ts +29 -0
- package/dist/src/server-authority.d.ts.map +1 -0
- package/dist/src/server-authority.js +106 -0
- package/dist/src/server-authority.js.map +1 -0
- package/dist/src/server-clock.d.ts +32 -0
- package/dist/src/server-clock.d.ts.map +1 -0
- package/dist/src/server-clock.js +72 -0
- package/dist/src/server-clock.js.map +1 -0
- package/dist/src/service-command.d.ts +20 -0
- package/dist/src/service-command.d.ts.map +1 -0
- package/dist/src/service-command.js +136 -0
- package/dist/src/service-command.js.map +1 -0
- package/dist/src/service.d.ts +98 -0
- package/dist/src/service.d.ts.map +1 -0
- package/dist/src/service.js +472 -0
- package/dist/src/service.js.map +1 -0
- package/dist/src/stream-client.d.ts +21 -1
- package/dist/src/stream-client.d.ts.map +1 -1
- package/dist/src/stream-client.js +137 -24
- package/dist/src/stream-client.js.map +1 -1
- package/dist/src/stream-state.d.ts +2 -0
- package/dist/src/stream-state.d.ts.map +1 -1
- package/dist/src/stream-state.js +5 -2
- package/dist/src/stream-state.js.map +1 -1
- package/dist/src/system-inspection.d.ts +78 -0
- package/dist/src/system-inspection.d.ts.map +1 -0
- package/dist/src/system-inspection.js +281 -0
- package/dist/src/system-inspection.js.map +1 -0
- package/dist/src/update.d.ts.map +1 -1
- package/dist/src/update.js +9 -3
- package/dist/src/update.js.map +1 -1
- package/dist/src/user-notices.d.ts +64 -0
- package/dist/src/user-notices.d.ts.map +1 -0
- package/dist/src/user-notices.js +141 -0
- package/dist/src/user-notices.js.map +1 -0
- package/package.json +7 -7
- package/dist/src/windows-process.d.ts +0 -7
- package/dist/src/windows-process.d.ts.map +0 -1
- package/dist/src/windows-process.js +0 -18
- package/dist/src/windows-process.js.map +0 -1
package/dist/src/config.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { homedir } from "node:os";
|
|
2
|
-
import { join } from "node:path";
|
|
2
|
+
import { isAbsolute, join } from "node:path";
|
|
3
3
|
export const DEFAULT_CONTROL_PLANE_ORIGIN = "https://api.phigon.online";
|
|
4
4
|
const defaultPolicy = Object.freeze({
|
|
5
5
|
promptContent: false,
|
|
@@ -72,7 +72,6 @@ export function loadConfig(environment = process.env) {
|
|
|
72
72
|
}
|
|
73
73
|
const activityMaxInFlightEvents = parseBoundedPositiveInteger(environment["PHIGON_ACTIVITY_MAX_IN_FLIGHT_EVENTS"] ?? "64", "PHIGON_ACTIVITY_MAX_IN_FLIGHT_EVENTS", 1, 256);
|
|
74
74
|
const observabilityProfile = parseObservabilityProfile(environment["PHIGON_OBSERVABILITY_PROFILE"] ?? "metadata");
|
|
75
|
-
const profilePolicy = observabilityProfile === "full" ? fullPolicy : defaultPolicy;
|
|
76
75
|
const logLevel = parseLogLevel(environment["PHIGON_LOG_LEVEL"] ?? "info");
|
|
77
76
|
const machineTokenConfigured = (environment["PHIGON_MACHINE_TOKEN"]?.trim().length ?? 0) > 0;
|
|
78
77
|
const tlsClientCertFile = environment["PHIGON_TLS_CLIENT_CERT_FILE"]?.trim() || undefined;
|
|
@@ -81,12 +80,12 @@ export function loadConfig(environment = process.env) {
|
|
|
81
80
|
(tlsClientKeyFile === undefined)) {
|
|
82
81
|
throw new Error("PHIGON_TLS_CLIENT_CERT_FILE and PHIGON_TLS_CLIENT_KEY_FILE must be configured together.");
|
|
83
82
|
}
|
|
83
|
+
const collection = collectionPolicy(environment, observabilityProfile);
|
|
84
84
|
return Object.freeze({
|
|
85
85
|
controlPlaneUrl,
|
|
86
86
|
grpcUrl,
|
|
87
87
|
grpcEndpointConfigured: Boolean(environment["PHIGON_GRPC_URL"]?.trim()),
|
|
88
|
-
dataDirectory: environment
|
|
89
|
-
join(homedir(), ".phigon", "observer"),
|
|
88
|
+
dataDirectory: dataDirectoryFrom(environment),
|
|
90
89
|
heartbeatIntervalMs,
|
|
91
90
|
discoveryIntervalMs,
|
|
92
91
|
activityScanIntervalMs,
|
|
@@ -114,6 +113,27 @@ export function loadConfig(environment = process.env) {
|
|
|
114
113
|
]),
|
|
115
114
|
copilot: parseDirectoryList(environment["PHIGON_COPILOT_ACTIVITY_DIRS"], [join(homedir(), ".copilot", "session-state")]),
|
|
116
115
|
opencode: parseDirectoryList(environment["PHIGON_OPENCODE_ACTIVITY_DIRS"], [join(homedir(), ".local", "share", "opencode")]),
|
|
116
|
+
gemini: parseDirectoryList(environment["PHIGON_GEMINI_ACTIVITY_DIRS"], [join(homedir(), ".gemini", "tmp")]),
|
|
117
|
+
cline: parseDirectoryList(environment["PHIGON_CLINE_ACTIVITY_DIRS"], [join(homedir(), ".cline", "data", "sessions")]),
|
|
118
|
+
goose: parseDirectoryList(environment["PHIGON_GOOSE_ACTIVITY_DIRS"], gooseSessionDirectories(environment)),
|
|
119
|
+
cursor: parseDirectoryList(environment["PHIGON_CURSOR_ACTIVITY_DIRS"], [join(homedir(), ".cursor", "projects")]),
|
|
120
|
+
copilotChat: parseDirectoryList(environment["PHIGON_COPILOT_CHAT_ACTIVITY_DIRS"], ["Code", "Code - Insiders"].flatMap((product) => {
|
|
121
|
+
const user = editorUserDirectory(environment, product);
|
|
122
|
+
return [
|
|
123
|
+
join(user, "workspaceStorage"),
|
|
124
|
+
join(user, "globalStorage", "emptyWindowChatSessions"),
|
|
125
|
+
];
|
|
126
|
+
})),
|
|
127
|
+
kiro: parseDirectoryList(environment["PHIGON_KIRO_ACTIVITY_DIRS"], [join(editorUserDirectory(environment, "Kiro"), "globalStorage", "kiro.kiroagent", "workspace-sessions")]),
|
|
128
|
+
zed: parseDirectoryList(environment["PHIGON_ZED_ACTIVITY_DIRS"], zedThreadDirectories(environment)),
|
|
129
|
+
droid: parseDirectoryList(environment["PHIGON_DROID_ACTIVITY_DIRS"], [join(homedir(), ".factory", "sessions")]),
|
|
130
|
+
clineTasks: parseDirectoryList(environment["PHIGON_CLINE_TASKS_ACTIVITY_DIRS"], [
|
|
131
|
+
...extensionTaskDirectories(environment, "saoudrizwan.claude-dev"),
|
|
132
|
+
// The Cline CLI and JetBrains plugin before their session format.
|
|
133
|
+
join(homedir(), ".cline", "data", "tasks"),
|
|
134
|
+
]),
|
|
135
|
+
rooCode: parseDirectoryList(environment["PHIGON_ROO_CODE_ACTIVITY_DIRS"], extensionTaskDirectories(environment, "rooveterinaryinc.roo-cline")),
|
|
136
|
+
kiloCode: parseDirectoryList(environment["PHIGON_KILO_CODE_ACTIVITY_DIRS"], extensionTaskDirectories(environment, "kilocode.kilo-code")),
|
|
117
137
|
generic: parseDirectoryList(environment["PHIGON_GENERIC_ACTIVITY_DIRS"], [join(homedir(), ".phigon", "agent-events")]),
|
|
118
138
|
}),
|
|
119
139
|
logLevel,
|
|
@@ -121,40 +141,20 @@ export function loadConfig(environment = process.env) {
|
|
|
121
141
|
machineTokenConfigured,
|
|
122
142
|
remoteActionsEnabled: parseBoolean(environment["PHIGON_REMOTE_ACTIONS_ENABLED"] ?? "false", "PHIGON_REMOTE_ACTIONS_ENABLED"),
|
|
123
143
|
remoteCommandsEnabled: parseBoolean(environment["PHIGON_REMOTE_COMMANDS_ENABLED"] ?? "false", "PHIGON_REMOTE_COMMANDS_ENABLED"),
|
|
144
|
+
userNotices: parseBoolean(environment["PHIGON_USER_NOTICES"] ?? "true", "PHIGON_USER_NOTICES"),
|
|
124
145
|
guardianDecisionTimeoutMs: parseBoundedPositiveInteger(environment["PHIGON_GUARDIAN_DECISION_TIMEOUT_MS"] ?? "65000", "PHIGON_GUARDIAN_DECISION_TIMEOUT_MS", 250, 125_000),
|
|
125
146
|
tlsCaFile: environment["PHIGON_TLS_CA_FILE"]?.trim() || undefined,
|
|
126
147
|
tlsClientCertFile,
|
|
127
148
|
tlsClientKeyFile,
|
|
128
|
-
policy:
|
|
129
|
-
|
|
130
|
-
promptContent: policyFlag(environment, "PROMPT_CONTENT", profilePolicy.promptContent),
|
|
131
|
-
responseContent: policyFlag(environment, "RESPONSE_CONTENT", profilePolicy.responseContent),
|
|
132
|
-
reasoningContent: policyFlag(environment, "REASONING_CONTENT", profilePolicy.reasoningContent),
|
|
133
|
-
commandArguments: policyFlag(environment, "COMMAND_ARGUMENTS", profilePolicy.commandArguments),
|
|
134
|
-
terminalOutput: policyFlag(environment, "TERMINAL_OUTPUT", profilePolicy.terminalOutput),
|
|
135
|
-
filePaths: policyFlag(environment, "FILE_PATHS", profilePolicy.filePaths),
|
|
136
|
-
fileContent: policyFlag(environment, "FILE_CONTENT", profilePolicy.fileContent),
|
|
137
|
-
browserUrls: policyFlag(environment, "BROWSER_URLS", profilePolicy.browserUrls),
|
|
138
|
-
browserContent: policyFlag(environment, "BROWSER_CONTENT", profilePolicy.browserContent),
|
|
139
|
-
networkEndpoints: policyFlag(environment, "NETWORK_ENDPOINTS", profilePolicy.networkEndpoints),
|
|
140
|
-
gitPatchContent: policyFlag(environment, "GIT_PATCH_CONTENT", profilePolicy.gitPatchContent),
|
|
141
|
-
environmentValues: policyFlag(environment, "ENVIRONMENT_VALUES", profilePolicy.environmentValues),
|
|
142
|
-
toolOutput: policyFlag(environment, "TOOL_OUTPUT", profilePolicy.toolOutput),
|
|
143
|
-
vendorPayload: policyFlag(environment, "VENDOR_PAYLOAD", profilePolicy.vendorPayload),
|
|
144
|
-
processMetadata: policyFlag(environment, "PROCESS_METADATA", profilePolicy.processMetadata),
|
|
145
|
-
processArguments: policyFlag(environment, "PROCESS_ARGUMENTS", profilePolicy.processArguments),
|
|
146
|
-
fileMetadata: policyFlag(environment, "FILE_METADATA", profilePolicy.fileMetadata),
|
|
147
|
-
fileDiffs: policyFlag(environment, "FILE_DIFFS", profilePolicy.fileDiffs),
|
|
148
|
-
networkMetadata: policyFlag(environment, "NETWORK_METADATA", profilePolicy.networkMetadata),
|
|
149
|
-
networkContent: policyFlag(environment, "NETWORK_CONTENT", profilePolicy.networkContent),
|
|
150
|
-
browserMetadata: policyFlag(environment, "BROWSER_METADATA", profilePolicy.browserMetadata),
|
|
151
|
-
mcpArguments: policyFlag(environment, "MCP_ARGUMENTS", profilePolicy.mcpArguments),
|
|
152
|
-
mcpOutput: policyFlag(environment, "MCP_OUTPUT", profilePolicy.mcpOutput),
|
|
153
|
-
modelPrompts: policyFlag(environment, "MODEL_PROMPTS", profilePolicy.modelPrompts),
|
|
154
|
-
modelResponses: policyFlag(environment, "MODEL_RESPONSES", profilePolicy.modelResponses),
|
|
155
|
-
}),
|
|
149
|
+
policy: collection.policy,
|
|
150
|
+
contentSettingsOutsideProfile: collection.refused,
|
|
156
151
|
});
|
|
157
152
|
}
|
|
153
|
+
/** `PHIGON_DATA_DIR`, or ~/.phigon/observer when it is not set. */
|
|
154
|
+
export function dataDirectoryFrom(environment) {
|
|
155
|
+
return environment["PHIGON_DATA_DIR"]?.trim() ||
|
|
156
|
+
join(homedir(), ".phigon", "observer");
|
|
157
|
+
}
|
|
158
158
|
function parseControlPlaneUrl(value) {
|
|
159
159
|
return parseEndpointUrl(value, "PHIGON_CONTROL_PLANE_URL");
|
|
160
160
|
}
|
|
@@ -202,8 +202,85 @@ function parseBoundedPositiveInteger(value, name, minimum, maximum) {
|
|
|
202
202
|
}
|
|
203
203
|
return parsed;
|
|
204
204
|
}
|
|
205
|
-
|
|
206
|
-
|
|
205
|
+
/** The `PHIGON_COLLECT_*` setting that narrows or widens each category. */
|
|
206
|
+
export const COLLECTION_SETTINGS = Object.freeze({
|
|
207
|
+
promptContent: "PHIGON_COLLECT_PROMPT_CONTENT",
|
|
208
|
+
responseContent: "PHIGON_COLLECT_RESPONSE_CONTENT",
|
|
209
|
+
reasoningContent: "PHIGON_COLLECT_REASONING_CONTENT",
|
|
210
|
+
commandArguments: "PHIGON_COLLECT_COMMAND_ARGUMENTS",
|
|
211
|
+
terminalOutput: "PHIGON_COLLECT_TERMINAL_OUTPUT",
|
|
212
|
+
filePaths: "PHIGON_COLLECT_FILE_PATHS",
|
|
213
|
+
fileContent: "PHIGON_COLLECT_FILE_CONTENT",
|
|
214
|
+
browserUrls: "PHIGON_COLLECT_BROWSER_URLS",
|
|
215
|
+
browserContent: "PHIGON_COLLECT_BROWSER_CONTENT",
|
|
216
|
+
networkEndpoints: "PHIGON_COLLECT_NETWORK_ENDPOINTS",
|
|
217
|
+
gitPatchContent: "PHIGON_COLLECT_GIT_PATCH_CONTENT",
|
|
218
|
+
environmentValues: "PHIGON_COLLECT_ENVIRONMENT_VALUES",
|
|
219
|
+
toolOutput: "PHIGON_COLLECT_TOOL_OUTPUT",
|
|
220
|
+
vendorPayload: "PHIGON_COLLECT_VENDOR_PAYLOAD",
|
|
221
|
+
processMetadata: "PHIGON_COLLECT_PROCESS_METADATA",
|
|
222
|
+
processArguments: "PHIGON_COLLECT_PROCESS_ARGUMENTS",
|
|
223
|
+
fileMetadata: "PHIGON_COLLECT_FILE_METADATA",
|
|
224
|
+
fileDiffs: "PHIGON_COLLECT_FILE_DIFFS",
|
|
225
|
+
networkMetadata: "PHIGON_COLLECT_NETWORK_METADATA",
|
|
226
|
+
networkContent: "PHIGON_COLLECT_NETWORK_CONTENT",
|
|
227
|
+
browserMetadata: "PHIGON_COLLECT_BROWSER_METADATA",
|
|
228
|
+
mcpArguments: "PHIGON_COLLECT_MCP_ARGUMENTS",
|
|
229
|
+
mcpOutput: "PHIGON_COLLECT_MCP_OUTPUT",
|
|
230
|
+
modelPrompts: "PHIGON_COLLECT_MODEL_PROMPTS",
|
|
231
|
+
modelResponses: "PHIGON_COLLECT_MODEL_RESPONSES",
|
|
232
|
+
});
|
|
233
|
+
const collectionCategories = Object.freeze(Object.keys(COLLECTION_SETTINGS));
|
|
234
|
+
/**
|
|
235
|
+
* Categories that carry what people and agents wrote, ran or read: every
|
|
236
|
+
* category the metadata profile leaves off. They are collected only under
|
|
237
|
+
* the full profile on a computer whose owner consented to full activity.
|
|
238
|
+
*/
|
|
239
|
+
export const CONTENT_COLLECTION_CATEGORIES = Object.freeze(collectionCategories.filter((category) => !defaultPolicy[category]));
|
|
240
|
+
function collectionPolicy(environment, profile) {
|
|
241
|
+
const profilePolicy = profile === "full" ? fullPolicy : defaultPolicy;
|
|
242
|
+
const policy = Object.fromEntries(collectionCategories.map((category) => [
|
|
243
|
+
category,
|
|
244
|
+
parseBoolean(environment[COLLECTION_SETTINGS[category]] ??
|
|
245
|
+
String(profilePolicy[category]), COLLECTION_SETTINGS[category]),
|
|
246
|
+
]));
|
|
247
|
+
const refused = [];
|
|
248
|
+
if (profile !== "full") {
|
|
249
|
+
// A COLLECT setting can only narrow the metadata profile; content
|
|
250
|
+
// needs the full profile, which `run` accepts only with full consent.
|
|
251
|
+
for (const category of CONTENT_COLLECTION_CATEGORIES) {
|
|
252
|
+
if (!policy[category])
|
|
253
|
+
continue;
|
|
254
|
+
policy[category] = false;
|
|
255
|
+
refused.push(COLLECTION_SETTINGS[category]);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
return Object.freeze({
|
|
259
|
+
policy: Object.freeze(policy),
|
|
260
|
+
refused: Object.freeze(refused),
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Explains why `run` refuses to start when a `PHIGON_COLLECT_*` setting
|
|
265
|
+
* turns on content outside the full activity profile. Names only settings.
|
|
266
|
+
*/
|
|
267
|
+
export function contentOutsideProfileMessage(settings) {
|
|
268
|
+
return `${settings.join(", ")} ${settings.length === 1 ? "turns" : "turn"} on content collection, which needs the full activity profile. ` +
|
|
269
|
+
"Run with --profile full on a computer whose owner consented to full activity, or remove the setting.";
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Keeps every content category off unless the machine owner consented to
|
|
273
|
+
* full activity. Applied wherever the effective policy is computed, so a
|
|
274
|
+
* local setting or a server policy can never widen what the owner agreed to.
|
|
275
|
+
*/
|
|
276
|
+
export function consentedCollectionPolicy(policy, consentProfile) {
|
|
277
|
+
if (consentProfile === "full")
|
|
278
|
+
return policy;
|
|
279
|
+
const restricted = { ...policy };
|
|
280
|
+
for (const category of CONTENT_COLLECTION_CATEGORIES) {
|
|
281
|
+
restricted[category] = false;
|
|
282
|
+
}
|
|
283
|
+
return Object.freeze(restricted);
|
|
207
284
|
}
|
|
208
285
|
function parseObservabilityProfile(value) {
|
|
209
286
|
const normalized = value.trim().toLowerCase();
|
|
@@ -220,9 +297,10 @@ function parseInitialReplayMode(value) {
|
|
|
220
297
|
throw new Error("PHIGON_ACTIVITY_INITIAL_REPLAY_MODE must be all or messages.");
|
|
221
298
|
}
|
|
222
299
|
function parseBoolean(value, name) {
|
|
223
|
-
|
|
300
|
+
const normalized = value.trim().toLowerCase();
|
|
301
|
+
if (normalized === "true" || normalized === "1")
|
|
224
302
|
return true;
|
|
225
|
-
if (
|
|
303
|
+
if (normalized === "false" || normalized === "0")
|
|
226
304
|
return false;
|
|
227
305
|
throw new Error(`${name} must be true or false.`);
|
|
228
306
|
}
|
|
@@ -236,6 +314,79 @@ function parseRedactionPathPatterns(value) {
|
|
|
236
314
|
}
|
|
237
315
|
return Object.freeze(patterns);
|
|
238
316
|
}
|
|
317
|
+
/**
|
|
318
|
+
* Goose keeps sessions.db in <data dir>/sessions. The data directory is
|
|
319
|
+
* $GOOSE_PATH_ROOT/data when that is an absolute path, otherwise the
|
|
320
|
+
* etcetera app strategy for author "Block" and app "goose": XDG on Linux
|
|
321
|
+
* and macOS, %APPDATA%/Block/goose/data on Windows.
|
|
322
|
+
*/
|
|
323
|
+
function gooseSessionDirectories(environment) {
|
|
324
|
+
const pathRoot = environment["GOOSE_PATH_ROOT"]?.trim();
|
|
325
|
+
if (pathRoot !== undefined && isAbsolute(pathRoot)) {
|
|
326
|
+
return [join(pathRoot, "data", "sessions")];
|
|
327
|
+
}
|
|
328
|
+
if (process.platform === "win32") {
|
|
329
|
+
const appData = environment["APPDATA"]?.trim() ||
|
|
330
|
+
join(homedir(), "AppData", "Roaming");
|
|
331
|
+
return [join(appData, "Block", "goose", "data", "sessions")];
|
|
332
|
+
}
|
|
333
|
+
const dataHome = environment["XDG_DATA_HOME"]?.trim();
|
|
334
|
+
return [join(dataHome !== undefined && isAbsolute(dataHome)
|
|
335
|
+
? dataHome
|
|
336
|
+
: join(homedir(), ".local", "share"), "goose", "sessions")];
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Zed keeps agent threads in <data dir>/threads/threads.db. The data
|
|
340
|
+
* directory is %LOCALAPPDATA%/Zed on Windows, ~/Library/Application
|
|
341
|
+
* Support/Zed on macOS, and $FLATPAK_XDG_DATA_HOME or $XDG_DATA_HOME (or
|
|
342
|
+
* ~/.local/share) with "zed" elsewhere. The Flatpak build's own data folder
|
|
343
|
+
* is included because Zed outside the sandbox does not see it.
|
|
344
|
+
*/
|
|
345
|
+
function zedThreadDirectories(environment) {
|
|
346
|
+
if (process.platform === "win32") {
|
|
347
|
+
const localAppData = environment["LOCALAPPDATA"]?.trim() ||
|
|
348
|
+
join(homedir(), "AppData", "Local");
|
|
349
|
+
return [join(localAppData, "Zed", "threads")];
|
|
350
|
+
}
|
|
351
|
+
if (process.platform === "darwin") {
|
|
352
|
+
return [join(homedir(), "Library", "Application Support", "Zed", "threads")];
|
|
353
|
+
}
|
|
354
|
+
const dataHome = [
|
|
355
|
+
environment["FLATPAK_XDG_DATA_HOME"]?.trim(),
|
|
356
|
+
environment["XDG_DATA_HOME"]?.trim(),
|
|
357
|
+
].find((value) => value !== undefined && isAbsolute(value));
|
|
358
|
+
return [
|
|
359
|
+
join(dataHome ?? join(homedir(), ".local", "share"), "zed", "threads"),
|
|
360
|
+
join(homedir(), ".var", "app", "dev.zed.Zed", "data", "zed", "threads"),
|
|
361
|
+
];
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* The `User` folder of a VS Code-based editor: %APPDATA%/<product>/User on
|
|
365
|
+
* Windows, ~/Library/Application Support/<product>/User on macOS, and
|
|
366
|
+
* $XDG_CONFIG_HOME (or ~/.config)/<product>/User elsewhere.
|
|
367
|
+
*/
|
|
368
|
+
/**
|
|
369
|
+
* The task folders of a VS Code extension (Cline and its forks keep
|
|
370
|
+
* `tasks/<task id>/ui_messages.json` in the extension's global storage) in
|
|
371
|
+
* every VS Code-based editor it can be installed in.
|
|
372
|
+
*/
|
|
373
|
+
function extensionTaskDirectories(environment, extension) {
|
|
374
|
+
return ["Code", "Code - Insiders", "VSCodium", "Cursor", "Windsurf", "Trae", "Kiro"].map((product) => join(editorUserDirectory(environment, product), "globalStorage", extension, "tasks"));
|
|
375
|
+
}
|
|
376
|
+
function editorUserDirectory(environment, product) {
|
|
377
|
+
if (process.platform === "win32") {
|
|
378
|
+
const appData = environment["APPDATA"]?.trim() ||
|
|
379
|
+
join(homedir(), "AppData", "Roaming");
|
|
380
|
+
return join(appData, product, "User");
|
|
381
|
+
}
|
|
382
|
+
if (process.platform === "darwin") {
|
|
383
|
+
return join(homedir(), "Library", "Application Support", product, "User");
|
|
384
|
+
}
|
|
385
|
+
const configHome = environment["XDG_CONFIG_HOME"]?.trim();
|
|
386
|
+
return join(configHome !== undefined && isAbsolute(configHome)
|
|
387
|
+
? configHome
|
|
388
|
+
: join(homedir(), ".config"), product, "User");
|
|
389
|
+
}
|
|
239
390
|
function parseDirectoryList(value, fallback) {
|
|
240
391
|
if (value === undefined || value.trim() === "") {
|
|
241
392
|
return Object.freeze([...fallback]);
|
package/dist/src/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection-config.d.ts","sourceRoot":"","sources":["../../src/connection-config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"connection-config.d.ts","sourceRoot":"","sources":["../../src/connection-config.ts"],"names":[],"mappings":"AAIA,mFAAmF;AACnF,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,CAAC,UAAU,EAC9B,KAAK,GAAE,SAAS,MAAM,EAAO,GAC5B,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAkB5B"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { loadConfig } from "./config.js";
|
|
2
2
|
import { FileCredentialStore } from "./credential-store.js";
|
|
3
|
+
import { trustSavedAuthority } from "./server-authority.js";
|
|
3
4
|
/** Restore paired endpoints so a new terminal/service cannot switch workspaces. */
|
|
4
5
|
export async function connectionEnvironment(environment, flags = []) {
|
|
5
6
|
const result = { ...environment };
|
|
@@ -13,6 +14,10 @@ export async function connectionEnvironment(environment, flags = []) {
|
|
|
13
14
|
result[name] = value;
|
|
14
15
|
}
|
|
15
16
|
const initial = loadConfig(result);
|
|
17
|
+
// A company's own server: trust the authority pinned when this computer paired.
|
|
18
|
+
const authority = trustSavedAuthority(initial.dataDirectory);
|
|
19
|
+
if (authority !== undefined)
|
|
20
|
+
result["PHIGON_TLS_CA_FILE"] ||= authority;
|
|
16
21
|
const credential = await new FileCredentialStore(initial.dataDirectory).load();
|
|
17
22
|
if (!credential)
|
|
18
23
|
return result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection-config.js","sourceRoot":"","sources":["../../src/connection-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,mFAAmF;AACnF,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,WAA8B,EAC9B,QAA2B,EAAE;IAE7B,MAAM,MAAM,GAAG,EAAE,GAAG,WAAW,EAAE,CAAC;IAClC,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,qBAAqB,EAAE,0BAA0B,CAAC,EAAE,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAU,EAAE,CAAC;QAC7H,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,KAAK,GAAG,CAAC;YAAE,SAAS;QACxB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,4BAA4B,CAAC,CAAC;QAC3F,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;IACvB,CAAC;IACD,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACnC,MAAM,UAAU,GAAG,MAAM,IAAI,mBAAmB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/E,IAAI,CAAC,UAAU;QAAE,OAAO,MAAM,CAAC;IAC/B,MAAM,CAAC,0BAA0B,CAAC,KAAK,UAAU,CAAC,kBAAkB,CAAC;IACrE,IAAI,UAAU,CAAC,UAAU;QAAE,MAAM,CAAC,iBAAiB,CAAC,KAAK,UAAU,CAAC,UAAU,CAAC;IAC/E,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
1
|
+
{"version":3,"file":"connection-config.js","sourceRoot":"","sources":["../../src/connection-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,mFAAmF;AACnF,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,WAA8B,EAC9B,QAA2B,EAAE;IAE7B,MAAM,MAAM,GAAG,EAAE,GAAG,WAAW,EAAE,CAAC;IAClC,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,qBAAqB,EAAE,0BAA0B,CAAC,EAAE,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAU,EAAE,CAAC;QAC7H,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,KAAK,GAAG,CAAC;YAAE,SAAS;QACxB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,4BAA4B,CAAC,CAAC;QAC3F,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;IACvB,CAAC;IACD,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACnC,gFAAgF;IAChF,MAAM,SAAS,GAAG,mBAAmB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC7D,IAAI,SAAS,KAAK,SAAS;QAAE,MAAM,CAAC,oBAAoB,CAAC,KAAK,SAAS,CAAC;IACxE,MAAM,UAAU,GAAG,MAAM,IAAI,mBAAmB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/E,IAAI,CAAC,UAAU;QAAE,OAAO,MAAM,CAAC;IAC/B,MAAM,CAAC,0BAA0B,CAAC,KAAK,UAAU,CAAC,kBAAkB,CAAC;IACrE,IAAI,UAAU,CAAC,UAAU;QAAE,MAAM,CAAC,iBAAiB,CAAC,KAAK,UAAU,CAAC,UAAU,CAAC;IAC/E,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1,3 +1,19 @@
|
|
|
1
|
-
/** Pure redaction shared by collection and
|
|
1
|
+
/** Pure redaction shared by collection, model egress and command output. Run before truncation. */
|
|
2
2
|
export declare function redactSecrets(value: string, marker?: string): string;
|
|
3
|
+
/**
|
|
4
|
+
* Names whose values are credentials, in environment variables and in
|
|
5
|
+
* NAME=value text. A name ending in "key", "pass" or "pwd" counts after a
|
|
6
|
+
* separator or a credential word only, so names such as monkey, cacheKey,
|
|
7
|
+
* PWD and primary_key, and token counts such as max_tokens, stay readable.
|
|
8
|
+
*/
|
|
9
|
+
export declare function credentialName(name: string): boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Names whose values may be credentials, judged broadly: which variables a
|
|
12
|
+
* remote command may inherit from the observer's environment, and which
|
|
13
|
+
* environment values are masked in its output. A command that misses a
|
|
14
|
+
* variable costs little; one that receives a secret can print it, so this
|
|
15
|
+
* keeps every name the narrower credentialName lets through, such as
|
|
16
|
+
* STRIPEKEY, MY_TOKEN_VALUE or AZURE_CREDENTIAL_FILE.
|
|
17
|
+
*/
|
|
18
|
+
export declare function credentialEnvironmentName(name: string): boolean;
|
|
3
19
|
//# sourceMappingURL=content-redaction.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-redaction.d.ts","sourceRoot":"","sources":["../../src/content-redaction.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"content-redaction.d.ts","sourceRoot":"","sources":["../../src/content-redaction.ts"],"names":[],"mappings":"AAAA,mGAAmG;AACnG,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,SAAsB,GAAG,MAAM,CAwBjF;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGpD;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAI/D"}
|
|
@@ -1,12 +1,60 @@
|
|
|
1
|
-
/** Pure redaction shared by collection and
|
|
1
|
+
/** Pure redaction shared by collection, model egress and command output. Run before truncation. */
|
|
2
2
|
export function redactSecrets(value, marker = "[REDACTED_SECRET]") {
|
|
3
3
|
return value
|
|
4
4
|
.replace(/\x1b\[[0-?]*[ -/]*[@-~]/gu, "")
|
|
5
5
|
// An unterminated block is sensitive through the end, including bounded
|
|
6
6
|
// command captures that stopped halfway through a private key.
|
|
7
7
|
.replace(/-----BEGIN (?:[A-Z0-9 ]*PRIVATE KEY|PGP PRIVATE KEY BLOCK)-----[\s\S]*?(?:-----END (?:[A-Z0-9 ]*PRIVATE KEY|PGP PRIVATE KEY BLOCK)-----|$)/gu, marker)
|
|
8
|
-
.replace(/\b(?:sk-[A-Za-z0-9_-]+|gh[pousr]_[A-Za-z0-9]+|github_pat_[A-Za-z0-9_]+|AKIA[0-9A-Z]
|
|
8
|
+
.replace(/\b(?:sk-[A-Za-z0-9_-]+|sk_(?:live|test)_[A-Za-z0-9]+|phg_m_[A-Za-z0-9_-]+|gh[pousr]_[A-Za-z0-9]+|github_pat_[A-Za-z0-9_]+|AKIA[0-9A-Z]+|xox[abeoprs]-[A-Za-z0-9-]+|AIza[0-9A-Za-z_-]{35}|npm_[A-Za-z0-9]{20,})\b/gu, marker)
|
|
9
|
+
.replace(tokenFormats, marker)
|
|
10
|
+
.replace(/\beyJ[A-Za-z0-9_-]+\.eyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]*/gu, marker)
|
|
11
|
+
// Bounded scheme length: an open-ended one made long dotted runs quadratic.
|
|
12
|
+
// The user may be empty, as in redis://:password@host.
|
|
13
|
+
.replace(/(\b[a-z][a-z0-9+.-]{0,31}:\/\/)[^\s/:@]*:[^\s/@]+@/giu, `$1${marker}@`)
|
|
14
|
+
// Non-bearer schemes carry the credential after the scheme word.
|
|
15
|
+
.replace(/(\bauthorization["']?\s*[:=]\s*)(?:Basic|Digest|Token)\s+[^\s,}"']+/giu, `$1${marker}`)
|
|
9
16
|
.replace(/\b(Bearer\s+)[A-Za-z0-9._~+/=-]+/giu, `$1${marker}`)
|
|
10
|
-
|
|
17
|
+
// No leading "[\w-]*": matching from the keyword itself keeps names such as
|
|
18
|
+
// refresh_token covered without rescanning every word run (quadratic).
|
|
19
|
+
.replace(/(["']?(?:api[_-]?key|token|secret(?:[_-]access[_-]key)?|password|passwd|private[_-]?key|authorization)["']?\s*[:=]\s*)(?:"[^"\n]*(?:"|$)|'[^'\n]*(?:'|$)|[^,\s}]+)/gimu, `$1${marker}`)
|
|
20
|
+
// Any other NAME=value or "name": value whose name is a credential's.
|
|
21
|
+
// Short values such as ids and booleans stay readable.
|
|
22
|
+
.replace(assignment, (match, lead, quote, name, separator, item) => credentialName(name) && item.replace(/^["']|["']$/gu, "").length >= 6 && !item.includes("[REDACTED")
|
|
23
|
+
? `${lead}${quote}${name}${quote}${separator}${marker}`
|
|
24
|
+
: match);
|
|
11
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Names whose values are credentials, in environment variables and in
|
|
28
|
+
* NAME=value text. A name ending in "key", "pass" or "pwd" counts after a
|
|
29
|
+
* separator or a credential word only, so names such as monkey, cacheKey,
|
|
30
|
+
* PWD and primary_key, and token counts such as max_tokens, stay readable.
|
|
31
|
+
*/
|
|
32
|
+
export function credentialName(name) {
|
|
33
|
+
const lower = name.toLowerCase();
|
|
34
|
+
return credentialNamePattern.test(lower) && !keyNamePattern.test(lower);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Names whose values may be credentials, judged broadly: which variables a
|
|
38
|
+
* remote command may inherit from the observer's environment, and which
|
|
39
|
+
* environment values are masked in its output. A command that misses a
|
|
40
|
+
* variable costs little; one that receives a secret can print it, so this
|
|
41
|
+
* keeps every name the narrower credentialName lets through, such as
|
|
42
|
+
* STRIPEKEY, MY_TOKEN_VALUE or AZURE_CREDENTIAL_FILE.
|
|
43
|
+
*/
|
|
44
|
+
export function credentialEnvironmentName(name) {
|
|
45
|
+
const lower = name.toLowerCase();
|
|
46
|
+
if (lower === "key" || lower === "pwd" || lower === "oldpwd")
|
|
47
|
+
return false;
|
|
48
|
+
return credentialName(name) || broadCredentialNamePattern.test(lower);
|
|
49
|
+
}
|
|
50
|
+
const broadCredentialNamePattern = /token|secret|passw(?:or)?d|api[_-]?key|passphrase|credential|cookie|(?:key|pwd)$|(?:^|[_.-])auth$|dsn$|connection[_-]?string/u;
|
|
51
|
+
// Well-known credential formats with a fixed prefix. Phigon access keys are
|
|
52
|
+
// phg_<12 base32>_<32 base32>; license keys are phl_<payload>.<signature> in
|
|
53
|
+
// base64url; enrollment codes are phe_<32 base64url>; AWS temporary key IDs
|
|
54
|
+
// are ASIA and 16 more characters.
|
|
55
|
+
const tokenFormats = /\b(?:phg_[a-z2-7]{12}_[a-z2-7]{32}|phl_[A-Za-z0-9_-]{16,}\.[A-Za-z0-9_-]{43,}|phe_[A-Za-z0-9_-]{32,}|ASIA[0-9A-Z]{16}\b|GOCSPX-[A-Za-z0-9_-]{20,}|whsec_[A-Za-z0-9+/]{20,}={0,2}|https?:\/\/hooks\.slack\.com\/services\/[A-Za-z0-9_/-]+|glpat-[A-Za-z0-9_-]{20,}|xapp-[A-Za-z0-9-]{10,}|hf_[A-Za-z0-9]{30,}|ya29\.[A-Za-z0-9_-]{20,}|SG\.[A-Za-z0-9_-]{16,}\.[A-Za-z0-9_-]{16,}|rk_(?:live|test)_[A-Za-z0-9]{10,}|shp(?:at|ca|pa|ss)_[a-fA-F0-9]{32}|dop_v1_[a-f0-9]{64}|pypi-[A-Za-z0-9_-]{50,})/gu;
|
|
56
|
+
const credentialNamePattern = /passw(?:or)?d|passphrase|secret(?!s$)|token$|credentials?$|cookie$|api[_-]?key$|(?:access|account|private|signing|encryption|master|license|subscription|client)[_-]?key$|[_.-](?:key|pass|pwd)$|(?:^|[_.-])auth$|dsn$|connection[_-]?string/u;
|
|
57
|
+
// Keys that name or index something rather than unlock it.
|
|
58
|
+
const keyNamePattern = /(?:primary|foreign|sort|partition|cache|public|idempotency|unique|hash|range|row|object|composite)[_.-]?key$/u;
|
|
59
|
+
const assignment = /(^|[\s;,{(&?-])(["']?)([A-Za-z_][A-Za-z0-9_.-]{0,127})\2([ \t]*[:=][ \t]*)("[^"\n]*"|'[^'\n]*'|[^\s,;}&]+)/gmu;
|
|
12
60
|
//# sourceMappingURL=content-redaction.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-redaction.js","sourceRoot":"","sources":["../../src/content-redaction.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"content-redaction.js","sourceRoot":"","sources":["../../src/content-redaction.ts"],"names":[],"mappings":"AAAA,mGAAmG;AACnG,MAAM,UAAU,aAAa,CAAC,KAAa,EAAE,MAAM,GAAG,mBAAmB;IACvE,OAAO,KAAK;SACT,OAAO,CAAC,2BAA2B,EAAE,EAAE,CAAC;QACzC,wEAAwE;QACxE,+DAA+D;SAC9D,OAAO,CAAC,8IAA8I,EAAE,MAAM,CAAC;SAC/J,OAAO,CAAC,oNAAoN,EAAE,MAAM,CAAC;SACrO,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC;SAC7B,OAAO,CAAC,0DAA0D,EAAE,MAAM,CAAC;QAC5E,4EAA4E;QAC5E,uDAAuD;SACtD,OAAO,CAAC,uDAAuD,EAAE,KAAK,MAAM,GAAG,CAAC;QACjF,iEAAiE;SAChE,OAAO,CAAC,wEAAwE,EAAE,KAAK,MAAM,EAAE,CAAC;SAChG,OAAO,CAAC,qCAAqC,EAAE,KAAK,MAAM,EAAE,CAAC;QAC9D,4EAA4E;QAC5E,uEAAuE;SACtE,OAAO,CAAC,wKAAwK,EAAE,KAAK,MAAM,EAAE,CAAC;QACjM,sEAAsE;QACtE,uDAAuD;SACtD,OAAO,CAAC,UAAU,EAAE,CAAC,KAAa,EAAE,IAAY,EAAE,KAAa,EAAE,IAAY,EAAE,SAAiB,EAAE,IAAY,EAAE,EAAE,CACjH,cAAc,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;QAClG,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,SAAS,GAAG,MAAM,EAAE;QACvD,CAAC,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,OAAO,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1E,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,yBAAyB,CAAC,IAAY;IACpD,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC3E,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,0BAA0B,GAAG,+HAA+H,CAAC;AAEnK,4EAA4E;AAC5E,6EAA6E;AAC7E,4EAA4E;AAC5E,mCAAmC;AACnC,MAAM,YAAY,GAAG,seAAse,CAAC;AAC5f,MAAM,qBAAqB,GAAG,+OAA+O,CAAC;AAC9Q,2DAA2D;AAC3D,MAAM,cAAc,GAAG,+GAA+G,CAAC;AACvI,MAAM,UAAU,GAAG,+GAA+G,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { rename } from "node:fs/promises";
|
|
1
2
|
export type StoredMachineCredential = Readonly<{
|
|
2
3
|
machineId: string;
|
|
3
4
|
tenantId: string;
|
|
@@ -8,14 +9,32 @@ export type StoredMachineCredential = Readonly<{
|
|
|
8
9
|
consentProfile?: "metadata" | "full";
|
|
9
10
|
consentPolicyVersion?: string;
|
|
10
11
|
consentedAt?: string;
|
|
12
|
+
/**
|
|
13
|
+
* Who consented: the computer's owner at pairing, or the company with an
|
|
14
|
+
* enrollment code. Credentials saved before enrollment codes existed have
|
|
15
|
+
* none and are the owner's.
|
|
16
|
+
*/
|
|
17
|
+
consentSource?: ConsentSource;
|
|
18
|
+
/** The enrollment code the company consented with, by ID and label. */
|
|
19
|
+
enrollmentCodeId?: string;
|
|
20
|
+
enrollmentCodeLabel?: string;
|
|
11
21
|
}>;
|
|
22
|
+
export type ConsentSource = "owner" | "company";
|
|
23
|
+
/** Who consented for this computer; the owner unless the company did. */
|
|
24
|
+
export declare function consentSourceOf(credential: StoredMachineCredential): ConsentSource;
|
|
25
|
+
/** The longest enrollment code label kept, in characters. */
|
|
26
|
+
export declare const maxEnrollmentCodeLabelLength = 100;
|
|
12
27
|
export interface CredentialStore {
|
|
13
28
|
save(value: StoredMachineCredential): Promise<void>;
|
|
14
29
|
load(): Promise<StoredMachineCredential | null>;
|
|
15
30
|
}
|
|
31
|
+
/** The machine credential's file name in the data directory. */
|
|
32
|
+
export declare const credentialFileName = "machine-credential.json";
|
|
16
33
|
export declare class FileCredentialStore implements CredentialStore {
|
|
17
34
|
#private;
|
|
18
|
-
constructor(dataDirectory: string
|
|
35
|
+
constructor(dataDirectory: string, options?: Readonly<{
|
|
36
|
+
rename?: typeof rename;
|
|
37
|
+
}>);
|
|
19
38
|
save(value: StoredMachineCredential): Promise<void>;
|
|
20
39
|
load(): Promise<StoredMachineCredential | null>;
|
|
21
40
|
clear(): Promise<boolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credential-store.d.ts","sourceRoot":"","sources":["../../src/credential-store.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"credential-store.d.ts","sourceRoot":"","sources":["../../src/credential-store.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,MAAM,EAGP,MAAM,kBAAkB,CAAC;AAK1B,MAAM,MAAM,uBAAuB,GAAG,QAAQ,CAAC;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;IACrC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,SAAS,CAAC;AAEhD,yEAAyE;AACzE,wBAAgB,eAAe,CAAC,UAAU,EAAE,uBAAuB,GAAG,aAAa,CAElF;AAED,6DAA6D;AAC7D,eAAO,MAAM,4BAA4B,MAAM,CAAC;AAEhD,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,IAAI,IAAI,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAAC;CACjD;AAED,gEAAgE;AAChE,eAAO,MAAM,kBAAkB,4BAA4B,CAAC;AAE5D,qBAAa,mBAAoB,YAAW,eAAe;;gBAMvD,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE,QAAQ,CAAC;QAAE,MAAM,CAAC,EAAE,OAAO,MAAM,CAAA;KAAE,CAAM;IAO9C,IAAI,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBnD,IAAI,IAAI,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC;IAqB/C,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;CAWhC"}
|
|
@@ -1,21 +1,35 @@
|
|
|
1
|
+
import { makeDirectoryPrivate } from "./private-directory.js";
|
|
1
2
|
import { chmod, mkdir, readFile, rename, unlink, writeFile, } from "node:fs/promises";
|
|
2
3
|
import { randomUUID } from "node:crypto";
|
|
3
4
|
import { join } from "node:path";
|
|
5
|
+
import { atomicReplace } from "./atomic-replace.js";
|
|
6
|
+
/** Who consented for this computer; the owner unless the company did. */
|
|
7
|
+
export function consentSourceOf(credential) {
|
|
8
|
+
return credential.consentSource ?? "owner";
|
|
9
|
+
}
|
|
10
|
+
/** The longest enrollment code label kept, in characters. */
|
|
11
|
+
export const maxEnrollmentCodeLabelLength = 100;
|
|
12
|
+
/** The machine credential's file name in the data directory. */
|
|
13
|
+
export const credentialFileName = "machine-credential.json";
|
|
4
14
|
export class FileCredentialStore {
|
|
5
15
|
#dataDirectory;
|
|
6
16
|
#credentialPath;
|
|
7
|
-
|
|
17
|
+
#rename;
|
|
18
|
+
constructor(dataDirectory, options = {}) {
|
|
8
19
|
this.#dataDirectory = dataDirectory;
|
|
9
|
-
this.#credentialPath = join(dataDirectory,
|
|
20
|
+
this.#credentialPath = join(dataDirectory, credentialFileName);
|
|
21
|
+
this.#rename = options.rename ?? rename;
|
|
10
22
|
}
|
|
11
23
|
async save(value) {
|
|
12
24
|
validateCredential(value);
|
|
13
25
|
await mkdir(this.#dataDirectory, { recursive: true, mode: 0o700 });
|
|
14
|
-
await
|
|
26
|
+
await makeDirectoryPrivate(this.#dataDirectory);
|
|
15
27
|
const temporaryPath = `${this.#credentialPath}.${process.pid}.${randomUUID()}.tmp`;
|
|
16
28
|
try {
|
|
17
29
|
await writeFile(temporaryPath, `${JSON.stringify(value)}\n`, { encoding: "utf8", flag: "wx", mode: 0o600 });
|
|
18
|
-
|
|
30
|
+
// Windows refuses a rename while antivirus or an indexer holds the
|
|
31
|
+
// file open; atomicReplace waits briefly and tries again.
|
|
32
|
+
await atomicReplace(temporaryPath, this.#credentialPath, this.#rename);
|
|
19
33
|
await chmod(this.#credentialPath, 0o600);
|
|
20
34
|
}
|
|
21
35
|
catch (error) {
|
|
@@ -94,6 +108,17 @@ function validateCredential(value) {
|
|
|
94
108
|
typeof value.consentedAt !== "string")) {
|
|
95
109
|
throw new Error("Stored machine consent evidence is invalid.");
|
|
96
110
|
}
|
|
111
|
+
if (("consentSource" in value &&
|
|
112
|
+
(value.consentSource !== "owner" && value.consentSource !== "company")) ||
|
|
113
|
+
// The company's consent is recorded only with its profile.
|
|
114
|
+
("consentSource" in value && value.consentSource === "company" && !hasConsent) ||
|
|
115
|
+
("enrollmentCodeId" in value &&
|
|
116
|
+
(typeof value.enrollmentCodeId !== "string" || value.enrollmentCodeId.length > 64)) ||
|
|
117
|
+
("enrollmentCodeLabel" in value &&
|
|
118
|
+
(typeof value.enrollmentCodeLabel !== "string" ||
|
|
119
|
+
value.enrollmentCodeLabel.length > maxEnrollmentCodeLabelLength))) {
|
|
120
|
+
throw new Error("Stored machine consent evidence is invalid.");
|
|
121
|
+
}
|
|
97
122
|
}
|
|
98
123
|
function isNodeError(error) {
|
|
99
124
|
return error instanceof Error && "code" in error;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credential-store.js","sourceRoot":"","sources":["../../src/credential-store.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,KAAK,EACL,QAAQ,EACR,MAAM,EACN,MAAM,EACN,SAAS,GACV,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"credential-store.js","sourceRoot":"","sources":["../../src/credential-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom-agent-registry.d.ts","sourceRoot":"","sources":["../../src/custom-agent-registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"custom-agent-registry.d.ts","sourceRoot":"","sources":["../../src/custom-agent-registry.ts"],"names":[],"mappings":"AAkCA,MAAM,MAAM,uBAAuB,GAAG,QAAQ,CAAC;IAC7C,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CACjC,CAAC,CAAC;AAOH,qBAAa,mBAAmB;;gBAIlB,aAAa,EAAE,MAAM;IAK3B,IAAI,IAAI,OAAO,CAAC,SAAS,uBAAuB,EAAE,CAAC;IAqCnD,GAAG,CACP,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,uBAAuB,CAAC;IAiB7B,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,GAAG,SAAS,CAAC;CAkCvE;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,QAAQ,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,mBAAmB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC,CAAC,GACD,uBAAuB,CAUzB"}
|