@flowdesk/core 0.1.12 → 0.1.13
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/agent-profiles.js +0 -1
- package/dist/agent-registry.d.ts +43 -0
- package/dist/agent-registry.d.ts.map +1 -0
- package/dist/agent-registry.js +309 -0
- package/dist/agent-registry.js.map +1 -0
- package/dist/audit.js +0 -1
- package/dist/authority-promotion.js +0 -1
- package/dist/bootstrap-foundation.js +0 -1
- package/dist/chat-control-authority.js +0 -1
- package/dist/chat-hook-authority-probe.js +0 -1
- package/dist/chat-routing.js +0 -1
- package/dist/command-manifest.js +0 -1
- package/dist/config-policy.js +0 -1
- package/dist/connector-gateway.js +0 -1
- package/dist/connector-profile.js +0 -1
- package/dist/controlled-conformance-doc-write.js +0 -1
- package/dist/controlled-redacted-audit-export-write.js +0 -1
- package/dist/controlled-workspace-file-write.d.ts +36 -0
- package/dist/controlled-workspace-file-write.d.ts.map +1 -0
- package/dist/controlled-workspace-file-write.js +130 -0
- package/dist/controlled-workspace-file-write.js.map +1 -0
- package/dist/core-completion-safety-contracts.js +0 -1
- package/dist/dispatch-attempt-manifest.js +0 -1
- package/dist/dispatch-idempotency.js +0 -1
- package/dist/external-auth-policy.js +0 -1
- package/dist/fake-remote-connector-adapter.js +0 -1
- package/dist/fake-runtime.js +0 -1
- package/dist/fallback-decision.js +0 -1
- package/dist/fallback-regate-plan.js +0 -1
- package/dist/fds1-schema-probe-result.js +0 -1
- package/dist/guard-boundary.js +0 -1
- package/dist/guarded-dry-run.js +0 -1
- package/dist/hook-harness.js +0 -1
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/lane-heartbeat.js +0 -1
- package/dist/lane-lifecycle-record.js +0 -1
- package/dist/lane-observability.js +0 -1
- package/dist/lane-stall-projection.js +0 -1
- package/dist/managed-dispatch-evidence-shape.js +0 -1
- package/dist/model-availability-cache.js +0 -1
- package/dist/operational-intelligence.js +0 -1
- package/dist/pending-abort.js +0 -1
- package/dist/plan.js +0 -1
- package/dist/planning-evidence-common.d.ts +18 -0
- package/dist/planning-evidence-common.d.ts.map +1 -0
- package/dist/planning-evidence-common.js +95 -0
- package/dist/planning-evidence-common.js.map +1 -0
- package/dist/pre-dispatch-audit-record.js +0 -1
- package/dist/production-approval-source.js +0 -1
- package/dist/production-enablement.js +0 -1
- package/dist/production-verification.js +0 -1
- package/dist/provider-failures.js +0 -1
- package/dist/provider-usage-collector.d.ts.map +1 -1
- package/dist/provider-usage-collector.js +104 -10
- package/dist/provider-usage-collector.js.map +1 -1
- package/dist/redaction.js +0 -1
- package/dist/release1-contracts.js +0 -1
- package/dist/remote-write-connector-gate.js +0 -1
- package/dist/retry-plan.d.ts +20 -2
- package/dist/retry-plan.d.ts.map +1 -1
- package/dist/retry-plan.js +57 -3
- package/dist/retry-plan.js.map +1 -1
- package/dist/retry.js +0 -1
- package/dist/reviewer-lane-conformance.js +0 -1
- package/dist/runtime-lane-productization.js +0 -1
- package/dist/sanitized-auth-capture.js +0 -1
- package/dist/schema-artifacts.js +0 -1
- package/dist/schema-registry.d.ts.map +1 -1
- package/dist/schema-registry.js +5 -1
- package/dist/schema-registry.js.map +1 -1
- package/dist/session-evidence.d.ts.map +1 -1
- package/dist/session-evidence.js +32 -1
- package/dist/session-evidence.js.map +1 -1
- package/dist/state-paths.d.ts +1 -1
- package/dist/state-paths.d.ts.map +1 -1
- package/dist/state-paths.js +16 -0
- package/dist/state-paths.js.map +1 -1
- package/dist/state-store.js +0 -1
- package/dist/status.js +0 -1
- package/dist/task-agent-assignment.d.ts +30 -0
- package/dist/task-agent-assignment.d.ts.map +1 -0
- package/dist/task-agent-assignment.js +77 -0
- package/dist/task-agent-assignment.js.map +1 -0
- package/dist/task-graph.d.ts +31 -0
- package/dist/task-graph.d.ts.map +1 -0
- package/dist/task-graph.js +122 -0
- package/dist/task-graph.js.map +1 -0
- package/dist/task-model-selection.d.ts +36 -0
- package/dist/task-model-selection.d.ts.map +1 -0
- package/dist/task-model-selection.js +99 -0
- package/dist/task-model-selection.js.map +1 -0
- package/dist/task-result.js +0 -1
- package/dist/tool-contract-fixtures.js +0 -1
- package/dist/top-tier-reviewer-lane-probe.js +0 -1
- package/dist/usage-health.js +0 -1
- package/dist/validators.d.ts.map +1 -1
- package/dist/validators.js +10 -2
- package/dist/validators.js.map +1 -1
- package/dist/workflow-authoring-result.d.ts +25 -0
- package/dist/workflow-authoring-result.d.ts.map +1 -0
- package/dist/workflow-authoring-result.js +63 -0
- package/dist/workflow-authoring-result.js.map +1 -0
- package/dist/workflow-dispatch-plan.d.ts +65 -0
- package/dist/workflow-dispatch-plan.d.ts.map +1 -0
- package/dist/workflow-dispatch-plan.js +228 -0
- package/dist/workflow-dispatch-plan.js.map +1 -0
- package/dist/workflow-synthesis.d.ts +18 -0
- package/dist/workflow-synthesis.d.ts.map +1 -0
- package/dist/workflow-synthesis.js +40 -0
- package/dist/workflow-synthesis.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controlled-workspace-file-write.js","sourceRoot":"","sources":["../src/controlled-workspace-file-write.ts"],"names":[],"mappings":"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"}
|
|
@@ -95,4 +95,3 @@ export function validateFlowDeskFederatedRegistryStateV1(value) {
|
|
|
95
95
|
errors.push(...validateNoForbiddenRawPayloads(record, "federated_registry_state").errors);
|
|
96
96
|
return errors.length === 0 ? valid() : invalid(...errors);
|
|
97
97
|
}
|
|
98
|
-
//# sourceMappingURL=core-completion-safety-contracts.js.map
|
|
@@ -163,4 +163,3 @@ export function validateFlowDeskExternalAuthProviderPolicyResultV1(value, expect
|
|
|
163
163
|
errors.push(...validateNoForbiddenRawPayloads(value, "external_auth_provider_policy_result").errors);
|
|
164
164
|
return errors.length === 0 ? valid() : invalid(...errors);
|
|
165
165
|
}
|
|
166
|
-
//# sourceMappingURL=external-auth-policy.js.map
|
|
@@ -159,4 +159,3 @@ export function validateFlowDeskFakeRemoteConnectorWriteResultV1(value) {
|
|
|
159
159
|
errors.push(...validateNoForbiddenRawPayloads(record, "fake_remote_connector_write_result").errors);
|
|
160
160
|
return errors.length === 0 ? valid() : invalid(...errors);
|
|
161
161
|
}
|
|
162
|
-
//# sourceMappingURL=fake-remote-connector-adapter.js.map
|
package/dist/fake-runtime.js
CHANGED
|
@@ -119,4 +119,3 @@ export function validateFlowDeskFallbackRegatePlanV1(value) {
|
|
|
119
119
|
errors.push(...validateNoForbiddenRawPayloads(value, "fallback_regate_plan").errors);
|
|
120
120
|
return errors.length === 0 ? valid() : invalid(...errors);
|
|
121
121
|
}
|
|
122
|
-
//# sourceMappingURL=fallback-regate-plan.js.map
|
|
@@ -112,4 +112,3 @@ export function validateFlowDeskFds1SchemaProbeResultV1(value) {
|
|
|
112
112
|
errors.push(...validateNoForbiddenRawPayloads(record, "fds1_schema_probe_result").errors);
|
|
113
113
|
return errors.length === 0 ? valid() : invalid(...errors);
|
|
114
114
|
}
|
|
115
|
-
//# sourceMappingURL=fds1-schema-probe-result.js.map
|
package/dist/guard-boundary.js
CHANGED
|
@@ -217,4 +217,3 @@ export function evaluateManagedDispatchBetaGuardBoundaryV1(input) {
|
|
|
217
217
|
}
|
|
218
218
|
return boundaryDecision("eligible", "runtime", "Eligible for managed-dispatch beta only; evaluator does not perform dispatch.", checks);
|
|
219
219
|
}
|
|
220
|
-
//# sourceMappingURL=guard-boundary.js.map
|
package/dist/guarded-dry-run.js
CHANGED
package/dist/hook-harness.js
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -10,6 +10,7 @@ export declare const flowdeskNoRealDispatchBoundary: {
|
|
|
10
10
|
export declare function describeFlowDeskCoreScaffold(): string;
|
|
11
11
|
export declare function canUseRealDispatchInRelease1(): false;
|
|
12
12
|
export * from "./agent-profiles.js";
|
|
13
|
+
export * from "./agent-registry.js";
|
|
13
14
|
export * from "./audit.js";
|
|
14
15
|
export * from "./authority-promotion.js";
|
|
15
16
|
export * from "./bootstrap-foundation.js";
|
|
@@ -22,6 +23,7 @@ export * from "./config-policy.js";
|
|
|
22
23
|
export * from "./connector-profile.js";
|
|
23
24
|
export * from "./controlled-conformance-doc-write.js";
|
|
24
25
|
export * from "./controlled-redacted-audit-export-write.js";
|
|
26
|
+
export * from "./controlled-workspace-file-write.js";
|
|
25
27
|
export * from "./core-completion-safety-contracts.js";
|
|
26
28
|
export * from "./dispatch-attempt-manifest.js";
|
|
27
29
|
export * from "./dispatch-idempotency.js";
|
|
@@ -43,6 +45,7 @@ export * from "./managed-dispatch-evidence-shape.js";
|
|
|
43
45
|
export * from "./model-availability-cache.js";
|
|
44
46
|
export * from "./operational-intelligence.js";
|
|
45
47
|
export * from "./plan.js";
|
|
48
|
+
export * from "./planning-evidence-common.js";
|
|
46
49
|
export * from "./pre-dispatch-audit-record.js";
|
|
47
50
|
export * from "./production-approval-source.js";
|
|
48
51
|
export * from "./production-enablement.js";
|
|
@@ -63,9 +66,15 @@ export * from "./session-evidence.js";
|
|
|
63
66
|
export * from "./state-paths.js";
|
|
64
67
|
export * from "./state-store.js";
|
|
65
68
|
export * from "./status.js";
|
|
69
|
+
export * from "./task-agent-assignment.js";
|
|
70
|
+
export * from "./task-graph.js";
|
|
71
|
+
export * from "./task-model-selection.js";
|
|
66
72
|
export * from "./task-result.js";
|
|
67
73
|
export * from "./tool-contract-fixtures.js";
|
|
68
74
|
export * from "./top-tier-reviewer-lane-probe.js";
|
|
69
75
|
export * from "./usage-health.js";
|
|
70
76
|
export * from "./validators.js";
|
|
77
|
+
export * from "./workflow-dispatch-plan.js";
|
|
78
|
+
export * from "./workflow-authoring-result.js";
|
|
79
|
+
export * from "./workflow-synthesis.js";
|
|
71
80
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,EAAG,gBAAyB,CAAC;AAEjE,eAAO,MAAM,qBAAqB,sHAMxB,CAAC;AAEX,eAAO,MAAM,8BAA8B;;;;;;CAMjC,CAAC;AAEX,wBAAgB,4BAA4B,IAAI,MAAM,CAErD;AAED,wBAAgB,4BAA4B,IAAI,KAAK,CAEpD;AAED,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uCAAuC,CAAC;AACtD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,uCAAuC,CAAC;AACtD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,oCAAoC,CAAC;AACnD,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sCAAsC,CAAC;AACrD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,WAAW,CAAC;AAC1B,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,kCAAkC,CAAC;AACjD,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,EAAG,gBAAyB,CAAC;AAEjE,eAAO,MAAM,qBAAqB,sHAMxB,CAAC;AAEX,eAAO,MAAM,8BAA8B;;;;;;CAMjC,CAAC;AAEX,wBAAgB,4BAA4B,IAAI,MAAM,CAErD;AAED,wBAAgB,4BAA4B,IAAI,KAAK,CAEpD;AAED,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uCAAuC,CAAC;AACtD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,sCAAsC,CAAC;AACrD,cAAc,uCAAuC,CAAC;AACtD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,oCAAoC,CAAC;AACnD,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sCAAsC,CAAC;AACrD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,WAAW,CAAC;AAC1B,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,kCAAkC,CAAC;AACjD,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -20,6 +20,7 @@ export function canUseRealDispatchInRelease1() {
|
|
|
20
20
|
return false;
|
|
21
21
|
}
|
|
22
22
|
export * from "./agent-profiles.js";
|
|
23
|
+
export * from "./agent-registry.js";
|
|
23
24
|
export * from "./audit.js";
|
|
24
25
|
export * from "./authority-promotion.js";
|
|
25
26
|
export * from "./bootstrap-foundation.js";
|
|
@@ -32,6 +33,7 @@ export * from "./config-policy.js";
|
|
|
32
33
|
export * from "./connector-profile.js";
|
|
33
34
|
export * from "./controlled-conformance-doc-write.js";
|
|
34
35
|
export * from "./controlled-redacted-audit-export-write.js";
|
|
36
|
+
export * from "./controlled-workspace-file-write.js";
|
|
35
37
|
export * from "./core-completion-safety-contracts.js";
|
|
36
38
|
export * from "./dispatch-attempt-manifest.js";
|
|
37
39
|
export * from "./dispatch-idempotency.js";
|
|
@@ -53,6 +55,7 @@ export * from "./managed-dispatch-evidence-shape.js";
|
|
|
53
55
|
export * from "./model-availability-cache.js";
|
|
54
56
|
export * from "./operational-intelligence.js";
|
|
55
57
|
export * from "./plan.js";
|
|
58
|
+
export * from "./planning-evidence-common.js";
|
|
56
59
|
export * from "./pre-dispatch-audit-record.js";
|
|
57
60
|
export * from "./production-approval-source.js";
|
|
58
61
|
export * from "./production-enablement.js";
|
|
@@ -73,9 +76,15 @@ export * from "./session-evidence.js";
|
|
|
73
76
|
export * from "./state-paths.js";
|
|
74
77
|
export * from "./state-store.js";
|
|
75
78
|
export * from "./status.js";
|
|
79
|
+
export * from "./task-agent-assignment.js";
|
|
80
|
+
export * from "./task-graph.js";
|
|
81
|
+
export * from "./task-model-selection.js";
|
|
76
82
|
export * from "./task-result.js";
|
|
77
83
|
export * from "./tool-contract-fixtures.js";
|
|
78
84
|
export * from "./top-tier-reviewer-lane-probe.js";
|
|
79
85
|
export * from "./usage-health.js";
|
|
80
86
|
export * from "./validators.js";
|
|
87
|
+
export * from "./workflow-dispatch-plan.js";
|
|
88
|
+
export * from "./workflow-authoring-result.js";
|
|
89
|
+
export * from "./workflow-synthesis.js";
|
|
81
90
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,uBAAuB,GAAG,gBAAyB,CAAC;AAEjE,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACpC,kCAAkC;IAClC,SAAS;IACT,cAAc;IACd,sBAAsB;IACtB,kBAAkB;CACT,CAAC;AAEX,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC7C,WAAW,EAAE,0BAA0B;IACvC,oBAAoB,EAAE,UAAU;IAChC,qBAAqB,EAAE,UAAU;IACjC,uBAAuB,EAAE,UAAU;IACnC,qBAAqB,EAAE,UAAU;CACxB,CAAC;AAEX,MAAM,UAAU,4BAA4B;IAC3C,OAAO,GAAG,uBAAuB,KAAK,8BAA8B,CAAC,WAAW,EAAE,CAAC;AACpF,CAAC;AAED,MAAM,UAAU,4BAA4B;IAC3C,OAAO,KAAK,CAAC;AACd,CAAC;AAED,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uCAAuC,CAAC;AACtD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,uCAAuC,CAAC;AACtD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,oCAAoC,CAAC;AACnD,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sCAAsC,CAAC;AACrD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,WAAW,CAAC;AAC1B,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,kCAAkC,CAAC;AACjD,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,uBAAuB,GAAG,gBAAyB,CAAC;AAEjE,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACpC,kCAAkC;IAClC,SAAS;IACT,cAAc;IACd,sBAAsB;IACtB,kBAAkB;CACT,CAAC;AAEX,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC7C,WAAW,EAAE,0BAA0B;IACvC,oBAAoB,EAAE,UAAU;IAChC,qBAAqB,EAAE,UAAU;IACjC,uBAAuB,EAAE,UAAU;IACnC,qBAAqB,EAAE,UAAU;CACxB,CAAC;AAEX,MAAM,UAAU,4BAA4B;IAC3C,OAAO,GAAG,uBAAuB,KAAK,8BAA8B,CAAC,WAAW,EAAE,CAAC;AACpF,CAAC;AAED,MAAM,UAAU,4BAA4B;IAC3C,OAAO,KAAK,CAAC;AACd,CAAC;AAED,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uCAAuC,CAAC;AACtD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,sCAAsC,CAAC;AACrD,cAAc,uCAAuC,CAAC;AACtD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,oCAAoC,CAAC;AACnD,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sCAAsC,CAAC;AACrD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,WAAW,CAAC;AAC1B,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,kCAAkC,CAAC;AACjD,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC"}
|
package/dist/lane-heartbeat.js
CHANGED
|
@@ -137,4 +137,3 @@ export function validateFlowDeskLaneLifecycleRecordV1(value) {
|
|
|
137
137
|
errors.push(...validateNoForbiddenRawPayloads(record, "lane_lifecycle_record").errors);
|
|
138
138
|
return errors.length === 0 ? valid() : invalid(...errors);
|
|
139
139
|
}
|
|
140
|
-
//# sourceMappingURL=lane-lifecycle-record.js.map
|
|
@@ -135,4 +135,3 @@ export function validateFlowDeskLaneObservabilityArtifactV1(value) {
|
|
|
135
135
|
errors.push(...validateNoForbiddenRawPayloads(record, "lane_observability").errors);
|
|
136
136
|
return errors.length === 0 ? valid() : invalid(...errors);
|
|
137
137
|
}
|
|
138
|
-
//# sourceMappingURL=lane-observability.js.map
|
|
@@ -20,4 +20,3 @@ export function validateFlowDeskManagedDispatchBetaRuntimeEchoShapeV1(value) {
|
|
|
20
20
|
export function validateFlowDeskManagedDispatchBetaTelemetryCorrelationShapeV1(value) {
|
|
21
21
|
return shapeOnly(value, "flowdesk.managed_dispatch_beta.telemetry_correlation.v1", "telemetry_correlation_evidence");
|
|
22
22
|
}
|
|
23
|
-
//# sourceMappingURL=managed-dispatch-evidence-shape.js.map
|
|
@@ -1195,4 +1195,3 @@ export function validateFlowDeskReviewerFanoutPlanV1(value) {
|
|
|
1195
1195
|
errors.push(...validateNoForbiddenRawPayloads(record, "reviewer_fanout_plan").errors);
|
|
1196
1196
|
return errors.length === 0 ? valid() : invalid(...errors);
|
|
1197
1197
|
}
|
|
1198
|
-
//# sourceMappingURL=model-availability-cache.js.map
|
|
@@ -104,4 +104,3 @@ export function validateFlowDeskReferencePackV1(value) {
|
|
|
104
104
|
errors.push(...validateNoForbiddenRawPayloads(record, "reference_pack").errors);
|
|
105
105
|
return errors.length === 0 ? valid() : invalid(...errors);
|
|
106
106
|
}
|
|
107
|
-
//# sourceMappingURL=operational-intelligence.js.map
|
package/dist/pending-abort.js
CHANGED
package/dist/plan.js
CHANGED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type ValidationResult } from "./validators.js";
|
|
2
|
+
export { invalid, type ValidationResult, valid } from "./validators.js";
|
|
3
|
+
export declare const FLOWDESK_PLANNING_AUTHORITY_KEYS_V1: readonly ["dispatch_authority_enabled", "provider_call_made", "runtime_execution", "actual_lane_launch", "write_authority_enabled"];
|
|
4
|
+
export declare function isPlanningEvidenceRecord(value: unknown): value is Record<string, unknown>;
|
|
5
|
+
export declare function rejectUnknownPlanningProperties(value: Record<string, unknown>, allowed: ReadonlySet<string>, label: string): string[];
|
|
6
|
+
export declare function requirePlanningKeys(value: Record<string, unknown>, keys: readonly string[], label: string): string[];
|
|
7
|
+
export declare function validatePlanningSafeText(value: unknown, label: string, maxLength: number, options?: {
|
|
8
|
+
allowEmpty?: boolean;
|
|
9
|
+
allowAuthorityWords?: boolean;
|
|
10
|
+
}): ValidationResult;
|
|
11
|
+
export declare function validatePlanningTimestamp(value: unknown, label: string): ValidationResult;
|
|
12
|
+
export declare function validatePlanningOpaqueId(value: unknown, label: string): ValidationResult;
|
|
13
|
+
export declare function validatePlanningOpaqueRef(value: unknown, label: string): ValidationResult;
|
|
14
|
+
export declare function validatePlanningOpaqueRefArray(value: unknown, label: string, maxItems: number): ValidationResult;
|
|
15
|
+
export declare function validatePlanningSafeLabelArray(value: unknown, label: string, maxItems: number): ValidationResult;
|
|
16
|
+
export declare function validatePlanningAuthorityFalse(value: Record<string, unknown>, label: string): string[];
|
|
17
|
+
export declare function validatePlanningNoForbiddenPayloads(value: unknown, label: string): ValidationResult;
|
|
18
|
+
//# sourceMappingURL=planning-evidence-common.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planning-evidence-common.d.ts","sourceRoot":"","sources":["../src/planning-evidence-common.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,KAAK,gBAAgB,EAKrB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAExE,eAAO,MAAM,mCAAmC,qIAMtC,CAAC;AAiBX,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzF;AAED,wBAAgB,+BAA+B,CAC9C,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,EAC5B,KAAK,EAAE,MAAM,GACX,MAAM,EAAE,CAIV;AAED,wBAAgB,mBAAmB,CAClC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,KAAK,EAAE,MAAM,GACX,MAAM,EAAE,CAIV;AAED,wBAAgB,wBAAwB,CACvC,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAAO,GACnE,gBAAgB,CAWlB;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAMzF;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAExF;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAEzF;AAED,wBAAgB,8BAA8B,CAC7C,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GACd,gBAAgB,CAOlB;AAED,wBAAgB,8BAA8B,CAC7C,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GACd,gBAAgB,CAOlB;AAED,wBAAgB,8BAA8B,CAC7C,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,KAAK,EAAE,MAAM,GACX,MAAM,EAAE,CAWV;AAED,wBAAgB,mCAAmC,CAClD,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,MAAM,GACX,gBAAgB,CAElB"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { invalid, valid, validateNoForbiddenRawPayloads, validateOpaqueId, validateOpaqueRef, } from "./validators.js";
|
|
2
|
+
export { invalid, valid } from "./validators.js";
|
|
3
|
+
export const FLOWDESK_PLANNING_AUTHORITY_KEYS_V1 = [
|
|
4
|
+
"dispatch_authority_enabled",
|
|
5
|
+
"provider_call_made",
|
|
6
|
+
"runtime_execution",
|
|
7
|
+
"actual_lane_launch",
|
|
8
|
+
"write_authority_enabled",
|
|
9
|
+
];
|
|
10
|
+
const AUTHORITY_TRUE_KEYS = new Set([
|
|
11
|
+
...FLOWDESK_PLANNING_AUTHORITY_KEYS_V1,
|
|
12
|
+
"realOpenCodeDispatch",
|
|
13
|
+
"providerCall",
|
|
14
|
+
"actualLaneLaunch",
|
|
15
|
+
"runtimeExecution",
|
|
16
|
+
"fallbackAuthority",
|
|
17
|
+
"toolAuthority",
|
|
18
|
+
"hardCancelOrNoReplyAuthority",
|
|
19
|
+
"fallback_allowed",
|
|
20
|
+
"reselection_allowed",
|
|
21
|
+
]);
|
|
22
|
+
const AUTHORITY_SMUGGLING_PATTERN = /\b(?:approve(?:d|s)?|approval|authorize(?:d|s)?|authorization|guard(?:ed)?\s+approval|dispatch(?:able|ed|es)?|dispatch\s*-?authority|real\s*-?(?:opencode\s*-?)?dispatch|provider\s*-?(?:call|payload|response)|runtime\s*-?execution|runtime[-_\s]*lane[-_\s]*launch|actual\s*-?lane\s*-?launch|lane\s*-?launch|fallback|reselection|reselect|retry\s+with\s+(?:another|different)|switch\s+(?:provider|model)|no\s*-?reply|hard\s*-?(?:cancel|stop)|opencode\s+run|hidden\s+injection)\b/i;
|
|
23
|
+
export function isPlanningEvidenceRecord(value) {
|
|
24
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
25
|
+
}
|
|
26
|
+
export function rejectUnknownPlanningProperties(value, allowed, label) {
|
|
27
|
+
return Object.keys(value)
|
|
28
|
+
.filter((key) => !allowed.has(key))
|
|
29
|
+
.map((key) => `${label} has unknown property: ${key}`);
|
|
30
|
+
}
|
|
31
|
+
export function requirePlanningKeys(value, keys, label) {
|
|
32
|
+
return keys
|
|
33
|
+
.filter((key) => !(key in value))
|
|
34
|
+
.map((key) => `${label} missing required field: ${key}`);
|
|
35
|
+
}
|
|
36
|
+
export function validatePlanningSafeText(value, label, maxLength, options = {}) {
|
|
37
|
+
if (typeof value !== "string")
|
|
38
|
+
return invalid(`${label} must be a string`);
|
|
39
|
+
if (!options.allowEmpty && value.trim().length === 0)
|
|
40
|
+
return invalid(`${label} must be a non-empty string`);
|
|
41
|
+
if (value.length > maxLength)
|
|
42
|
+
return invalid(`${label} exceeds ${maxLength} chars`);
|
|
43
|
+
const redaction = validateNoForbiddenRawPayloads(value, label);
|
|
44
|
+
if (!redaction.ok)
|
|
45
|
+
return redaction;
|
|
46
|
+
if (!options.allowAuthorityWords && AUTHORITY_SMUGGLING_PATTERN.test(value)) {
|
|
47
|
+
return invalid(`${label} contains authority-smuggling language`);
|
|
48
|
+
}
|
|
49
|
+
return valid();
|
|
50
|
+
}
|
|
51
|
+
export function validatePlanningTimestamp(value, label) {
|
|
52
|
+
if (typeof value !== "string" || value.length === 0)
|
|
53
|
+
return invalid(`${label} must be a timestamp string`);
|
|
54
|
+
return Number.isFinite(Date.parse(value))
|
|
55
|
+
? valid()
|
|
56
|
+
: invalid(`${label} must be a parseable timestamp`);
|
|
57
|
+
}
|
|
58
|
+
export function validatePlanningOpaqueId(value, label) {
|
|
59
|
+
return validateOpaqueId(value, label);
|
|
60
|
+
}
|
|
61
|
+
export function validatePlanningOpaqueRef(value, label) {
|
|
62
|
+
return validateOpaqueRef(value, label);
|
|
63
|
+
}
|
|
64
|
+
export function validatePlanningOpaqueRefArray(value, label, maxItems) {
|
|
65
|
+
if (!Array.isArray(value))
|
|
66
|
+
return invalid(`${label} must be an array`);
|
|
67
|
+
if (value.length > maxItems)
|
|
68
|
+
return invalid(`${label} exceeds ${maxItems} items`);
|
|
69
|
+
const errors = value.flatMap((item, index) => validateOpaqueRef(item, `${label}[${index}]`).errors);
|
|
70
|
+
return errors.length === 0 ? valid() : invalid(...errors);
|
|
71
|
+
}
|
|
72
|
+
export function validatePlanningSafeLabelArray(value, label, maxItems) {
|
|
73
|
+
if (!Array.isArray(value))
|
|
74
|
+
return invalid(`${label} must be an array`);
|
|
75
|
+
if (value.length > maxItems)
|
|
76
|
+
return invalid(`${label} exceeds ${maxItems} items`);
|
|
77
|
+
const errors = value.flatMap((item, index) => validatePlanningSafeText(item, `${label}[${index}]`, 120).errors);
|
|
78
|
+
return errors.length === 0 ? valid() : invalid(...errors);
|
|
79
|
+
}
|
|
80
|
+
export function validatePlanningAuthorityFalse(value, label) {
|
|
81
|
+
const errors = [];
|
|
82
|
+
for (const key of FLOWDESK_PLANNING_AUTHORITY_KEYS_V1) {
|
|
83
|
+
if (value[key] !== false)
|
|
84
|
+
errors.push(`${label}.${key} must be false`);
|
|
85
|
+
}
|
|
86
|
+
for (const [key, nested] of Object.entries(value)) {
|
|
87
|
+
if (AUTHORITY_TRUE_KEYS.has(key) && nested === true) {
|
|
88
|
+
errors.push(`${label}.${key} cannot be true`);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return errors;
|
|
92
|
+
}
|
|
93
|
+
export function validatePlanningNoForbiddenPayloads(value, label) {
|
|
94
|
+
return validateNoForbiddenRawPayloads(value, label);
|
|
95
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planning-evidence-common.js","sourceRoot":"","sources":["../src/planning-evidence-common.ts"],"names":[],"mappings":"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"}
|
|
@@ -58,4 +58,3 @@ export function validateFlowDeskPreDispatchAuditRecordV1(value) {
|
|
|
58
58
|
errors.push(...validateNoForbiddenRawPayloads(value, "pre_dispatch_audit_record").errors);
|
|
59
59
|
return errors.length === 0 ? valid() : invalid(...errors);
|
|
60
60
|
}
|
|
61
|
-
//# sourceMappingURL=pre-dispatch-audit-record.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-usage-collector.d.ts","sourceRoot":"","sources":["../src/provider-usage-collector.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"provider-usage-collector.d.ts","sourceRoot":"","sources":["../src/provider-usage-collector.ts"],"names":[],"mappings":"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"}
|
|
@@ -180,20 +180,23 @@ async function collectGeminiUsage(acquisition, options, observedAt) {
|
|
|
180
180
|
return refusedCollection("gemini", "gemini", "fetch is unavailable");
|
|
181
181
|
const homeDir = normalizeHomeDir(acquisition.homeDir, options.env);
|
|
182
182
|
const filesystem = options.filesystem ?? defaultFilesystem;
|
|
183
|
+
const openCodeCreds = readOpenCodeGeminiOAuthCredentials(homeDir, options.env, filesystem);
|
|
183
184
|
const credsPath = geminiCredentialPaths(homeDir, options.env).find((candidate) => filesystem.exists(candidate));
|
|
184
|
-
if (!credsPath)
|
|
185
|
+
if (!credsPath && !openCodeCreds)
|
|
185
186
|
return refusedCollection("gemini", "gemini", "gemini auth evidence is missing");
|
|
186
187
|
try {
|
|
187
|
-
const
|
|
188
|
-
const
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
const
|
|
192
|
-
const
|
|
188
|
+
const geminiCliCreds = credsPath ? readGeminiCliOAuthCredentials(credsPath, filesystem) : null;
|
|
189
|
+
const selectedCreds = selectGeminiOAuthCredentials(openCodeCreds, geminiCliCreds, observedAt);
|
|
190
|
+
if (!selectedCreds)
|
|
191
|
+
return refusedCollection("gemini", "gemini", "gemini auth evidence is missing");
|
|
192
|
+
const refreshToken = selectedCreds.refreshToken;
|
|
193
|
+
const cachedAccessToken = selectedCreds.accessToken;
|
|
194
|
+
const cachedExpiryMs = selectedCreds.expiresAt ?? NaN;
|
|
193
195
|
const cachedTokenStillValid = cachedAccessToken !== "" && Number.isFinite(cachedExpiryMs) && cachedExpiryMs > observedAt + 5 * 60_000;
|
|
194
196
|
const env = options.env ?? {};
|
|
195
|
-
const
|
|
196
|
-
const
|
|
197
|
+
const inferredClient = readOpenCodeGeminiAuthOAuthClient(homeDir, env, filesystem);
|
|
198
|
+
const clientId = firstNonEmpty(acquisition.geminiOAuthClientId, env.FLOWDESK_GEMINI_OAUTH_CLIENT_ID, inferredClient?.clientId);
|
|
199
|
+
const clientSecret = firstNonEmpty(acquisition.geminiOAuthClientSecret, env.FLOWDESK_GEMINI_OAUTH_CLIENT_SECRET, inferredClient?.clientSecret);
|
|
197
200
|
let accessToken = "";
|
|
198
201
|
if (cachedTokenStillValid) {
|
|
199
202
|
accessToken = cachedAccessToken;
|
|
@@ -213,7 +216,7 @@ async function collectGeminiUsage(acquisition, options, observedAt) {
|
|
|
213
216
|
return refusedCollection("gemini", "gemini", "gemini oauth client evidence is missing and cached access token is expired");
|
|
214
217
|
return refusedCollection("gemini", "gemini", "gemini token refresh failed");
|
|
215
218
|
}
|
|
216
|
-
let projectId = firstNonEmpty(env.GOOGLE_CLOUD_PROJECT, env.GOOGLE_CLOUD_PROJECT_ID, acquisition.geminiProjectId);
|
|
219
|
+
let projectId = firstNonEmpty(env.GOOGLE_CLOUD_PROJECT, env.GOOGLE_CLOUD_PROJECT_ID, acquisition.geminiProjectId, selectedCreds.projectId);
|
|
217
220
|
const details = await codeAssistPost("loadCodeAssist", { cloudaicompanionProject: projectId, metadata: { ideType: "IDE_UNSPECIFIED", platform: "PLATFORM_UNSPECIFIED", pluginType: "GEMINI", duetProject: projectId } }, accessToken, fetcher);
|
|
218
221
|
projectId = firstNonEmpty(projectId, stringField(details, "cloudaicompanionProject"));
|
|
219
222
|
if (!projectId)
|
|
@@ -226,6 +229,85 @@ async function collectGeminiUsage(acquisition, options, observedAt) {
|
|
|
226
229
|
return refusedCollection("gemini", "gemini", "gemini usage collection failed");
|
|
227
230
|
}
|
|
228
231
|
}
|
|
232
|
+
function readGeminiCliOAuthCredentials(credsPath, filesystem) {
|
|
233
|
+
try {
|
|
234
|
+
const creds = JSON.parse(filesystem.readFile(credsPath));
|
|
235
|
+
const record = isRecord(creds) ? creds : {};
|
|
236
|
+
const refreshToken = stringField(record, "refresh_token");
|
|
237
|
+
const accessToken = stringField(record, "access_token");
|
|
238
|
+
const expiryRaw = record.expiry_date;
|
|
239
|
+
const expiresAt = typeof expiryRaw === "number" ? expiryRaw : typeof expiryRaw === "string" ? Number.parseInt(expiryRaw, 10) : undefined;
|
|
240
|
+
if (!refreshToken && !accessToken)
|
|
241
|
+
return null;
|
|
242
|
+
return { accessToken, refreshToken, ...(expiresAt === undefined || !Number.isFinite(expiresAt) ? {} : { expiresAt }) };
|
|
243
|
+
}
|
|
244
|
+
catch {
|
|
245
|
+
return null;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
function readOpenCodeGeminiOAuthCredentials(homeDir, env, filesystem) {
|
|
249
|
+
const fromEnv = authRecordFromOpenCodeAuthContent(env?.OPENCODE_AUTH_CONTENT);
|
|
250
|
+
if (fromEnv)
|
|
251
|
+
return fromEnv;
|
|
252
|
+
for (const authPath of openCodeAuthPaths(homeDir, env)) {
|
|
253
|
+
if (!filesystem.exists(authPath))
|
|
254
|
+
continue;
|
|
255
|
+
try {
|
|
256
|
+
const parsed = JSON.parse(filesystem.readFile(authPath));
|
|
257
|
+
const fromFile = authRecordFromOpenCodeAuthDatabase(parsed);
|
|
258
|
+
if (fromFile)
|
|
259
|
+
return fromFile;
|
|
260
|
+
}
|
|
261
|
+
catch { }
|
|
262
|
+
}
|
|
263
|
+
return null;
|
|
264
|
+
}
|
|
265
|
+
function authRecordFromOpenCodeAuthContent(value) {
|
|
266
|
+
if (!value)
|
|
267
|
+
return null;
|
|
268
|
+
try {
|
|
269
|
+
return authRecordFromOpenCodeAuthDatabase(JSON.parse(value));
|
|
270
|
+
}
|
|
271
|
+
catch {
|
|
272
|
+
return null;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
function authRecordFromOpenCodeAuthDatabase(value) {
|
|
276
|
+
if (!isRecord(value))
|
|
277
|
+
return null;
|
|
278
|
+
return openCodeGeminiAuthRecordToCredentials(value.google) ?? openCodeGeminiAuthRecordToCredentials(value.gemini);
|
|
279
|
+
}
|
|
280
|
+
function openCodeGeminiAuthRecordToCredentials(value) {
|
|
281
|
+
if (!isRecord(value) || value.type !== "oauth")
|
|
282
|
+
return null;
|
|
283
|
+
const accessToken = stringField(value, "access");
|
|
284
|
+
const expiresAt = numberField(value, "expires");
|
|
285
|
+
const refresh = stringField(value, "refresh");
|
|
286
|
+
const [refreshToken = "", projectId = "", managedProjectId = ""] = refresh.split("|", 3);
|
|
287
|
+
if (!refreshToken && !accessToken)
|
|
288
|
+
return null;
|
|
289
|
+
return { accessToken, refreshToken, ...(expiresAt === undefined ? {} : { expiresAt }), ...(firstNonEmpty(projectId, managedProjectId) ? { projectId: firstNonEmpty(projectId, managedProjectId) } : {}) };
|
|
290
|
+
}
|
|
291
|
+
function selectGeminiOAuthCredentials(openCodeCreds, geminiCliCreds, observedAt) {
|
|
292
|
+
const candidates = [openCodeCreds, geminiCliCreds].filter((candidate) => candidate !== null);
|
|
293
|
+
const fresh = candidates.find((candidate) => candidate.accessToken && candidate.expiresAt !== undefined && candidate.expiresAt > observedAt + 5 * 60_000);
|
|
294
|
+
return fresh ?? candidates.find((candidate) => candidate.refreshToken) ?? candidates[0] ?? null;
|
|
295
|
+
}
|
|
296
|
+
function readOpenCodeGeminiAuthOAuthClient(homeDir, env, filesystem) {
|
|
297
|
+
for (const candidate of openCodeGeminiAuthPackageEntrypoints(homeDir, env)) {
|
|
298
|
+
if (!filesystem.exists(candidate))
|
|
299
|
+
continue;
|
|
300
|
+
try {
|
|
301
|
+
const source = filesystem.readFile(candidate);
|
|
302
|
+
const clientId = source.match(/GEMINI_CLIENT_ID\s*=\s*["']([^"']+)["']/)?.[1] ?? "";
|
|
303
|
+
const clientSecret = source.match(/GEMINI_CLIENT_SECRET\s*=\s*["']([^"']+)["']/)?.[1] ?? "";
|
|
304
|
+
if (clientId && clientSecret)
|
|
305
|
+
return { clientId, clientSecret };
|
|
306
|
+
}
|
|
307
|
+
catch { }
|
|
308
|
+
}
|
|
309
|
+
return null;
|
|
310
|
+
}
|
|
229
311
|
function availableCollection(providerFamily, modelFamily, authProfile, accountBoundary, providerBucket) {
|
|
230
312
|
if (providerBucket.remaining === null || providerBucket.remaining <= 0 || providerBucket.uncertainty !== "available") {
|
|
231
313
|
return { providerFamily, modelFamily, bucket: providerBucket, failureClass: "rate_limited", availabilityState: "unavailable", redactedReason: "usage is not available" };
|
|
@@ -493,6 +575,18 @@ function geminiCredentialPaths(homeDir, env) {
|
|
|
493
575
|
const geminiHome = env?.GEMINI_CLI_HOME;
|
|
494
576
|
return uniqueNonEmpty([geminiHome ? path.join(geminiHome, ".gemini", "oauth_creds.json") : undefined, geminiHome ? path.join(geminiHome, "oauth_creds.json") : undefined, path.join(homeDir, ".gemini", "oauth_creds.json")]);
|
|
495
577
|
}
|
|
578
|
+
function openCodeAuthPaths(homeDir, env) {
|
|
579
|
+
const dataHome = firstNonEmpty(env?.OPENCODE_DATA_DIR, env?.XDG_DATA_HOME ? path.join(env.XDG_DATA_HOME, "opencode") : undefined, path.join(homeDir, ".local", "share", "opencode"));
|
|
580
|
+
return uniqueNonEmpty([dataHome ? path.join(dataHome, "auth.json") : undefined]);
|
|
581
|
+
}
|
|
582
|
+
function openCodeGeminiAuthPackageEntrypoints(homeDir, env) {
|
|
583
|
+
const cacheHome = firstNonEmpty(env?.OPENCODE_CACHE_DIR, env?.XDG_CACHE_HOME ? path.join(env.XDG_CACHE_HOME, "opencode") : undefined, path.join(homeDir, ".cache", "opencode"));
|
|
584
|
+
return uniqueNonEmpty([
|
|
585
|
+
cacheHome ? path.join(cacheHome, "packages", "opencode-gemini-auth@latest", "node_modules", "opencode-gemini-auth", "dist", "index.js") : undefined,
|
|
586
|
+
cacheHome ? path.join(cacheHome, "packages", "opencode-gemini-auth@latest", "dist", "index.js") : undefined,
|
|
587
|
+
cacheHome ? path.join(cacheHome, "packages", "opencode-gemini-auth", "node_modules", "opencode-gemini-auth", "dist", "index.js") : undefined,
|
|
588
|
+
]);
|
|
589
|
+
}
|
|
496
590
|
function claudeKeychainServiceName(env) {
|
|
497
591
|
const configDir = env?.CLAUDE_CONFIG_DIR;
|
|
498
592
|
const defaultService = configDir ? `Claude Code-credentials-${createHash("sha256").update(configDir).digest("hex").slice(0, 8)}` : "Claude Code-credentials";
|