@evalops/maestro 0.10.46 → 0.10.48
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 +4 -0
- package/dist/agent/providers/openai-codex-session.js +1 -1
- package/dist/agent/providers/openai-codex-session.js.map +1 -1
- package/dist/app-server/in-process-client.d.ts +2 -2
- package/dist/app-server/in-process-client.js.map +1 -1
- package/dist/app-server/protocol-modes-api.js +1 -1
- package/dist/app-server/protocol-modes-api.js.map +1 -1
- package/dist/app-server/sandbox-check-api.d.ts +21 -0
- package/dist/app-server/{sandbox-proof-api.d.ts.map → sandbox-check-api.d.ts.map} +1 -1
- package/dist/app-server/{sandbox-proof-api.js → sandbox-check-api.js} +18 -18
- package/dist/app-server/{sandbox-proof-api.js.map → sandbox-check-api.js.map} +1 -1
- package/dist/app-server/session-api.d.ts +5 -5
- package/dist/app-server/session-api.js +18 -18
- package/dist/app-server/session-api.js.map +1 -1
- package/dist/audit/logger.d.ts +1 -1
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +3 -1
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/commands/codex.js +30 -3
- package/dist/cli/commands/codex.js.map +1 -1
- package/dist/cli/commands/update.d.ts +12 -0
- package/dist/cli/commands/update.d.ts.map +1 -0
- package/dist/cli/commands/update.js +148 -0
- package/dist/cli/commands/update.js.map +1 -0
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +4 -0
- package/dist/cli/help.js.map +1 -1
- package/dist/cli-tui/auth-state.d.ts +7 -0
- package/dist/cli-tui/auth-state.d.ts.map +1 -0
- package/dist/cli-tui/auth-state.js +46 -0
- package/dist/cli-tui/auth-state.js.map +1 -0
- package/dist/cli-tui/commands/command-catalog.d.ts.map +1 -1
- package/dist/cli-tui/commands/command-catalog.js +8 -3
- package/dist/cli-tui/commands/command-catalog.js.map +1 -1
- package/dist/cli-tui/commands/command-suite-handlers.d.ts +2 -5
- package/dist/cli-tui/commands/command-suite-handlers.d.ts.map +1 -1
- package/dist/cli-tui/commands/command-suite-handlers.js.map +1 -1
- package/dist/cli-tui/commands/subcommands/auth-commands.d.ts +6 -5
- package/dist/cli-tui/commands/subcommands/auth-commands.d.ts.map +1 -1
- package/dist/cli-tui/commands/subcommands/auth-commands.js +2 -2
- package/dist/cli-tui/commands/subcommands/auth-commands.js.map +1 -1
- package/dist/cli-tui/commands/subcommands/ui-commands.d.ts +1 -1
- package/dist/cli-tui/commands/subcommands/ui-commands.js +2 -2
- package/dist/cli-tui/commands/subcommands/ui-commands.js.map +1 -1
- package/dist/cli-tui/footer.d.ts.map +1 -1
- package/dist/cli-tui/footer.js +1 -1
- package/dist/cli-tui/footer.js.map +1 -1
- package/dist/cli-tui/oauth/oauth-flow-controller.d.ts.map +1 -1
- package/dist/cli-tui/oauth/oauth-flow-controller.js +24 -11
- package/dist/cli-tui/oauth/oauth-flow-controller.js.map +1 -1
- package/dist/cli-tui/selectors/oauth-selector-view.d.ts +1 -0
- package/dist/cli-tui/selectors/oauth-selector-view.d.ts.map +1 -1
- package/dist/cli-tui/selectors/oauth-selector-view.js +1 -1
- package/dist/cli-tui/selectors/oauth-selector-view.js.map +1 -1
- package/dist/cli-tui/selectors/oauth-selector.d.ts +2 -1
- package/dist/cli-tui/selectors/oauth-selector.d.ts.map +1 -1
- package/dist/cli-tui/selectors/oauth-selector.js +25 -2
- package/dist/cli-tui/selectors/oauth-selector.js.map +1 -1
- package/dist/cli-tui/tui-renderer/command-suite-wiring.d.ts +2 -5
- package/dist/cli-tui/tui-renderer/command-suite-wiring.d.ts.map +1 -1
- package/dist/cli-tui/tui-renderer/command-suite-wiring.js.map +1 -1
- package/dist/cli-tui/tui-renderer/ui-state-controller.d.ts +1 -1
- package/dist/cli-tui/tui-renderer/ui-state-controller.d.ts.map +1 -1
- package/dist/cli-tui/tui-renderer/ui-state-controller.js +5 -11
- package/dist/cli-tui/tui-renderer/ui-state-controller.js.map +1 -1
- package/dist/cli-tui/tui-renderer.d.ts +0 -4
- package/dist/cli-tui/tui-renderer.d.ts.map +1 -1
- package/dist/cli-tui/tui-renderer.js +4 -29
- package/dist/cli-tui/tui-renderer.js.map +1 -1
- package/dist/cli-tui/ui-state.js +1 -1
- package/dist/cli-tui/ui-state.js.map +1 -1
- package/dist/cli-tui/utils/footer-utils.d.ts +1 -1
- package/dist/cli-tui/utils/footer-utils.d.ts.map +1 -1
- package/dist/cli-tui/utils/footer-utils.js.map +1 -1
- package/dist/cli.js +4800 -3779
- package/dist/cli.js.map +1 -1
- package/dist/codex/app-server-client.d.ts +16 -2
- package/dist/codex/app-server-client.d.ts.map +1 -1
- package/dist/codex/app-server-client.js +67 -7
- package/dist/codex/app-server-client.js.map +1 -1
- package/dist/codex/auth.d.ts +4 -0
- package/dist/codex/auth.d.ts.map +1 -0
- package/dist/codex/auth.js +103 -0
- package/dist/codex/auth.js.map +1 -0
- package/dist/db/schema.d.ts +1 -1
- package/dist/evalops/agent-bootstrap.js +2 -2
- package/dist/evalops/agent-bootstrap.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +10 -1
- package/dist/main.js.map +1 -1
- package/dist/models/config-loader.d.ts +12 -12
- package/dist/node_modules/@evalops/contracts/dist/maestro-app-server.d.ts +19 -19
- package/dist/node_modules/@evalops/contracts/dist/maestro-app-server.d.ts.map +1 -1
- package/dist/node_modules/@evalops/contracts/dist/maestro-app-server.js +12 -13
- package/dist/node_modules/@evalops/contracts/dist/maestro-app-server.js.map +1 -1
- package/dist/node_modules/@evalops/contracts/dist/scenario.d.ts +2 -0
- package/dist/node_modules/@evalops/contracts/dist/scenario.d.ts.map +1 -1
- package/dist/node_modules/@evalops/contracts/dist/scenario.js.map +1 -1
- package/dist/node_modules/@evalops/contracts/package.json +1 -1
- package/dist/node_modules/@evalops/tui/package.json +1 -1
- package/dist/oauth/index.d.ts +1 -0
- package/dist/oauth/index.d.ts.map +1 -1
- package/dist/oauth/index.js +42 -2
- package/dist/oauth/index.js.map +1 -1
- package/dist/platform/operating-plane-client.d.ts +3 -3
- package/dist/platform/operating-plane-client.d.ts.map +1 -1
- package/dist/platform/operating-plane-client.js.map +1 -1
- package/dist/platform/operating-plane-summary.js +3 -6
- package/dist/platform/operating-plane-summary.js.map +1 -1
- package/dist/server/agent-trajectory-scenarios.d.ts.map +1 -1
- package/dist/server/agent-trajectory-scenarios.js +29 -6
- package/dist/server/agent-trajectory-scenarios.js.map +1 -1
- package/dist/server/app-context.d.ts +2 -0
- package/dist/server/app-context.d.ts.map +1 -1
- package/dist/server/app-context.js.map +1 -1
- package/dist/server/handlers/headless-sessions.d.ts.map +1 -1
- package/dist/server/handlers/headless-sessions.js +44 -10
- package/dist/server/handlers/headless-sessions.js.map +1 -1
- package/dist/server/handlers/hosted-runner-identity.d.ts +2 -0
- package/dist/server/handlers/hosted-runner-identity.d.ts.map +1 -1
- package/dist/server/handlers/hosted-runner-identity.js +2 -0
- package/dist/server/handlers/hosted-runner-identity.js.map +1 -1
- package/dist/server/handlers/platform-a2a-push.d.ts.map +1 -1
- package/dist/server/handlers/platform-a2a-push.js +113 -2
- package/dist/server/handlers/platform-a2a-push.js.map +1 -1
- package/dist/server/handlers/ui.d.ts.map +1 -1
- package/dist/server/handlers/ui.js +5 -5
- package/dist/server/handlers/ui.js.map +1 -1
- package/dist/server/headless-in-process-host.d.ts.map +1 -1
- package/dist/server/headless-in-process-host.js +1 -1
- package/dist/server/headless-in-process-host.js.map +1 -1
- package/dist/server/headless-runtime-service.d.ts +9 -2
- package/dist/server/headless-runtime-service.d.ts.map +1 -1
- package/dist/server/headless-runtime-service.js +54 -15
- package/dist/server/headless-runtime-service.js.map +1 -1
- package/dist/server/stores/ui-store.d.ts.map +1 -1
- package/dist/server/stores/ui-store.js +8 -1
- package/dist/server/stores/ui-store.js.map +1 -1
- package/dist/tools/background/task-runtime.js +1 -1
- package/dist/tools/background/task-runtime.js.map +1 -1
- package/dist/tools/background/task-types.d.ts +1 -1
- package/dist/update/check.d.ts +2 -0
- package/dist/update/check.d.ts.map +1 -1
- package/dist/update/check.js +100 -41
- package/dist/update/check.js.map +1 -1
- package/dist/update/startup-refresh.d.ts +56 -0
- package/dist/update/startup-refresh.d.ts.map +1 -0
- package/dist/update/startup-refresh.js +321 -0
- package/dist/update/startup-refresh.js.map +1 -0
- package/dist/version.json +2 -2
- package/package.json +297 -296
- package/dist/app-server/sandbox-proof-api.d.ts +0 -21
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scenario.js","sourceRoot":"","sources":["../src/scenario.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,uBAAuB,GAAG,6BAAsC,CAAC;AAC9E,MAAM,CAAC,MAAM,gCAAgC,GAC5C,sCAA+C,CAAC;AACjD,MAAM,CAAC,MAAM,0CAA0C,GACtD,gDAAyD,CAAC","sourcesContent":["export const MAESTRO_SCENARIO_SCHEMA = \"evalops.maestro.scenario.v1\" as const;\nexport const MAESTRO_SCRIPTED_SCENARIO_SCHEMA =\n\t\"evalops.maestro.scripted-scenario.v1\" as const;\nexport const MAESTRO_SCENARIO_WORKSPACE_MANIFEST_SCHEMA =\n\t\"evalops.maestro.scenario-workspace-manifest.v1\" as const;\n\nexport type MaestroScenarioOutcome = \"pass\" | \"fail\";\n\nexport type MaestroScenarioSeverity = \"error\" | \"warning\";\nexport type MaestroScenarioGateTier = \"smoke\" | \"regression\" | \"gauntlet\";\nexport type MaestroScenarioRequiredArtifact =\n\t| \"trajectory\"\n\t| \"replay\"\n\t| \"score\"\n\t| \"inspection\"\n\t| \"workspace_manifest\";\n\nexport type MaestroScenarioReviewLabel =\n\t| \"accepted\"\n\t| \"needs_human_review\"\n\t| \"unsafe_input\"\n\t| \"efficiency_regression\"\n\t| \"platform_promotion_ready\"\n\t| \"degraded\";\n\nexport interface MaestroScenarioSource {\n\ttrajectoryPath: string;\n\treplayPath: string;\n\tscorePath: string;\n\tinspectionPath?: string;\n\tworkspaceManifestPath?: string;\n\tbaselineTrajectoryPath?: string;\n\tcandidateTrajectoryPath?: string;\n\tbaselineScorePath?: string;\n\tcandidateScorePath?: string;\n}\n\nexport interface MaestroScenarioReleaseGate {\n\treleaseBlocking: boolean;\n\ttier: MaestroScenarioGateTier;\n\trequiredArtifacts: MaestroScenarioRequiredArtifact[];\n\tmaxEvents?: number;\n\tmaxToolCalls?: number;\n\tmaxReplayDeltas?: number;\n\tmaxScoreFailures?: number;\n\tmaxScoreWarnings?: number;\n\trationale?: string;\n}\n\nexport interface MaestroScenarioPlatformLink {\n\tprimitive:\n\t\t| \"timeline\"\n\t\t| \"trajectory\"\n\t\t| \"event_bus\"\n\t\t| \"artifact_store\"\n\t\t| \"standalone\";\n\teventType?: string;\n\ttraceJoinKeys: string[];\n\trationale?: string;\n}\n\nexport interface MaestroScenarioExternalRefs {\n\tensembleTranscriptIds?: string[];\n\tplatformTraceIds?: string[];\n\tplatformWorkEnvelopeIds?: string[];\n\tslackThreadRefs?: string[];\n\tevidenceArtifactIds?: string[];\n}\n\nexport interface MaestroScenarioAssertion {\n\tid: string;\n\tkind:\n\t\t| \"event.exists\"\n\t\t| \"event.forbidden\"\n\t\t| \"replay.deltas\"\n\t\t| \"score.finding\"\n\t\t| \"inspection.redaction\"\n\t\t| \"workspace.manifest\"\n\t\t| \"efficiency.budget\"\n\t\t| \"provenance.chain\"\n\t\t| \"human.review\"\n\t\t| \"external.refs\"\n\t\t| \"trajectory.diff\";\n\tseverity?: MaestroScenarioSeverity;\n\tselector?: {\n\t\tkind?: string;\n\t\tphase?: string;\n\t\ttype?: string;\n\t\tstatus?: string;\n\t\ttoolName?: string;\n\t\tsource?: string;\n\t\tactor?: string;\n\t};\n\truleId?: string;\n\tstatus?: \"pass\" | \"fail\" | \"warn\";\n\tforbiddenTerms?: string[];\n\tmaxEvents?: number;\n\tmaxToolCalls?: number;\n\tmaxReplayDeltas?: number;\n\tmaxReplayErrors?: number;\n\tmaxScoreFailures?: number;\n\tmaxScoreWarnings?: number;\n\tmaxAddedEvents?: number;\n\tmaxAddedToolCalls?: number;\n\tmaxAddedScoreFailures?: number;\n\teventId?: string;\n\trequiredEvidenceKinds?: string[];\n\trequiredWorkspaceFiles?: string[];\n\trequiredToolAdapters?: string[];\n\trequiredHydrationModes?: MaestroScenarioWorkspaceHydrationMode[];\n\trequiredReleaseGateTier?: MaestroScenarioGateTier;\n\tminWorkspaceFiles?: number;\n\tminToolAdapters?: number;\n\trequiredLabels?: MaestroScenarioReviewLabel[];\n\trequiredExternalRefKinds?: (keyof MaestroScenarioExternalRefs)[];\n\trequiredExternalRefs?: string[];\n\tnote?: string;\n}\n\nexport type MaestroScenarioWorkspaceSource =\n\t| \"production\"\n\t| \"canary\"\n\t| \"fixture\"\n\t| \"synthetic\";\nexport type MaestroScenarioWorkspaceHydrationMode =\n\t| \"manifest_only\"\n\t| \"fixture_workspace\"\n\t| \"frozen_archive\";\nexport type MaestroScenarioToolAdapterMode =\n\t| \"recorded\"\n\t| \"mocked\"\n\t| \"sandboxed\"\n\t| \"disabled\";\n\nexport interface MaestroScenarioWorkspaceManifestFile {\n\tpath: string;\n\tsha256?: string;\n\tsizeBytes?: number;\n\tpurpose?: string;\n}\n\nexport interface MaestroScenarioWorkspaceManifestToolAdapter {\n\ttool: string;\n\tmode: MaestroScenarioToolAdapterMode;\n\tfixturePath?: string;\n\trationale?: string;\n}\n\nexport interface MaestroScenarioWorkspaceManifest {\n\tschemaVersion: typeof MAESTRO_SCENARIO_WORKSPACE_MANIFEST_SCHEMA;\n\tid: string;\n\trecordedAt: string;\n\tsource: MaestroScenarioWorkspaceSource;\n\tworkspaceRoot?: string;\n\thydration: {\n\t\tmode: MaestroScenarioWorkspaceHydrationMode;\n\t\tarchiveUri?: string;\n\t\trootPath?: string;\n\t};\n\tfiles: MaestroScenarioWorkspaceManifestFile[];\n\ttoolAdapters: MaestroScenarioWorkspaceManifestToolAdapter[];\n\tredaction: {\n\t\tsecretsRemoved: boolean;\n\t\trawPromptsIncluded: boolean;\n\t\tnotes?: string[];\n\t};\n}\n\nexport interface MaestroScenario {\n\tschemaVersion: typeof MAESTRO_SCENARIO_SCHEMA;\n\tid: string;\n\ttitle: string;\n\tdescription: string;\n\texpectedOutcome?: MaestroScenarioOutcome;\n\treleaseGate?: MaestroScenarioReleaseGate;\n\tsource: MaestroScenarioSource;\n\treviewLabels: MaestroScenarioReviewLabel[];\n\tplatform: MaestroScenarioPlatformLink;\n\texternalRefs?: MaestroScenarioExternalRefs;\n\tassumptions: {\n\t\tworkflow: string;\n\t\tcorrectnessModel: string;\n\t\tthreatModel: string;\n\t\tresearchBasis: string[];\n\t};\n\tassertions: MaestroScenarioAssertion[];\n}\n\nexport type MaestroScriptedScenarioEndReason =\n\t| \"complete\"\n\t| \"aborted\"\n\t| \"limit_exceeded\";\n\nexport type MaestroScriptedStatement =\n\t| { kind: \"text\"; text: string; streamMs?: number }\n\t| { kind: \"delay\"; ms: number }\n\t| {\n\t\t\tkind: \"tool_call\";\n\t\t\ttool: string;\n\t\t\tinput?: unknown;\n\t\t\tid?: string;\n\t\t\texpectedResult?: \"success\" | \"error\" | \"any\";\n\t }\n\t| { kind: \"error\"; type: \"transient\" | \"fatal\"; message: string }\n\t| { kind: \"wait_for_user\" }\n\t| { kind: \"end\"; reason: MaestroScriptedScenarioEndReason };\n\nexport interface MaestroScriptedScenarioFrame {\n\tindex: number;\n\tstatements: MaestroScriptedStatement[];\n}\n\nexport type MaestroScriptedScenarioAssertionKind =\n\t| \"tool_called\"\n\t| \"tool_not_called\"\n\t| \"file_exists\"\n\t| \"file_contents\"\n\t| \"audit_event_emitted\";\n\nexport interface MaestroScriptedScenarioAssertion {\n\tid: string;\n\tkind: MaestroScriptedScenarioAssertionKind;\n\tseverity?: MaestroScenarioSeverity;\n\ttool?: string;\n\ttoolCallId?: string;\n\tpath?: string;\n\tcontains?: string;\n\tequals?: string;\n\teventType?: string;\n\tnote?: string;\n}\n\nexport interface MaestroScriptedScenario {\n\tschemaVersion: typeof MAESTRO_SCRIPTED_SCENARIO_SCHEMA;\n\tid: string;\n\tdescription: string;\n\texpectedOutcome?: MaestroScenarioOutcome;\n\tmetadata: {\n\t\trecordedFrom?: string;\n\t\trecordedAt: string;\n\t\tmodelOriginal?: string;\n\t\ttoolsExpected: string[];\n\t\tauditEvents?: string[];\n\t};\n\tframes: MaestroScriptedScenarioFrame[];\n\tassertions?: MaestroScriptedScenarioAssertion[];\n}\n"]}
|
|
1
|
+
{"version":3,"file":"scenario.js","sourceRoot":"","sources":["../src/scenario.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,uBAAuB,GAAG,6BAAsC,CAAC;AAC9E,MAAM,CAAC,MAAM,gCAAgC,GAC5C,sCAA+C,CAAC;AACjD,MAAM,CAAC,MAAM,0CAA0C,GACtD,gDAAyD,CAAC","sourcesContent":["export const MAESTRO_SCENARIO_SCHEMA = \"evalops.maestro.scenario.v1\" as const;\nexport const MAESTRO_SCRIPTED_SCENARIO_SCHEMA =\n\t\"evalops.maestro.scripted-scenario.v1\" as const;\nexport const MAESTRO_SCENARIO_WORKSPACE_MANIFEST_SCHEMA =\n\t\"evalops.maestro.scenario-workspace-manifest.v1\" as const;\n\nexport type MaestroScenarioOutcome = \"pass\" | \"fail\";\n\nexport type MaestroScenarioSeverity = \"error\" | \"warning\";\nexport type MaestroScenarioGateTier = \"smoke\" | \"regression\" | \"gauntlet\";\nexport type MaestroScenarioRequiredArtifact =\n\t| \"trajectory\"\n\t| \"replay\"\n\t| \"score\"\n\t| \"inspection\"\n\t| \"workspace_manifest\";\n\nexport type MaestroScenarioReviewLabel =\n\t| \"accepted\"\n\t| \"needs_human_review\"\n\t| \"unsafe_input\"\n\t| \"efficiency_regression\"\n\t| \"platform_promotion_ready\"\n\t| \"degraded\";\n\nexport interface MaestroScenarioSource {\n\ttrajectoryPath: string;\n\treplayPath: string;\n\tscorePath: string;\n\tinspectionPath?: string;\n\tworkspaceManifestPath?: string;\n\tbaselineTrajectoryPath?: string;\n\tcandidateTrajectoryPath?: string;\n\tbaselineScorePath?: string;\n\tcandidateScorePath?: string;\n}\n\nexport interface MaestroScenarioReleaseGate {\n\treleaseBlocking: boolean;\n\ttier: MaestroScenarioGateTier;\n\trequiredArtifacts: MaestroScenarioRequiredArtifact[];\n\tmaxEvents?: number;\n\tmaxToolCalls?: number;\n\tmaxReplayDeltas?: number;\n\tmaxScoreFailures?: number;\n\tmaxScoreWarnings?: number;\n\trationale?: string;\n}\n\nexport interface MaestroScenarioPlatformLink {\n\tprimitive:\n\t\t| \"timeline\"\n\t\t| \"trajectory\"\n\t\t| \"event_bus\"\n\t\t| \"artifact_store\"\n\t\t| \"standalone\";\n\teventType?: string;\n\ttraceJoinKeys: string[];\n\trationale?: string;\n}\n\nexport interface MaestroScenarioExternalRefs {\n\t/** @deprecated Preserved only for archived evalops.maestro.scenario.v1 artifacts. */\n\tensembleTranscriptIds?: string[];\n\tplatformSlackEventIds?: string[];\n\tplatformTraceIds?: string[];\n\tplatformWorkEnvelopeIds?: string[];\n\tslackThreadRefs?: string[];\n\tevidenceArtifactIds?: string[];\n}\n\nexport interface MaestroScenarioAssertion {\n\tid: string;\n\tkind:\n\t\t| \"event.exists\"\n\t\t| \"event.forbidden\"\n\t\t| \"replay.deltas\"\n\t\t| \"score.finding\"\n\t\t| \"inspection.redaction\"\n\t\t| \"workspace.manifest\"\n\t\t| \"efficiency.budget\"\n\t\t| \"provenance.chain\"\n\t\t| \"human.review\"\n\t\t| \"external.refs\"\n\t\t| \"trajectory.diff\";\n\tseverity?: MaestroScenarioSeverity;\n\tselector?: {\n\t\tkind?: string;\n\t\tphase?: string;\n\t\ttype?: string;\n\t\tstatus?: string;\n\t\ttoolName?: string;\n\t\tsource?: string;\n\t\tactor?: string;\n\t};\n\truleId?: string;\n\tstatus?: \"pass\" | \"fail\" | \"warn\";\n\tforbiddenTerms?: string[];\n\tmaxEvents?: number;\n\tmaxToolCalls?: number;\n\tmaxReplayDeltas?: number;\n\tmaxReplayErrors?: number;\n\tmaxScoreFailures?: number;\n\tmaxScoreWarnings?: number;\n\tmaxAddedEvents?: number;\n\tmaxAddedToolCalls?: number;\n\tmaxAddedScoreFailures?: number;\n\teventId?: string;\n\trequiredEvidenceKinds?: string[];\n\trequiredWorkspaceFiles?: string[];\n\trequiredToolAdapters?: string[];\n\trequiredHydrationModes?: MaestroScenarioWorkspaceHydrationMode[];\n\trequiredReleaseGateTier?: MaestroScenarioGateTier;\n\tminWorkspaceFiles?: number;\n\tminToolAdapters?: number;\n\trequiredLabels?: MaestroScenarioReviewLabel[];\n\trequiredExternalRefKinds?: (keyof MaestroScenarioExternalRefs)[];\n\trequiredExternalRefs?: string[];\n\tnote?: string;\n}\n\nexport type MaestroScenarioWorkspaceSource =\n\t| \"production\"\n\t| \"canary\"\n\t| \"fixture\"\n\t| \"synthetic\";\nexport type MaestroScenarioWorkspaceHydrationMode =\n\t| \"manifest_only\"\n\t| \"fixture_workspace\"\n\t| \"frozen_archive\";\nexport type MaestroScenarioToolAdapterMode =\n\t| \"recorded\"\n\t| \"mocked\"\n\t| \"sandboxed\"\n\t| \"disabled\";\n\nexport interface MaestroScenarioWorkspaceManifestFile {\n\tpath: string;\n\tsha256?: string;\n\tsizeBytes?: number;\n\tpurpose?: string;\n}\n\nexport interface MaestroScenarioWorkspaceManifestToolAdapter {\n\ttool: string;\n\tmode: MaestroScenarioToolAdapterMode;\n\tfixturePath?: string;\n\trationale?: string;\n}\n\nexport interface MaestroScenarioWorkspaceManifest {\n\tschemaVersion: typeof MAESTRO_SCENARIO_WORKSPACE_MANIFEST_SCHEMA;\n\tid: string;\n\trecordedAt: string;\n\tsource: MaestroScenarioWorkspaceSource;\n\tworkspaceRoot?: string;\n\thydration: {\n\t\tmode: MaestroScenarioWorkspaceHydrationMode;\n\t\tarchiveUri?: string;\n\t\trootPath?: string;\n\t};\n\tfiles: MaestroScenarioWorkspaceManifestFile[];\n\ttoolAdapters: MaestroScenarioWorkspaceManifestToolAdapter[];\n\tredaction: {\n\t\tsecretsRemoved: boolean;\n\t\trawPromptsIncluded: boolean;\n\t\tnotes?: string[];\n\t};\n}\n\nexport interface MaestroScenario {\n\tschemaVersion: typeof MAESTRO_SCENARIO_SCHEMA;\n\tid: string;\n\ttitle: string;\n\tdescription: string;\n\texpectedOutcome?: MaestroScenarioOutcome;\n\treleaseGate?: MaestroScenarioReleaseGate;\n\tsource: MaestroScenarioSource;\n\treviewLabels: MaestroScenarioReviewLabel[];\n\tplatform: MaestroScenarioPlatformLink;\n\texternalRefs?: MaestroScenarioExternalRefs;\n\tassumptions: {\n\t\tworkflow: string;\n\t\tcorrectnessModel: string;\n\t\tthreatModel: string;\n\t\tresearchBasis: string[];\n\t};\n\tassertions: MaestroScenarioAssertion[];\n}\n\nexport type MaestroScriptedScenarioEndReason =\n\t| \"complete\"\n\t| \"aborted\"\n\t| \"limit_exceeded\";\n\nexport type MaestroScriptedStatement =\n\t| { kind: \"text\"; text: string; streamMs?: number }\n\t| { kind: \"delay\"; ms: number }\n\t| {\n\t\t\tkind: \"tool_call\";\n\t\t\ttool: string;\n\t\t\tinput?: unknown;\n\t\t\tid?: string;\n\t\t\texpectedResult?: \"success\" | \"error\" | \"any\";\n\t }\n\t| { kind: \"error\"; type: \"transient\" | \"fatal\"; message: string }\n\t| { kind: \"wait_for_user\" }\n\t| { kind: \"end\"; reason: MaestroScriptedScenarioEndReason };\n\nexport interface MaestroScriptedScenarioFrame {\n\tindex: number;\n\tstatements: MaestroScriptedStatement[];\n}\n\nexport type MaestroScriptedScenarioAssertionKind =\n\t| \"tool_called\"\n\t| \"tool_not_called\"\n\t| \"file_exists\"\n\t| \"file_contents\"\n\t| \"audit_event_emitted\";\n\nexport interface MaestroScriptedScenarioAssertion {\n\tid: string;\n\tkind: MaestroScriptedScenarioAssertionKind;\n\tseverity?: MaestroScenarioSeverity;\n\ttool?: string;\n\ttoolCallId?: string;\n\tpath?: string;\n\tcontains?: string;\n\tequals?: string;\n\teventType?: string;\n\tnote?: string;\n}\n\nexport interface MaestroScriptedScenario {\n\tschemaVersion: typeof MAESTRO_SCRIPTED_SCENARIO_SCHEMA;\n\tid: string;\n\tdescription: string;\n\texpectedOutcome?: MaestroScenarioOutcome;\n\tmetadata: {\n\t\trecordedFrom?: string;\n\t\trecordedAt: string;\n\t\tmodelOriginal?: string;\n\t\ttoolsExpected: string[];\n\t\tauditEvents?: string[];\n\t};\n\tframes: MaestroScriptedScenarioFrame[];\n\tassertions?: MaestroScriptedScenarioAssertion[];\n}\n"]}
|
package/dist/oauth/index.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ export interface OAuthProviderInfo<TProvider extends string = SupportedOAuthProv
|
|
|
16
16
|
export declare function getOAuthProviders(): OAuthProviderInfo[];
|
|
17
17
|
export declare function listOAuthProviders(): SupportedOAuthProvider[];
|
|
18
18
|
export declare function listOAuthLogoutProviders(): OAuthLogoutProvider[];
|
|
19
|
+
export declare function listOAuthLogoutProvidersWithCodexAppServer(): Promise<OAuthLogoutProvider[]>;
|
|
19
20
|
export declare function getOAuthLogoutProviders(): OAuthProviderInfo<OAuthLogoutProvider>[];
|
|
20
21
|
/**
|
|
21
22
|
* Check if a provider has OAuth credentials stored
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/oauth/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/oauth/index.ts"],"names":[],"mappings":"AAeA,OAAO,EACN,iCAAiC,EACjC,2BAA2B,EAI3B,MAAM,cAAc,CAAC;AA8BtB,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,iCAAiC,EAAE,2BAA2B,EAAE,CAAC;AAE1E,MAAM,MAAM,sBAAsB,GAC/B,SAAS,GACT,QAAQ,GACR,cAAc,GACd,gBAAgB,GAChB,mBAAmB,GACnB,oBAAoB,CAAC;AAExB,MAAM,MAAM,6BAA6B,GAAG,WAAW,CAAC;AACxD,MAAM,MAAM,mBAAmB,GAC5B,sBAAsB,GACtB,6BAA6B,CAAC;AAcjC,MAAM,WAAW,iBAAiB,CACjC,SAAS,SAAS,MAAM,GAAG,sBAAsB;IAEjD,EAAE,EAAE,SAAS,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;CACnB;AAgBD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,iBAAiB,EAAE,CAuCvD;AAED,wBAAgB,kBAAkB,IAAI,sBAAsB,EAAE,CAK7D;AAED,wBAAgB,wBAAwB,IAAI,mBAAmB,EAAE,CAMhE;AAED,wBAAsB,0CAA0C,IAAI,OAAO,CAC1E,mBAAmB,EAAE,CACrB,CASA;AAED,wBAAgB,uBAAuB,IAAI,iBAAiB,CAAC,mBAAmB,CAAC,EAAE,CAelF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,sBAAsB,GAAG,OAAO,CAK7E;AAED;;GAEG;AACH,wBAAsB,KAAK,CAC1B,QAAQ,EAAE,sBAAsB,EAChC,OAAO,EAAE;IACR,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACrC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/D,GACC,OAAO,CAAC,IAAI,CAAC,CAkDf;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,QAAQ,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmDzE;AAED;;GAEG;AACH,wBAAsB,YAAY,CACjC,QAAQ,EAAE,sBAAsB,GAC9B,OAAO,CAAC,MAAM,CAAC,CA4DjB;AAED;;GAEG;AACH,wBAAsB,aAAa,CAClC,QAAQ,EAAE,sBAAsB,GAC9B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA2BxB;AAED;;GAEG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAY7D"}
|
package/dist/oauth/index.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { hasOpenAICodexAppServerAccount, loginOpenAICodexAppServer, logoutOpenAICodexAppServer, } from "../codex/auth.js";
|
|
1
2
|
import { assertEvalOpsManagedGatewayEnabled, isEvalOpsManagedGatewayEnabled, } from "../providers/evalops-managed.js";
|
|
2
3
|
import { createLogger } from "../utils/logger.js";
|
|
3
4
|
import { revokeOAuthProviderConnection, syncOAuthProviderConnection, syncStoredOAuthProviderConnection, } from "./connectors.js";
|
|
@@ -75,6 +76,14 @@ export function listOAuthLogoutProviders() {
|
|
|
75
76
|
return listOAuthProvidersFromStorage().filter((provider) => isSupportedOAuthProvider(provider) ||
|
|
76
77
|
isLegacyLogoutOnlyOAuthProvider(provider));
|
|
77
78
|
}
|
|
79
|
+
export async function listOAuthLogoutProvidersWithCodexAppServer() {
|
|
80
|
+
const providers = listOAuthLogoutProviders();
|
|
81
|
+
if (!providers.includes("openai-codex") &&
|
|
82
|
+
(await hasOpenAICodexAppServerAccount())) {
|
|
83
|
+
return [...providers, "openai-codex"];
|
|
84
|
+
}
|
|
85
|
+
return providers;
|
|
86
|
+
}
|
|
78
87
|
export function getOAuthLogoutProviders() {
|
|
79
88
|
const loggedInProviders = new Set(listOAuthLogoutProviders());
|
|
80
89
|
const supported = getOAuthProviders().filter((provider) => loggedInProviders.has(provider.id));
|
|
@@ -109,8 +118,13 @@ export async function login(provider, options) {
|
|
|
109
118
|
shouldSyncConnectorConnection = true;
|
|
110
119
|
break;
|
|
111
120
|
case "openai-codex":
|
|
112
|
-
|
|
113
|
-
|
|
121
|
+
if (options.mode === "responses" || options.mode === "legacy-responses") {
|
|
122
|
+
await loginOpenAICodex(options.onAuthUrl, options.onPromptCode, options.onStatus);
|
|
123
|
+
shouldSyncConnectorConnection = true;
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
await loginOpenAICodexAppServer(options.onAuthUrl, options.onPromptCode, options.onStatus);
|
|
127
|
+
}
|
|
114
128
|
break;
|
|
115
129
|
case "evalops":
|
|
116
130
|
assertEvalOpsManagedGatewayEnabled();
|
|
@@ -143,6 +157,7 @@ export async function login(provider, options) {
|
|
|
143
157
|
*/
|
|
144
158
|
export async function logout(provider) {
|
|
145
159
|
const credentials = loadOAuthCredentials(provider);
|
|
160
|
+
let codexAppServerLogoutError;
|
|
146
161
|
if (isLegacyLogoutOnlyOAuthProvider(provider)) {
|
|
147
162
|
await revokeOAuthProviderConnection(provider, credentials);
|
|
148
163
|
removeOAuthCredentials(provider);
|
|
@@ -159,10 +174,35 @@ export async function logout(provider) {
|
|
|
159
174
|
});
|
|
160
175
|
}
|
|
161
176
|
}
|
|
177
|
+
if (provider === "openai-codex") {
|
|
178
|
+
const shouldLogoutAppServer = !credentials || (await hasOpenAICodexAppServerAccount());
|
|
179
|
+
if (shouldLogoutAppServer) {
|
|
180
|
+
try {
|
|
181
|
+
await logoutOpenAICodexAppServer();
|
|
182
|
+
}
|
|
183
|
+
catch (error) {
|
|
184
|
+
if (!credentials) {
|
|
185
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
186
|
+
throw new Error(`Failed to sign out of Codex app-server: ${message}`);
|
|
187
|
+
}
|
|
188
|
+
codexAppServerLogoutError = error;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
162
192
|
if (provider !== "evalops") {
|
|
163
193
|
await revokeOAuthProviderConnection(provider, credentials);
|
|
164
194
|
}
|
|
165
195
|
removeOAuthCredentials(provider);
|
|
196
|
+
if (codexAppServerLogoutError) {
|
|
197
|
+
const message = codexAppServerLogoutError instanceof Error
|
|
198
|
+
? codexAppServerLogoutError.message
|
|
199
|
+
: String(codexAppServerLogoutError);
|
|
200
|
+
logger.warn("Failed to sign out of Codex app-server", {
|
|
201
|
+
error: message,
|
|
202
|
+
provider,
|
|
203
|
+
});
|
|
204
|
+
throw new Error(`Failed to sign out of Codex app-server; legacy OAuth credentials were removed: ${message}`);
|
|
205
|
+
}
|
|
166
206
|
}
|
|
167
207
|
/**
|
|
168
208
|
* Refresh OAuth token for provider
|
package/dist/oauth/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/oauth/index.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tassertEvalOpsManagedGatewayEnabled,\n\tisEvalOpsManagedGatewayEnabled,\n} from \"../providers/evalops-managed.js\";\nimport { createLogger } from \"../utils/logger.js\";\nimport {\n\trevokeOAuthProviderConnection,\n\tsyncOAuthProviderConnection,\n\tsyncStoredOAuthProviderConnection,\n} from \"./connectors.js\";\nimport {\n\tbuildEvalOpsDelegationEnvironment,\n\tissueEvalOpsDelegationToken,\n\tloginEvalOps,\n\trefreshEvalOpsToken,\n\trevokeEvalOpsToken,\n} from \"./evalops.js\";\nimport {\n\tloginGitHubCopilot,\n\tmigrateGitHubCopilotCredentials,\n\trefreshGitHubCopilotToken,\n} from \"./github-copilot.js\";\nimport {\n\tloginGoogleAntigravity,\n\trefreshGoogleAntigravityToken,\n} from \"./google-antigravity.js\";\nimport {\n\tloginGoogleGeminiCli,\n\trefreshGoogleGeminiCliToken,\n} from \"./google-gemini-cli.js\";\nimport { loginOpenAICodex, refreshOpenAICodexToken } from \"./openai-codex.js\";\nimport {\n\tloginOpenAI,\n\tmigrateOpenAICredentials,\n\trefreshOpenAIToken,\n} from \"./openai.js\";\nimport {\n\ttype OAuthCredentials,\n\tlistOAuthProviders as listOAuthProvidersFromStorage,\n\tloadOAuthCredentials,\n\tremoveOAuthCredentials,\n\tsaveOAuthCredentials,\n} from \"./storage.js\";\n\nconst logger = createLogger(\"oauth\");\n\nexport type { OAuthCredentials } from \"./storage.js\";\nexport { buildEvalOpsDelegationEnvironment, issueEvalOpsDelegationToken };\n\nexport type SupportedOAuthProvider =\n\t| \"evalops\"\n\t| \"openai\"\n\t| \"openai-codex\"\n\t| \"github-copilot\"\n\t| \"google-gemini-cli\"\n\t| \"google-antigravity\";\n\nexport type LegacyLogoutOnlyOAuthProvider = \"anthropic\";\nexport type OAuthLogoutProvider =\n\t| SupportedOAuthProvider\n\t| LegacyLogoutOnlyOAuthProvider;\n\nconst SUPPORTED_OAUTH_PROVIDERS = new Set<SupportedOAuthProvider>([\n\t\"evalops\",\n\t\"openai\",\n\t\"openai-codex\",\n\t\"github-copilot\",\n\t\"google-gemini-cli\",\n\t\"google-antigravity\",\n]);\n\nconst LEGACY_LOGOUT_ONLY_OAUTH_PROVIDERS =\n\tnew Set<LegacyLogoutOnlyOAuthProvider>([\"anthropic\"]);\n\nexport interface OAuthProviderInfo<\n\tTProvider extends string = SupportedOAuthProvider,\n> {\n\tid: TProvider;\n\tname: string;\n\tdescription: string;\n\tavailable: boolean;\n}\n\nfunction isSupportedOAuthProvider(\n\tprovider: string,\n): provider is SupportedOAuthProvider {\n\treturn SUPPORTED_OAUTH_PROVIDERS.has(provider as SupportedOAuthProvider);\n}\n\nfunction isLegacyLogoutOnlyOAuthProvider(\n\tprovider: string,\n): provider is LegacyLogoutOnlyOAuthProvider {\n\treturn LEGACY_LOGOUT_ONLY_OAUTH_PROVIDERS.has(\n\t\tprovider as LegacyLogoutOnlyOAuthProvider,\n\t);\n}\n\n/**\n * Get list of OAuth providers\n */\nexport function getOAuthProviders(): OAuthProviderInfo[] {\n\treturn [\n\t\t{\n\t\t\tid: \"openai-codex\",\n\t\t\tname: \"OpenAI Codex\",\n\t\t\tdescription: \"Codex with ChatGPT Plus/Pro login\",\n\t\t\tavailable: true,\n\t\t},\n\t\t{\n\t\t\tid: \"openai\",\n\t\t\tname: \"OpenAI\",\n\t\t\tdescription: \"OpenAI Platform API via ChatGPT login\",\n\t\t\tavailable: true,\n\t\t},\n\t\t{\n\t\t\tid: \"evalops\",\n\t\t\tname: \"EvalOps Managed\",\n\t\t\tdescription: \"Identity-backed managed gateway access\",\n\t\t\tavailable: isEvalOpsManagedGatewayEnabled(),\n\t\t},\n\t\t{\n\t\t\tid: \"google-gemini-cli\",\n\t\t\tname: \"Google Gemini CLI\",\n\t\t\tdescription: \"Cloud Code Assist OAuth\",\n\t\t\tavailable: true,\n\t\t},\n\t\t{\n\t\t\tid: \"google-antigravity\",\n\t\t\tname: \"Google Antigravity\",\n\t\t\tdescription: \"Antigravity sandbox OAuth\",\n\t\t\tavailable: true,\n\t\t},\n\t\t{\n\t\t\tid: \"github-copilot\",\n\t\t\tname: \"GitHub Copilot\",\n\t\t\tdescription: \"GitHub Copilot subscription\",\n\t\t\tavailable: true,\n\t\t},\n\t];\n}\n\nexport function listOAuthProviders(): SupportedOAuthProvider[] {\n\treturn listOAuthProvidersFromStorage().filter(\n\t\t(provider): provider is SupportedOAuthProvider =>\n\t\t\tisSupportedOAuthProvider(provider),\n\t);\n}\n\nexport function listOAuthLogoutProviders(): OAuthLogoutProvider[] {\n\treturn listOAuthProvidersFromStorage().filter(\n\t\t(provider): provider is OAuthLogoutProvider =>\n\t\t\tisSupportedOAuthProvider(provider) ||\n\t\t\tisLegacyLogoutOnlyOAuthProvider(provider),\n\t);\n}\n\nexport function getOAuthLogoutProviders(): OAuthProviderInfo<OAuthLogoutProvider>[] {\n\tconst loggedInProviders = new Set(listOAuthLogoutProviders());\n\tconst supported = getOAuthProviders().filter((provider) =>\n\t\tloggedInProviders.has(provider.id),\n\t);\n\tconst legacy: OAuthProviderInfo<OAuthLogoutProvider>[] = [];\n\tif (loggedInProviders.has(\"anthropic\")) {\n\t\tlegacy.push({\n\t\t\tid: \"anthropic\",\n\t\t\tname: \"Anthropic OAuth\",\n\t\t\tdescription: \"Legacy Anthropic OAuth credentials (logout only)\",\n\t\t\tavailable: true,\n\t\t});\n\t}\n\treturn [...supported, ...legacy];\n}\n\n/**\n * Check if a provider has OAuth credentials stored\n */\nexport function hasOAuthCredentials(provider: SupportedOAuthProvider): boolean {\n\tif (!SUPPORTED_OAUTH_PROVIDERS.has(provider)) {\n\t\treturn false;\n\t}\n\treturn loadOAuthCredentials(provider) !== null;\n}\n\n/**\n * Login with OAuth provider\n */\nexport async function login(\n\tprovider: SupportedOAuthProvider,\n\toptions: {\n\t\tmode?: string;\n\t\tonAuthUrl: (url: string) => void;\n\t\tonPromptCode?: () => Promise<string>;\n\t\tonStatus?: (status: string) => void;\n\t\tonDeviceCode?: (code: string, verificationUri: string) => void;\n\t},\n): Promise<void> {\n\tlet shouldSyncConnectorConnection = false;\n\tswitch (provider) {\n\t\tcase \"openai\":\n\t\t\tawait loginOpenAI(options.onAuthUrl, options.onStatus);\n\t\t\tshouldSyncConnectorConnection = true;\n\t\t\tbreak;\n\t\tcase \"openai-codex\":\n\t\t\tawait loginOpenAICodex(\n\t\t\t\toptions.onAuthUrl,\n\t\t\t\toptions.onPromptCode,\n\t\t\t\toptions.onStatus,\n\t\t\t);\n\t\t\tshouldSyncConnectorConnection = true;\n\t\t\tbreak;\n\t\tcase \"evalops\":\n\t\t\tassertEvalOpsManagedGatewayEnabled();\n\t\t\tawait loginEvalOps(options.onAuthUrl, options.onStatus);\n\t\t\tbreak;\n\t\tcase \"google-gemini-cli\":\n\t\t\tawait loginGoogleGeminiCli(options.onAuthUrl, options.onStatus);\n\t\t\tshouldSyncConnectorConnection = true;\n\t\t\tbreak;\n\t\tcase \"google-antigravity\":\n\t\t\tawait loginGoogleAntigravity(options.onAuthUrl, options.onStatus);\n\t\t\tshouldSyncConnectorConnection = true;\n\t\t\tbreak;\n\t\tcase \"github-copilot\":\n\t\t\tif (!options.onDeviceCode) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"GitHub Copilot requires onDeviceCode callback for device flow\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tawait loginGitHubCopilot(options.onDeviceCode, options.onStatus);\n\t\t\tshouldSyncConnectorConnection = true;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow new Error(`Unknown OAuth provider: ${provider}`);\n\t}\n\tif (shouldSyncConnectorConnection) {\n\t\tawait syncStoredOAuthProviderConnection(provider);\n\t}\n}\n\n/**\n * Logout from OAuth provider\n */\nexport async function logout(provider: OAuthLogoutProvider): Promise<void> {\n\tconst credentials = loadOAuthCredentials(provider);\n\tif (isLegacyLogoutOnlyOAuthProvider(provider)) {\n\t\tawait revokeOAuthProviderConnection(provider, credentials);\n\t\tremoveOAuthCredentials(provider);\n\t\treturn;\n\t}\n\tif (provider === \"evalops\" && credentials?.refresh) {\n\t\ttry {\n\t\t\tawait revokeEvalOpsToken(credentials.refresh, credentials.metadata);\n\t\t} catch (error) {\n\t\t\tlogger.warn(\"Failed to revoke EvalOps refresh token during logout\", {\n\t\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t\t\tprovider,\n\t\t\t});\n\t\t}\n\t}\n\tif (provider !== \"evalops\") {\n\t\tawait revokeOAuthProviderConnection(provider, credentials);\n\t}\n\tremoveOAuthCredentials(provider);\n}\n\n/**\n * Refresh OAuth token for provider\n */\nexport async function refreshToken(\n\tprovider: SupportedOAuthProvider,\n): Promise<string> {\n\tconst credentials = loadOAuthCredentials(provider);\n\tif (!credentials) {\n\t\tthrow new Error(`No OAuth credentials found for ${provider}`);\n\t}\n\n\tlet newCredentials: OAuthCredentials;\n\n\tswitch (provider) {\n\t\tcase \"openai\":\n\t\t\tnewCredentials = await refreshOpenAIToken(\n\t\t\t\tcredentials.refresh,\n\t\t\t\tcredentials.metadata,\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"openai-codex\":\n\t\t\tnewCredentials = await refreshOpenAICodexToken(\n\t\t\t\tcredentials.refresh,\n\t\t\t\tcredentials.metadata,\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"evalops\":\n\t\t\tnewCredentials = await refreshEvalOpsToken(\n\t\t\t\tcredentials.refresh,\n\t\t\t\tcredentials.metadata,\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"google-gemini-cli\":\n\t\t\tnewCredentials = await refreshGoogleGeminiCliToken(\n\t\t\t\tcredentials.refresh,\n\t\t\t\tcredentials.metadata,\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"google-antigravity\":\n\t\t\tnewCredentials = await refreshGoogleAntigravityToken(\n\t\t\t\tcredentials.refresh,\n\t\t\t\tcredentials.metadata,\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"github-copilot\":\n\t\t\tnewCredentials = await refreshGitHubCopilotToken(\n\t\t\t\tcredentials.refresh,\n\t\t\t\tcredentials.metadata,\n\t\t\t);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow new Error(`Unknown OAuth provider: ${provider}`);\n\t}\n\n\tif (provider !== \"evalops\") {\n\t\tnewCredentials = await syncOAuthProviderConnection(\n\t\t\tprovider,\n\t\t\tnewCredentials,\n\t\t);\n\t}\n\n\t// Save new credentials\n\tsaveOAuthCredentials(provider, newCredentials);\n\n\treturn newCredentials.access;\n}\n\n/**\n * Get OAuth token for provider (auto-refreshes if expired)\n */\nexport async function getOAuthToken(\n\tprovider: SupportedOAuthProvider,\n): Promise<string | null> {\n\tif (!SUPPORTED_OAUTH_PROVIDERS.has(provider)) {\n\t\treturn null;\n\t}\n\tconst credentials = loadOAuthCredentials(provider);\n\tif (!credentials) {\n\t\treturn null;\n\t}\n\n\t// Check if token is expired (with 1 min buffer)\n\tif (Date.now() >= credentials.expires - 60_000) {\n\t\t// Token expired or expiring soon - refresh it\n\t\ttry {\n\t\t\treturn await refreshToken(provider);\n\t\t} catch (error) {\n\t\t\tlogger.error(\n\t\t\t\t\"Failed to refresh OAuth token\",\n\t\t\t\terror instanceof Error ? error : new Error(String(error)),\n\t\t\t\t{ provider },\n\t\t\t);\n\t\t\t// Remove invalid credentials\n\t\t\tremoveOAuthCredentials(provider);\n\t\t\treturn null;\n\t\t}\n\t}\n\n\treturn credentials.access;\n}\n\n/**\n * Migrate old provider-specific OAuth credentials to new generic format\n */\nexport async function migrateOAuthCredentials(): Promise<void> {\n\t// Migrate OpenAI credentials\n\tconst openaiMigrated = await migrateOpenAICredentials();\n\tif (openaiMigrated) {\n\t\tlogger.info(\"Migrated OpenAI OAuth credentials to new format\");\n\t}\n\n\t// Migrate GitHub Copilot credentials from environment\n\tconst copilotMigrated = await migrateGitHubCopilotCredentials();\n\tif (copilotMigrated) {\n\t\tlogger.info(\"Migrated GitHub Copilot credentials from environment\");\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/oauth/index.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\thasOpenAICodexAppServerAccount,\n\tloginOpenAICodexAppServer,\n\tlogoutOpenAICodexAppServer,\n} from \"../codex/auth.js\";\nimport {\n\tassertEvalOpsManagedGatewayEnabled,\n\tisEvalOpsManagedGatewayEnabled,\n} from \"../providers/evalops-managed.js\";\nimport { createLogger } from \"../utils/logger.js\";\nimport {\n\trevokeOAuthProviderConnection,\n\tsyncOAuthProviderConnection,\n\tsyncStoredOAuthProviderConnection,\n} from \"./connectors.js\";\nimport {\n\tbuildEvalOpsDelegationEnvironment,\n\tissueEvalOpsDelegationToken,\n\tloginEvalOps,\n\trefreshEvalOpsToken,\n\trevokeEvalOpsToken,\n} from \"./evalops.js\";\nimport {\n\tloginGitHubCopilot,\n\tmigrateGitHubCopilotCredentials,\n\trefreshGitHubCopilotToken,\n} from \"./github-copilot.js\";\nimport {\n\tloginGoogleAntigravity,\n\trefreshGoogleAntigravityToken,\n} from \"./google-antigravity.js\";\nimport {\n\tloginGoogleGeminiCli,\n\trefreshGoogleGeminiCliToken,\n} from \"./google-gemini-cli.js\";\nimport { loginOpenAICodex, refreshOpenAICodexToken } from \"./openai-codex.js\";\nimport {\n\tloginOpenAI,\n\tmigrateOpenAICredentials,\n\trefreshOpenAIToken,\n} from \"./openai.js\";\nimport {\n\ttype OAuthCredentials,\n\tlistOAuthProviders as listOAuthProvidersFromStorage,\n\tloadOAuthCredentials,\n\tremoveOAuthCredentials,\n\tsaveOAuthCredentials,\n} from \"./storage.js\";\n\nconst logger = createLogger(\"oauth\");\n\nexport type { OAuthCredentials } from \"./storage.js\";\nexport { buildEvalOpsDelegationEnvironment, issueEvalOpsDelegationToken };\n\nexport type SupportedOAuthProvider =\n\t| \"evalops\"\n\t| \"openai\"\n\t| \"openai-codex\"\n\t| \"github-copilot\"\n\t| \"google-gemini-cli\"\n\t| \"google-antigravity\";\n\nexport type LegacyLogoutOnlyOAuthProvider = \"anthropic\";\nexport type OAuthLogoutProvider =\n\t| SupportedOAuthProvider\n\t| LegacyLogoutOnlyOAuthProvider;\n\nconst SUPPORTED_OAUTH_PROVIDERS = new Set<SupportedOAuthProvider>([\n\t\"evalops\",\n\t\"openai\",\n\t\"openai-codex\",\n\t\"github-copilot\",\n\t\"google-gemini-cli\",\n\t\"google-antigravity\",\n]);\n\nconst LEGACY_LOGOUT_ONLY_OAUTH_PROVIDERS =\n\tnew Set<LegacyLogoutOnlyOAuthProvider>([\"anthropic\"]);\n\nexport interface OAuthProviderInfo<\n\tTProvider extends string = SupportedOAuthProvider,\n> {\n\tid: TProvider;\n\tname: string;\n\tdescription: string;\n\tavailable: boolean;\n}\n\nfunction isSupportedOAuthProvider(\n\tprovider: string,\n): provider is SupportedOAuthProvider {\n\treturn SUPPORTED_OAUTH_PROVIDERS.has(provider as SupportedOAuthProvider);\n}\n\nfunction isLegacyLogoutOnlyOAuthProvider(\n\tprovider: string,\n): provider is LegacyLogoutOnlyOAuthProvider {\n\treturn LEGACY_LOGOUT_ONLY_OAUTH_PROVIDERS.has(\n\t\tprovider as LegacyLogoutOnlyOAuthProvider,\n\t);\n}\n\n/**\n * Get list of OAuth providers\n */\nexport function getOAuthProviders(): OAuthProviderInfo[] {\n\treturn [\n\t\t{\n\t\t\tid: \"openai-codex\",\n\t\t\tname: \"OpenAI Codex\",\n\t\t\tdescription: \"Codex with ChatGPT Plus/Pro login\",\n\t\t\tavailable: true,\n\t\t},\n\t\t{\n\t\t\tid: \"openai\",\n\t\t\tname: \"OpenAI\",\n\t\t\tdescription: \"OpenAI Platform API via ChatGPT login\",\n\t\t\tavailable: true,\n\t\t},\n\t\t{\n\t\t\tid: \"evalops\",\n\t\t\tname: \"EvalOps Managed\",\n\t\t\tdescription: \"Identity-backed managed gateway access\",\n\t\t\tavailable: isEvalOpsManagedGatewayEnabled(),\n\t\t},\n\t\t{\n\t\t\tid: \"google-gemini-cli\",\n\t\t\tname: \"Google Gemini CLI\",\n\t\t\tdescription: \"Cloud Code Assist OAuth\",\n\t\t\tavailable: true,\n\t\t},\n\t\t{\n\t\t\tid: \"google-antigravity\",\n\t\t\tname: \"Google Antigravity\",\n\t\t\tdescription: \"Antigravity sandbox OAuth\",\n\t\t\tavailable: true,\n\t\t},\n\t\t{\n\t\t\tid: \"github-copilot\",\n\t\t\tname: \"GitHub Copilot\",\n\t\t\tdescription: \"GitHub Copilot subscription\",\n\t\t\tavailable: true,\n\t\t},\n\t];\n}\n\nexport function listOAuthProviders(): SupportedOAuthProvider[] {\n\treturn listOAuthProvidersFromStorage().filter(\n\t\t(provider): provider is SupportedOAuthProvider =>\n\t\t\tisSupportedOAuthProvider(provider),\n\t);\n}\n\nexport function listOAuthLogoutProviders(): OAuthLogoutProvider[] {\n\treturn listOAuthProvidersFromStorage().filter(\n\t\t(provider): provider is OAuthLogoutProvider =>\n\t\t\tisSupportedOAuthProvider(provider) ||\n\t\t\tisLegacyLogoutOnlyOAuthProvider(provider),\n\t);\n}\n\nexport async function listOAuthLogoutProvidersWithCodexAppServer(): Promise<\n\tOAuthLogoutProvider[]\n> {\n\tconst providers = listOAuthLogoutProviders();\n\tif (\n\t\t!providers.includes(\"openai-codex\") &&\n\t\t(await hasOpenAICodexAppServerAccount())\n\t) {\n\t\treturn [...providers, \"openai-codex\"];\n\t}\n\treturn providers;\n}\n\nexport function getOAuthLogoutProviders(): OAuthProviderInfo<OAuthLogoutProvider>[] {\n\tconst loggedInProviders = new Set(listOAuthLogoutProviders());\n\tconst supported = getOAuthProviders().filter((provider) =>\n\t\tloggedInProviders.has(provider.id),\n\t);\n\tconst legacy: OAuthProviderInfo<OAuthLogoutProvider>[] = [];\n\tif (loggedInProviders.has(\"anthropic\")) {\n\t\tlegacy.push({\n\t\t\tid: \"anthropic\",\n\t\t\tname: \"Anthropic OAuth\",\n\t\t\tdescription: \"Legacy Anthropic OAuth credentials (logout only)\",\n\t\t\tavailable: true,\n\t\t});\n\t}\n\treturn [...supported, ...legacy];\n}\n\n/**\n * Check if a provider has OAuth credentials stored\n */\nexport function hasOAuthCredentials(provider: SupportedOAuthProvider): boolean {\n\tif (!SUPPORTED_OAUTH_PROVIDERS.has(provider)) {\n\t\treturn false;\n\t}\n\treturn loadOAuthCredentials(provider) !== null;\n}\n\n/**\n * Login with OAuth provider\n */\nexport async function login(\n\tprovider: SupportedOAuthProvider,\n\toptions: {\n\t\tmode?: string;\n\t\tonAuthUrl: (url: string) => void;\n\t\tonPromptCode?: () => Promise<string>;\n\t\tonStatus?: (status: string) => void;\n\t\tonDeviceCode?: (code: string, verificationUri: string) => void;\n\t},\n): Promise<void> {\n\tlet shouldSyncConnectorConnection = false;\n\tswitch (provider) {\n\t\tcase \"openai\":\n\t\t\tawait loginOpenAI(options.onAuthUrl, options.onStatus);\n\t\t\tshouldSyncConnectorConnection = true;\n\t\t\tbreak;\n\t\tcase \"openai-codex\":\n\t\t\tif (options.mode === \"responses\" || options.mode === \"legacy-responses\") {\n\t\t\t\tawait loginOpenAICodex(\n\t\t\t\t\toptions.onAuthUrl,\n\t\t\t\t\toptions.onPromptCode,\n\t\t\t\t\toptions.onStatus,\n\t\t\t\t);\n\t\t\t\tshouldSyncConnectorConnection = true;\n\t\t\t} else {\n\t\t\t\tawait loginOpenAICodexAppServer(\n\t\t\t\t\toptions.onAuthUrl,\n\t\t\t\t\toptions.onPromptCode,\n\t\t\t\t\toptions.onStatus,\n\t\t\t\t);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase \"evalops\":\n\t\t\tassertEvalOpsManagedGatewayEnabled();\n\t\t\tawait loginEvalOps(options.onAuthUrl, options.onStatus);\n\t\t\tbreak;\n\t\tcase \"google-gemini-cli\":\n\t\t\tawait loginGoogleGeminiCli(options.onAuthUrl, options.onStatus);\n\t\t\tshouldSyncConnectorConnection = true;\n\t\t\tbreak;\n\t\tcase \"google-antigravity\":\n\t\t\tawait loginGoogleAntigravity(options.onAuthUrl, options.onStatus);\n\t\t\tshouldSyncConnectorConnection = true;\n\t\t\tbreak;\n\t\tcase \"github-copilot\":\n\t\t\tif (!options.onDeviceCode) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"GitHub Copilot requires onDeviceCode callback for device flow\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tawait loginGitHubCopilot(options.onDeviceCode, options.onStatus);\n\t\t\tshouldSyncConnectorConnection = true;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow new Error(`Unknown OAuth provider: ${provider}`);\n\t}\n\tif (shouldSyncConnectorConnection) {\n\t\tawait syncStoredOAuthProviderConnection(provider);\n\t}\n}\n\n/**\n * Logout from OAuth provider\n */\nexport async function logout(provider: OAuthLogoutProvider): Promise<void> {\n\tconst credentials = loadOAuthCredentials(provider);\n\tlet codexAppServerLogoutError: unknown;\n\tif (isLegacyLogoutOnlyOAuthProvider(provider)) {\n\t\tawait revokeOAuthProviderConnection(provider, credentials);\n\t\tremoveOAuthCredentials(provider);\n\t\treturn;\n\t}\n\tif (provider === \"evalops\" && credentials?.refresh) {\n\t\ttry {\n\t\t\tawait revokeEvalOpsToken(credentials.refresh, credentials.metadata);\n\t\t} catch (error) {\n\t\t\tlogger.warn(\"Failed to revoke EvalOps refresh token during logout\", {\n\t\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t\t\tprovider,\n\t\t\t});\n\t\t}\n\t}\n\tif (provider === \"openai-codex\") {\n\t\tconst shouldLogoutAppServer =\n\t\t\t!credentials || (await hasOpenAICodexAppServerAccount());\n\t\tif (shouldLogoutAppServer) {\n\t\t\ttry {\n\t\t\t\tawait logoutOpenAICodexAppServer();\n\t\t\t} catch (error) {\n\t\t\t\tif (!credentials) {\n\t\t\t\t\tconst message =\n\t\t\t\t\t\terror instanceof Error ? error.message : String(error);\n\t\t\t\t\tthrow new Error(`Failed to sign out of Codex app-server: ${message}`);\n\t\t\t\t}\n\t\t\t\tcodexAppServerLogoutError = error;\n\t\t\t}\n\t\t}\n\t}\n\tif (provider !== \"evalops\") {\n\t\tawait revokeOAuthProviderConnection(provider, credentials);\n\t}\n\tremoveOAuthCredentials(provider);\n\tif (codexAppServerLogoutError) {\n\t\tconst message =\n\t\t\tcodexAppServerLogoutError instanceof Error\n\t\t\t\t? codexAppServerLogoutError.message\n\t\t\t\t: String(codexAppServerLogoutError);\n\t\tlogger.warn(\"Failed to sign out of Codex app-server\", {\n\t\t\terror: message,\n\t\t\tprovider,\n\t\t});\n\t\tthrow new Error(\n\t\t\t`Failed to sign out of Codex app-server; legacy OAuth credentials were removed: ${message}`,\n\t\t);\n\t}\n}\n\n/**\n * Refresh OAuth token for provider\n */\nexport async function refreshToken(\n\tprovider: SupportedOAuthProvider,\n): Promise<string> {\n\tconst credentials = loadOAuthCredentials(provider);\n\tif (!credentials) {\n\t\tthrow new Error(`No OAuth credentials found for ${provider}`);\n\t}\n\n\tlet newCredentials: OAuthCredentials;\n\n\tswitch (provider) {\n\t\tcase \"openai\":\n\t\t\tnewCredentials = await refreshOpenAIToken(\n\t\t\t\tcredentials.refresh,\n\t\t\t\tcredentials.metadata,\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"openai-codex\":\n\t\t\tnewCredentials = await refreshOpenAICodexToken(\n\t\t\t\tcredentials.refresh,\n\t\t\t\tcredentials.metadata,\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"evalops\":\n\t\t\tnewCredentials = await refreshEvalOpsToken(\n\t\t\t\tcredentials.refresh,\n\t\t\t\tcredentials.metadata,\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"google-gemini-cli\":\n\t\t\tnewCredentials = await refreshGoogleGeminiCliToken(\n\t\t\t\tcredentials.refresh,\n\t\t\t\tcredentials.metadata,\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"google-antigravity\":\n\t\t\tnewCredentials = await refreshGoogleAntigravityToken(\n\t\t\t\tcredentials.refresh,\n\t\t\t\tcredentials.metadata,\n\t\t\t);\n\t\t\tbreak;\n\t\tcase \"github-copilot\":\n\t\t\tnewCredentials = await refreshGitHubCopilotToken(\n\t\t\t\tcredentials.refresh,\n\t\t\t\tcredentials.metadata,\n\t\t\t);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow new Error(`Unknown OAuth provider: ${provider}`);\n\t}\n\n\tif (provider !== \"evalops\") {\n\t\tnewCredentials = await syncOAuthProviderConnection(\n\t\t\tprovider,\n\t\t\tnewCredentials,\n\t\t);\n\t}\n\n\t// Save new credentials\n\tsaveOAuthCredentials(provider, newCredentials);\n\n\treturn newCredentials.access;\n}\n\n/**\n * Get OAuth token for provider (auto-refreshes if expired)\n */\nexport async function getOAuthToken(\n\tprovider: SupportedOAuthProvider,\n): Promise<string | null> {\n\tif (!SUPPORTED_OAUTH_PROVIDERS.has(provider)) {\n\t\treturn null;\n\t}\n\tconst credentials = loadOAuthCredentials(provider);\n\tif (!credentials) {\n\t\treturn null;\n\t}\n\n\t// Check if token is expired (with 1 min buffer)\n\tif (Date.now() >= credentials.expires - 60_000) {\n\t\t// Token expired or expiring soon - refresh it\n\t\ttry {\n\t\t\treturn await refreshToken(provider);\n\t\t} catch (error) {\n\t\t\tlogger.error(\n\t\t\t\t\"Failed to refresh OAuth token\",\n\t\t\t\terror instanceof Error ? error : new Error(String(error)),\n\t\t\t\t{ provider },\n\t\t\t);\n\t\t\t// Remove invalid credentials\n\t\t\tremoveOAuthCredentials(provider);\n\t\t\treturn null;\n\t\t}\n\t}\n\n\treturn credentials.access;\n}\n\n/**\n * Migrate old provider-specific OAuth credentials to new generic format\n */\nexport async function migrateOAuthCredentials(): Promise<void> {\n\t// Migrate OpenAI credentials\n\tconst openaiMigrated = await migrateOpenAICredentials();\n\tif (openaiMigrated) {\n\t\tlogger.info(\"Migrated OpenAI OAuth credentials to new format\");\n\t}\n\n\t// Migrate GitHub Copilot credentials from environment\n\tconst copilotMigrated = await migrateGitHubCopilotCredentials();\n\tif (copilotMigrated) {\n\t\tlogger.info(\"Migrated GitHub Copilot credentials from environment\");\n\t}\n}\n"]}
|
|
@@ -57,7 +57,7 @@ export interface OperatingPlaneRun {
|
|
|
57
57
|
tool_calls?: OperatingPlaneToolCall[];
|
|
58
58
|
approvals?: OperatingPlaneApproval[];
|
|
59
59
|
usage?: OperatingPlaneUsage;
|
|
60
|
-
|
|
60
|
+
runtime_signals?: OperatingPlaneRuntimeSignals;
|
|
61
61
|
canonical_attributes?: Record<string, unknown>;
|
|
62
62
|
}
|
|
63
63
|
export interface OperatingPlaneIdentity {
|
|
@@ -147,8 +147,8 @@ export interface OperatingPlaneRuntimeSignals {
|
|
|
147
147
|
trace_linked: boolean;
|
|
148
148
|
evidence_linked: boolean;
|
|
149
149
|
cost_attributed: boolean;
|
|
150
|
-
|
|
151
|
-
|
|
150
|
+
observed_signals?: string[];
|
|
151
|
+
missing_signals?: string[];
|
|
152
152
|
}
|
|
153
153
|
export declare function resolveOperatingPlaneServiceConfig(): Promise<PlatformServiceConfig | null>;
|
|
154
154
|
export declare function buildOperatingPlaneRunsUrl(config: Pick<PlatformServiceConfig, "baseUrl" | "workspaceId">, query?: OperatingPlaneRunQuery): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operating-plane-client.d.ts","sourceRoot":"","sources":["../../src/platform/operating-plane-client.ts"],"names":[],"mappings":"AAMA,OAAO,EACN,KAAK,qBAAqB,EAI1B,MAAM,aAAa,CAAC;AA6DrB,MAAM,MAAM,sBAAsB,GAC/B,OAAO,GACP,eAAe,GACf,MAAM,GACN,OAAO,GACP,SAAS,GACT,OAAO,GACP,kBAAkB,GAClB,QAAQ,GACR,OAAO,GACP,OAAO,GACP,QAAQ,CAAC;AAEZ,MAAM,WAAW,sBAAsB;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gCAAgC;IAChD,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,MAAM,CAAC,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,WAAW,wBAAwB;IACxC,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,IAAI,EAAE,iBAAiB,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,aAAa,CAAC,EAAE,sBAAsB,EAAE,CAAC;IACzC,UAAU,CAAC,EAAE,sBAAsB,EAAE,CAAC;IACtC,WAAW,CAAC,EAAE,uBAAuB,EAAE,CAAC;IACxC,UAAU,CAAC,EAAE,sBAAsB,EAAE,CAAC;IACtC,SAAS,CAAC,EAAE,sBAAsB,EAAE,CAAC;IACrC,KAAK,CAAC,EAAE,mBAAmB,CAAC;IAC5B,
|
|
1
|
+
{"version":3,"file":"operating-plane-client.d.ts","sourceRoot":"","sources":["../../src/platform/operating-plane-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operating-plane-client.js","sourceRoot":"","sources":["../../src/platform/operating-plane-client.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tEVALOPS_ACCESS_TOKEN_ENV_VARS,\n\tEVALOPS_ORGANIZATION_ID_ENV_VARS,\n\tEVALOPS_WORKSPACE_ID_ENV_VARS,\n} from \"../evalops/env-aliases.js\";\nimport { fetchDownstream } from \"../utils/downstream-http.js\";\nimport {\n\ttype PlatformServiceConfig,\n\tbuildPlatformJsonHeaders,\n\tresolvePlatformServiceConfig,\n\ttrimString,\n} from \"./client.js\";\nimport { PLATFORM_HTTP_ROUTES } from \"./core-services.js\";\n\nconst DEFAULT_TIMEOUT_MS = 2_000;\nconst DEFAULT_MAX_ATTEMPTS = 2;\nconst OPERATING_PLANE_RUNS_PATH =\n\tPLATFORM_HTTP_ROUTES.agentRuntime.operatingPlaneRuns;\n\nconst OPERATING_PLANE_BASE_URL_ENV_VARS = [\n\t\"MAESTRO_AGENT_OPERATING_PLANE_URL\",\n\t\"AGENT_OPERATING_PLANE_URL\",\n\t\"MAESTRO_AGENT_RUNTIME_SERVICE_URL\",\n\t\"AGENT_RUNTIME_SERVICE_URL\",\n] as const;\n\nconst OPERATING_PLANE_TOKEN_ENV_VARS = [\n\t\"MAESTRO_AGENT_OPERATING_PLANE_TOKEN\",\n\t\"AGENT_OPERATING_PLANE_TOKEN\",\n\t\"MAESTRO_AGENT_RUNTIME_SERVICE_TOKEN\",\n\t\"AGENT_RUNTIME_SERVICE_TOKEN\",\n\t...EVALOPS_ACCESS_TOKEN_ENV_VARS,\n] as const;\n\nconst OPERATING_PLANE_ORGANIZATION_ENV_VARS = [\n\t\"MAESTRO_AGENT_OPERATING_PLANE_ORG_ID\",\n\t\"AGENT_OPERATING_PLANE_ORGANIZATION_ID\",\n\t\"MAESTRO_AGENT_RUNTIME_ORG_ID\",\n\t\"AGENT_RUNTIME_ORGANIZATION_ID\",\n\t...EVALOPS_ORGANIZATION_ID_ENV_VARS,\n] as const;\n\nconst OPERATING_PLANE_WORKSPACE_ENV_VARS = [\n\t\"MAESTRO_AGENT_OPERATING_PLANE_WORKSPACE_ID\",\n\t\"AGENT_OPERATING_PLANE_WORKSPACE_ID\",\n\t\"MAESTRO_AGENT_RUNTIME_WORKSPACE_ID\",\n\t\"AGENT_RUNTIME_WORKSPACE_ID\",\n\t\"MAESTRO_WORKSPACE_ID\",\n\t...EVALOPS_WORKSPACE_ID_ENV_VARS.filter(\n\t\t(name) => name !== \"MAESTRO_WORKSPACE_ID\",\n\t),\n] as const;\n\nconst OPERATING_PLANE_TIMEOUT_ENV_VARS = [\n\t\"MAESTRO_AGENT_OPERATING_PLANE_TIMEOUT_MS\",\n\t\"AGENT_OPERATING_PLANE_TIMEOUT_MS\",\n\t\"MAESTRO_AGENT_RUNTIME_TIMEOUT_MS\",\n\t\"AGENT_RUNTIME_SERVICE_TIMEOUT_MS\",\n] as const;\n\nconst OPERATING_PLANE_MAX_ATTEMPTS_ENV_VARS = [\n\t\"MAESTRO_AGENT_OPERATING_PLANE_MAX_ATTEMPTS\",\n\t\"AGENT_OPERATING_PLANE_MAX_ATTEMPTS\",\n\t\"MAESTRO_AGENT_RUNTIME_MAX_ATTEMPTS\",\n\t\"AGENT_RUNTIME_SERVICE_MAX_ATTEMPTS\",\n] as const;\n\nconst OPERATING_PLANE_BASE_URL_SUFFIXES = [\n\tOPERATING_PLANE_RUNS_PATH,\n\t\"/v1/agent-operating-plane\",\n] as const;\n\nexport type OperatingPlaneAudience =\n\t| \"agent\"\n\t| \"trigger_actor\"\n\t| \"user\"\n\t| \"actor\"\n\t| \"channel\"\n\t| \"slack\"\n\t| \"workspace_admins\"\n\t| \"admins\"\n\t| \"admin\"\n\t| \"audit\"\n\t| \"system\";\n\nexport interface OperatingPlaneRunQuery {\n\tworkspaceId?: string;\n\trunId?: string;\n\tworkEnvelopeId?: string;\n\tautonomySessionId?: string;\n\tagentId?: string;\n\tthreadId?: string;\n\tchannelThreadId?: string;\n\ttraceId?: string;\n\tsessionId?: string;\n\tevidenceId?: string;\n\tgatewayAuthenticatedSubject?: string;\n\tauthSubject?: string;\n\taudience?: OperatingPlaneAudience;\n\tincludeGates?: boolean;\n\tlimit?: number;\n}\n\nexport interface InspectOperatingPlaneRunsOptions {\n\tconfig?: PlatformServiceConfig;\n\tsignal?: AbortSignal;\n}\n\nexport interface OperatingPlaneInspection {\n\tcontract_version: string;\n\tgenerated_at: string;\n\tunavailable_sources?: string[];\n\truns: OperatingPlaneRun[];\n}\n\nexport interface OperatingPlaneRun {\n\tagent_run_id: string;\n\tagent_run_step_id?: string;\n\ttitle: string;\n\tstatus: string;\n\tsurface: string;\n\tchannel_thread_id?: string;\n\ttrace_id?: string;\n\ttraceparent?: string;\n\ttracestate?: string;\n\ttool_execution_id?: string;\n\tapproval_request_id?: string;\n\tstarted_at?: string;\n\tupdated_at?: string;\n\tidentity?: OperatingPlaneIdentity;\n\tdata_classification?: string;\n\tretention_class?: string;\n\tshareability?: string;\n\tsafe_summary_present?: boolean;\n\tredaction_count?: number;\n\twithholding_reasons?: string[];\n\tunavailable_sources?: string[];\n\trelease_gate?: OperatingPlaneGate;\n\treplay_gate?: OperatingPlaneGate;\n\tevidence_refs?: OperatingPlaneEvidence[];\n\twork_items?: OperatingPlaneWorkItem[];\n\tmodel_calls?: OperatingPlaneModelCall[];\n\ttool_calls?: OperatingPlaneToolCall[];\n\tapprovals?: OperatingPlaneApproval[];\n\tusage?: OperatingPlaneUsage;\n\tvalue_proof?: OperatingPlaneRuntimeSignals;\n\tcanonical_attributes?: Record<string, unknown>;\n}\n\nexport interface OperatingPlaneIdentity {\n\tworkspace_id: string;\n\ttenant_id?: string;\n\tactor_id?: string;\n\tprincipal_id?: string;\n\tagent_id?: string;\n\tagent_instance_id?: string;\n\tgateway_authenticated_subject?: string;\n\tgateway_authenticated_user_subject?: string;\n\tgateway_authenticated_service?: string;\n\tgateway_authenticated_token_type?: string;\n}\n\nexport interface OperatingPlaneGate {\n\tid: string;\n\tlabel: string;\n\tstate: string;\n\treason: string;\n\tlast_checked_at: string;\n}\n\nexport interface OperatingPlaneEvidence {\n\tid: string;\n\tsource: string;\n\tkind: string;\n\turi?: string;\n\trevision?: string;\n\tavailable: boolean;\n\tsummary: string;\n}\n\nexport interface OperatingPlaneWorkItem {\n\tid?: string;\n\tparent_id?: string;\n\tkind: string;\n\tstate: string;\n\ttitle?: string;\n\tgoal?: string;\n\tnext_action?: string;\n\tblocker?: string;\n\twait_id?: string;\n\ttool_execution_id?: string;\n\tevidence_refs?: string[];\n\tcompletion_gate?: string;\n\tupdated_at?: string;\n}\n\nexport interface OperatingPlaneModelCall {\n\tid?: string;\n\tprovider?: string;\n\tmodel?: string;\n\tstep_id?: string;\n\ttool_call_id?: string;\n\tcost_id?: string;\n\ttrace_id?: string;\n\tinput_tokens?: number;\n\toutput_tokens?: number;\n\ttotal_tokens?: number;\n\testimated_cost_micros?: number;\n\tcurrency?: string;\n}\n\nexport interface OperatingPlaneToolCall {\n\ttool_execution_id: string;\n\tstep_id?: string;\n\tstate?: string;\n\tapproval_request_id?: string;\n}\n\nexport interface OperatingPlaneApproval {\n\tapproval_request_id: string;\n\twait_id?: string;\n\tstate?: string;\n\treason?: string;\n\tavailable: boolean;\n}\n\nexport interface OperatingPlaneUsage {\n\tinput_tokens?: number;\n\toutput_tokens?: number;\n\ttotal_tokens?: number;\n\testimated_cost_micros?: number;\n\tcurrency?: string;\n}\n\nexport interface OperatingPlaneRuntimeSignals {\n\toperation_id: string;\n\toperator_summary: string;\n\tidentity_bound: boolean;\n\tmodel_observed: boolean;\n\ttool_observed: boolean;\n\tapproval_observed: boolean;\n\ttrace_linked: boolean;\n\tevidence_linked: boolean;\n\tcost_attributed: boolean;\n\tproof_points?: string[];\n\tmissing_proof?: string[];\n}\n\nexport async function resolveOperatingPlaneServiceConfig(): Promise<PlatformServiceConfig | null> {\n\treturn await resolvePlatformServiceConfig({\n\t\tbaseUrlEnvVars: OPERATING_PLANE_BASE_URL_ENV_VARS,\n\t\ttokenEnvVars: OPERATING_PLANE_TOKEN_ENV_VARS,\n\t\torganizationEnvVars: OPERATING_PLANE_ORGANIZATION_ENV_VARS,\n\t\tworkspaceEnvVars: OPERATING_PLANE_WORKSPACE_ENV_VARS,\n\t\ttimeoutEnvVars: OPERATING_PLANE_TIMEOUT_ENV_VARS,\n\t\tmaxAttemptsEnvVars: OPERATING_PLANE_MAX_ATTEMPTS_ENV_VARS,\n\t\tbaseUrlSuffixes: OPERATING_PLANE_BASE_URL_SUFFIXES,\n\t\tdefaultTimeoutMs: DEFAULT_TIMEOUT_MS,\n\t\tdefaultMaxAttempts: DEFAULT_MAX_ATTEMPTS,\n\t\trequireOrganizationId: true,\n\t\trequireToken: true,\n\t});\n}\n\nexport function buildOperatingPlaneRunsUrl(\n\tconfig: Pick<PlatformServiceConfig, \"baseUrl\" | \"workspaceId\">,\n\tquery: OperatingPlaneRunQuery = {},\n): string {\n\tconst url = new URL(\n\t\t`${config.baseUrl.trim().replace(/\\/+$/u, \"\")}${OPERATING_PLANE_RUNS_PATH}`,\n\t);\n\tconst params = url.searchParams;\n\n\taddStringParam(\n\t\tparams,\n\t\t\"workspace_id\",\n\t\tquery.workspaceId ?? config.workspaceId,\n\t);\n\taddStringParam(params, \"run_id\", query.runId);\n\taddStringParam(params, \"work_envelope_id\", query.workEnvelopeId);\n\taddStringParam(params, \"autonomy_session_id\", query.autonomySessionId);\n\taddStringParam(params, \"agent_id\", query.agentId);\n\taddStringParam(params, \"thread_id\", query.threadId);\n\taddStringParam(params, \"channel_thread_id\", query.channelThreadId);\n\taddStringParam(params, \"trace_id\", query.traceId);\n\taddStringParam(params, \"session_id\", query.sessionId);\n\taddStringParam(params, \"evidence_id\", query.evidenceId);\n\taddStringParam(\n\t\tparams,\n\t\t\"gateway_authenticated_subject\",\n\t\tquery.gatewayAuthenticatedSubject,\n\t);\n\taddStringParam(params, \"auth_subject\", query.authSubject);\n\taddStringParam(params, \"audience\", query.audience);\n\taddBooleanParam(params, \"include_gates\", query.includeGates);\n\taddNonNegativeIntParam(params, \"limit\", query.limit);\n\n\treturn url.toString();\n}\n\nexport async function inspectOperatingPlaneRuns(\n\tquery: OperatingPlaneRunQuery = {},\n\toptions: InspectOperatingPlaneRunsOptions = {},\n): Promise<OperatingPlaneInspection> {\n\tconst config = options.config ?? (await resolveOperatingPlaneServiceConfig());\n\tif (!config) {\n\t\tthrow new Error(\"agent operating plane service is not configured\");\n\t}\n\n\tconst response = await fetchDownstream(\n\t\tbuildOperatingPlaneRunsUrl(config, query),\n\t\t{\n\t\t\tmethod: \"GET\",\n\t\t\theaders: buildPlatformJsonHeaders(config),\n\t\t\tsignal: options.signal,\n\t\t},\n\t\t{\n\t\t\tserviceName: \"agent operating plane service\",\n\t\t\tfailureMode: \"optional\",\n\t\t\ttimeoutMs: config.timeoutMs,\n\t\t\tmaxAttempts: config.maxAttempts,\n\t\t},\n\t);\n\treturn await parseOperatingPlaneResponse(response);\n}\n\nfunction addStringParam(\n\tparams: URLSearchParams,\n\tname: string,\n\tvalue: string | undefined,\n): void {\n\tconst normalized = trimString(value);\n\tif (normalized) {\n\t\tparams.set(name, normalized);\n\t}\n}\n\nfunction addBooleanParam(\n\tparams: URLSearchParams,\n\tname: string,\n\tvalue: boolean | undefined,\n): void {\n\tif (typeof value === \"boolean\") {\n\t\tparams.set(name, value ? \"true\" : \"false\");\n\t}\n}\n\nfunction addNonNegativeIntParam(\n\tparams: URLSearchParams,\n\tname: string,\n\tvalue: number | undefined,\n): void {\n\tif (typeof value !== \"number\" || !Number.isFinite(value) || value < 0) {\n\t\treturn;\n\t}\n\tparams.set(name, String(Math.trunc(value)));\n}\n\nasync function parseOperatingPlaneResponse(\n\tresponse: Response,\n): Promise<OperatingPlaneInspection> {\n\tconst text = await response.text();\n\tif (!response.ok) {\n\t\tthrow new Error(\n\t\t\t`agent operating plane service returned ${response.status}: ${text || response.statusText}`,\n\t\t);\n\t}\n\tif (!text.trim()) {\n\t\tthrow new Error(\"agent operating plane service returned empty response\");\n\t}\n\treturn JSON.parse(text) as OperatingPlaneInspection;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"operating-plane-client.js","sourceRoot":"","sources":["../../src/platform/operating-plane-client.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tEVALOPS_ACCESS_TOKEN_ENV_VARS,\n\tEVALOPS_ORGANIZATION_ID_ENV_VARS,\n\tEVALOPS_WORKSPACE_ID_ENV_VARS,\n} from \"../evalops/env-aliases.js\";\nimport { fetchDownstream } from \"../utils/downstream-http.js\";\nimport {\n\ttype PlatformServiceConfig,\n\tbuildPlatformJsonHeaders,\n\tresolvePlatformServiceConfig,\n\ttrimString,\n} from \"./client.js\";\nimport { PLATFORM_HTTP_ROUTES } from \"./core-services.js\";\n\nconst DEFAULT_TIMEOUT_MS = 2_000;\nconst DEFAULT_MAX_ATTEMPTS = 2;\nconst OPERATING_PLANE_RUNS_PATH =\n\tPLATFORM_HTTP_ROUTES.agentRuntime.operatingPlaneRuns;\n\nconst OPERATING_PLANE_BASE_URL_ENV_VARS = [\n\t\"MAESTRO_AGENT_OPERATING_PLANE_URL\",\n\t\"AGENT_OPERATING_PLANE_URL\",\n\t\"MAESTRO_AGENT_RUNTIME_SERVICE_URL\",\n\t\"AGENT_RUNTIME_SERVICE_URL\",\n] as const;\n\nconst OPERATING_PLANE_TOKEN_ENV_VARS = [\n\t\"MAESTRO_AGENT_OPERATING_PLANE_TOKEN\",\n\t\"AGENT_OPERATING_PLANE_TOKEN\",\n\t\"MAESTRO_AGENT_RUNTIME_SERVICE_TOKEN\",\n\t\"AGENT_RUNTIME_SERVICE_TOKEN\",\n\t...EVALOPS_ACCESS_TOKEN_ENV_VARS,\n] as const;\n\nconst OPERATING_PLANE_ORGANIZATION_ENV_VARS = [\n\t\"MAESTRO_AGENT_OPERATING_PLANE_ORG_ID\",\n\t\"AGENT_OPERATING_PLANE_ORGANIZATION_ID\",\n\t\"MAESTRO_AGENT_RUNTIME_ORG_ID\",\n\t\"AGENT_RUNTIME_ORGANIZATION_ID\",\n\t...EVALOPS_ORGANIZATION_ID_ENV_VARS,\n] as const;\n\nconst OPERATING_PLANE_WORKSPACE_ENV_VARS = [\n\t\"MAESTRO_AGENT_OPERATING_PLANE_WORKSPACE_ID\",\n\t\"AGENT_OPERATING_PLANE_WORKSPACE_ID\",\n\t\"MAESTRO_AGENT_RUNTIME_WORKSPACE_ID\",\n\t\"AGENT_RUNTIME_WORKSPACE_ID\",\n\t\"MAESTRO_WORKSPACE_ID\",\n\t...EVALOPS_WORKSPACE_ID_ENV_VARS.filter(\n\t\t(name) => name !== \"MAESTRO_WORKSPACE_ID\",\n\t),\n] as const;\n\nconst OPERATING_PLANE_TIMEOUT_ENV_VARS = [\n\t\"MAESTRO_AGENT_OPERATING_PLANE_TIMEOUT_MS\",\n\t\"AGENT_OPERATING_PLANE_TIMEOUT_MS\",\n\t\"MAESTRO_AGENT_RUNTIME_TIMEOUT_MS\",\n\t\"AGENT_RUNTIME_SERVICE_TIMEOUT_MS\",\n] as const;\n\nconst OPERATING_PLANE_MAX_ATTEMPTS_ENV_VARS = [\n\t\"MAESTRO_AGENT_OPERATING_PLANE_MAX_ATTEMPTS\",\n\t\"AGENT_OPERATING_PLANE_MAX_ATTEMPTS\",\n\t\"MAESTRO_AGENT_RUNTIME_MAX_ATTEMPTS\",\n\t\"AGENT_RUNTIME_SERVICE_MAX_ATTEMPTS\",\n] as const;\n\nconst OPERATING_PLANE_BASE_URL_SUFFIXES = [\n\tOPERATING_PLANE_RUNS_PATH,\n\t\"/v1/agent-operating-plane\",\n] as const;\n\nexport type OperatingPlaneAudience =\n\t| \"agent\"\n\t| \"trigger_actor\"\n\t| \"user\"\n\t| \"actor\"\n\t| \"channel\"\n\t| \"slack\"\n\t| \"workspace_admins\"\n\t| \"admins\"\n\t| \"admin\"\n\t| \"audit\"\n\t| \"system\";\n\nexport interface OperatingPlaneRunQuery {\n\tworkspaceId?: string;\n\trunId?: string;\n\tworkEnvelopeId?: string;\n\tautonomySessionId?: string;\n\tagentId?: string;\n\tthreadId?: string;\n\tchannelThreadId?: string;\n\ttraceId?: string;\n\tsessionId?: string;\n\tevidenceId?: string;\n\tgatewayAuthenticatedSubject?: string;\n\tauthSubject?: string;\n\taudience?: OperatingPlaneAudience;\n\tincludeGates?: boolean;\n\tlimit?: number;\n}\n\nexport interface InspectOperatingPlaneRunsOptions {\n\tconfig?: PlatformServiceConfig;\n\tsignal?: AbortSignal;\n}\n\nexport interface OperatingPlaneInspection {\n\tcontract_version: string;\n\tgenerated_at: string;\n\tunavailable_sources?: string[];\n\truns: OperatingPlaneRun[];\n}\n\nexport interface OperatingPlaneRun {\n\tagent_run_id: string;\n\tagent_run_step_id?: string;\n\ttitle: string;\n\tstatus: string;\n\tsurface: string;\n\tchannel_thread_id?: string;\n\ttrace_id?: string;\n\ttraceparent?: string;\n\ttracestate?: string;\n\ttool_execution_id?: string;\n\tapproval_request_id?: string;\n\tstarted_at?: string;\n\tupdated_at?: string;\n\tidentity?: OperatingPlaneIdentity;\n\tdata_classification?: string;\n\tretention_class?: string;\n\tshareability?: string;\n\tsafe_summary_present?: boolean;\n\tredaction_count?: number;\n\twithholding_reasons?: string[];\n\tunavailable_sources?: string[];\n\trelease_gate?: OperatingPlaneGate;\n\treplay_gate?: OperatingPlaneGate;\n\tevidence_refs?: OperatingPlaneEvidence[];\n\twork_items?: OperatingPlaneWorkItem[];\n\tmodel_calls?: OperatingPlaneModelCall[];\n\ttool_calls?: OperatingPlaneToolCall[];\n\tapprovals?: OperatingPlaneApproval[];\n\tusage?: OperatingPlaneUsage;\n\truntime_signals?: OperatingPlaneRuntimeSignals;\n\tcanonical_attributes?: Record<string, unknown>;\n}\n\nexport interface OperatingPlaneIdentity {\n\tworkspace_id: string;\n\ttenant_id?: string;\n\tactor_id?: string;\n\tprincipal_id?: string;\n\tagent_id?: string;\n\tagent_instance_id?: string;\n\tgateway_authenticated_subject?: string;\n\tgateway_authenticated_user_subject?: string;\n\tgateway_authenticated_service?: string;\n\tgateway_authenticated_token_type?: string;\n}\n\nexport interface OperatingPlaneGate {\n\tid: string;\n\tlabel: string;\n\tstate: string;\n\treason: string;\n\tlast_checked_at: string;\n}\n\nexport interface OperatingPlaneEvidence {\n\tid: string;\n\tsource: string;\n\tkind: string;\n\turi?: string;\n\trevision?: string;\n\tavailable: boolean;\n\tsummary: string;\n}\n\nexport interface OperatingPlaneWorkItem {\n\tid?: string;\n\tparent_id?: string;\n\tkind: string;\n\tstate: string;\n\ttitle?: string;\n\tgoal?: string;\n\tnext_action?: string;\n\tblocker?: string;\n\twait_id?: string;\n\ttool_execution_id?: string;\n\tevidence_refs?: string[];\n\tcompletion_gate?: string;\n\tupdated_at?: string;\n}\n\nexport interface OperatingPlaneModelCall {\n\tid?: string;\n\tprovider?: string;\n\tmodel?: string;\n\tstep_id?: string;\n\ttool_call_id?: string;\n\tcost_id?: string;\n\ttrace_id?: string;\n\tinput_tokens?: number;\n\toutput_tokens?: number;\n\ttotal_tokens?: number;\n\testimated_cost_micros?: number;\n\tcurrency?: string;\n}\n\nexport interface OperatingPlaneToolCall {\n\ttool_execution_id: string;\n\tstep_id?: string;\n\tstate?: string;\n\tapproval_request_id?: string;\n}\n\nexport interface OperatingPlaneApproval {\n\tapproval_request_id: string;\n\twait_id?: string;\n\tstate?: string;\n\treason?: string;\n\tavailable: boolean;\n}\n\nexport interface OperatingPlaneUsage {\n\tinput_tokens?: number;\n\toutput_tokens?: number;\n\ttotal_tokens?: number;\n\testimated_cost_micros?: number;\n\tcurrency?: string;\n}\n\nexport interface OperatingPlaneRuntimeSignals {\n\toperation_id: string;\n\toperator_summary: string;\n\tidentity_bound: boolean;\n\tmodel_observed: boolean;\n\ttool_observed: boolean;\n\tapproval_observed: boolean;\n\ttrace_linked: boolean;\n\tevidence_linked: boolean;\n\tcost_attributed: boolean;\n\tobserved_signals?: string[];\n\tmissing_signals?: string[];\n}\n\nexport async function resolveOperatingPlaneServiceConfig(): Promise<PlatformServiceConfig | null> {\n\treturn await resolvePlatformServiceConfig({\n\t\tbaseUrlEnvVars: OPERATING_PLANE_BASE_URL_ENV_VARS,\n\t\ttokenEnvVars: OPERATING_PLANE_TOKEN_ENV_VARS,\n\t\torganizationEnvVars: OPERATING_PLANE_ORGANIZATION_ENV_VARS,\n\t\tworkspaceEnvVars: OPERATING_PLANE_WORKSPACE_ENV_VARS,\n\t\ttimeoutEnvVars: OPERATING_PLANE_TIMEOUT_ENV_VARS,\n\t\tmaxAttemptsEnvVars: OPERATING_PLANE_MAX_ATTEMPTS_ENV_VARS,\n\t\tbaseUrlSuffixes: OPERATING_PLANE_BASE_URL_SUFFIXES,\n\t\tdefaultTimeoutMs: DEFAULT_TIMEOUT_MS,\n\t\tdefaultMaxAttempts: DEFAULT_MAX_ATTEMPTS,\n\t\trequireOrganizationId: true,\n\t\trequireToken: true,\n\t});\n}\n\nexport function buildOperatingPlaneRunsUrl(\n\tconfig: Pick<PlatformServiceConfig, \"baseUrl\" | \"workspaceId\">,\n\tquery: OperatingPlaneRunQuery = {},\n): string {\n\tconst url = new URL(\n\t\t`${config.baseUrl.trim().replace(/\\/+$/u, \"\")}${OPERATING_PLANE_RUNS_PATH}`,\n\t);\n\tconst params = url.searchParams;\n\n\taddStringParam(\n\t\tparams,\n\t\t\"workspace_id\",\n\t\tquery.workspaceId ?? config.workspaceId,\n\t);\n\taddStringParam(params, \"run_id\", query.runId);\n\taddStringParam(params, \"work_envelope_id\", query.workEnvelopeId);\n\taddStringParam(params, \"autonomy_session_id\", query.autonomySessionId);\n\taddStringParam(params, \"agent_id\", query.agentId);\n\taddStringParam(params, \"thread_id\", query.threadId);\n\taddStringParam(params, \"channel_thread_id\", query.channelThreadId);\n\taddStringParam(params, \"trace_id\", query.traceId);\n\taddStringParam(params, \"session_id\", query.sessionId);\n\taddStringParam(params, \"evidence_id\", query.evidenceId);\n\taddStringParam(\n\t\tparams,\n\t\t\"gateway_authenticated_subject\",\n\t\tquery.gatewayAuthenticatedSubject,\n\t);\n\taddStringParam(params, \"auth_subject\", query.authSubject);\n\taddStringParam(params, \"audience\", query.audience);\n\taddBooleanParam(params, \"include_gates\", query.includeGates);\n\taddNonNegativeIntParam(params, \"limit\", query.limit);\n\n\treturn url.toString();\n}\n\nexport async function inspectOperatingPlaneRuns(\n\tquery: OperatingPlaneRunQuery = {},\n\toptions: InspectOperatingPlaneRunsOptions = {},\n): Promise<OperatingPlaneInspection> {\n\tconst config = options.config ?? (await resolveOperatingPlaneServiceConfig());\n\tif (!config) {\n\t\tthrow new Error(\"agent operating plane service is not configured\");\n\t}\n\n\tconst response = await fetchDownstream(\n\t\tbuildOperatingPlaneRunsUrl(config, query),\n\t\t{\n\t\t\tmethod: \"GET\",\n\t\t\theaders: buildPlatformJsonHeaders(config),\n\t\t\tsignal: options.signal,\n\t\t},\n\t\t{\n\t\t\tserviceName: \"agent operating plane service\",\n\t\t\tfailureMode: \"optional\",\n\t\t\ttimeoutMs: config.timeoutMs,\n\t\t\tmaxAttempts: config.maxAttempts,\n\t\t},\n\t);\n\treturn await parseOperatingPlaneResponse(response);\n}\n\nfunction addStringParam(\n\tparams: URLSearchParams,\n\tname: string,\n\tvalue: string | undefined,\n): void {\n\tconst normalized = trimString(value);\n\tif (normalized) {\n\t\tparams.set(name, normalized);\n\t}\n}\n\nfunction addBooleanParam(\n\tparams: URLSearchParams,\n\tname: string,\n\tvalue: boolean | undefined,\n): void {\n\tif (typeof value === \"boolean\") {\n\t\tparams.set(name, value ? \"true\" : \"false\");\n\t}\n}\n\nfunction addNonNegativeIntParam(\n\tparams: URLSearchParams,\n\tname: string,\n\tvalue: number | undefined,\n): void {\n\tif (typeof value !== \"number\" || !Number.isFinite(value) || value < 0) {\n\t\treturn;\n\t}\n\tparams.set(name, String(Math.trunc(value)));\n}\n\nasync function parseOperatingPlaneResponse(\n\tresponse: Response,\n): Promise<OperatingPlaneInspection> {\n\tconst text = await response.text();\n\tif (!response.ok) {\n\t\tthrow new Error(\n\t\t\t`agent operating plane service returned ${response.status}: ${text || response.statusText}`,\n\t\t);\n\t}\n\tif (!text.trim()) {\n\t\tthrow new Error(\"agent operating plane service returned empty response\");\n\t}\n\treturn JSON.parse(text) as OperatingPlaneInspection;\n}\n"]}
|
|
@@ -62,7 +62,7 @@ function summarizeOperatingPlaneRun(run) {
|
|
|
62
62
|
channelThreadId: oneLine(run.channel_thread_id),
|
|
63
63
|
traceId: oneLine(run.trace_id),
|
|
64
64
|
identitySubject: operatingPlaneIdentitySubject(run),
|
|
65
|
-
operatorSummary: oneLine(run.
|
|
65
|
+
operatorSummary: oneLine(run.runtime_signals?.operator_summary),
|
|
66
66
|
signalsPresent,
|
|
67
67
|
signalsMissing,
|
|
68
68
|
artifactRefs: summarizeArtifactRefs(run.evidence_refs),
|
|
@@ -73,7 +73,7 @@ function summarizeOperatingPlaneRun(run) {
|
|
|
73
73
|
});
|
|
74
74
|
}
|
|
75
75
|
function summarizeValueSignals(run) {
|
|
76
|
-
const signals = run.
|
|
76
|
+
const signals = run.runtime_signals;
|
|
77
77
|
const fields = [
|
|
78
78
|
{ label: "identity", value: signals?.identity_bound },
|
|
79
79
|
{ label: "model", value: signals?.model_observed },
|
|
@@ -90,7 +90,7 @@ function summarizeValueSignals(run) {
|
|
|
90
90
|
...fields
|
|
91
91
|
.filter((field) => field.value !== true)
|
|
92
92
|
.map((field) => field.label),
|
|
93
|
-
...(signals?.
|
|
93
|
+
...(signals?.missing_signals ?? []).map(operatorFacingSignalLabel),
|
|
94
94
|
signals ? undefined : "runtime signal unavailable",
|
|
95
95
|
]);
|
|
96
96
|
return { signalsPresent, signalsMissing };
|
|
@@ -150,9 +150,6 @@ function operatorFacingSignalLabel(value) {
|
|
|
150
150
|
if (!normalized) {
|
|
151
151
|
return undefined;
|
|
152
152
|
}
|
|
153
|
-
if (normalized === "value_proof unavailable") {
|
|
154
|
-
return "runtime signal unavailable";
|
|
155
|
-
}
|
|
156
153
|
return normalized
|
|
157
154
|
.replace(/\bproof\b/giu, "signal")
|
|
158
155
|
.replace(/\bevidence\b/giu, "artifact");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operating-plane-summary.js","sourceRoot":"","sources":["../../src/platform/operating-plane-summary.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tOperatingPlaneEvidence,\n\tOperatingPlaneInspection,\n\tOperatingPlaneRun,\n\tOperatingPlaneUsage,\n} from \"./operating-plane-client.js\";\n\nexport interface OperatingPlaneStatusReport {\n\tcontractVersion: string;\n\tgeneratedAt: string;\n\trunCount: number;\n\tunavailableSources: string[];\n\truns: OperatingPlaneRunStatus[];\n}\n\nexport interface OperatingPlaneRunStatus {\n\trunId: string;\n\ttitle: string;\n\tstatus: string;\n\tsurface: string;\n\tchannelThreadId?: string;\n\ttraceId?: string;\n\tidentitySubject?: string;\n\toperatorSummary?: string;\n\tsignalsPresent: string[];\n\tsignalsMissing: string[];\n\tartifactRefs: OperatingPlaneArtifactStatus[];\n\tnextActions: string[];\n\tblockers: string[];\n\twithheld: string[];\n\tusage: OperatingPlaneUsageStatus;\n}\n\nexport interface OperatingPlaneArtifactStatus {\n\tid: string;\n\tsource: string;\n\tkind: string;\n\turi?: string;\n\trevision?: string;\n\tavailable: boolean;\n}\n\nexport interface OperatingPlaneUsageStatus {\n\tinputTokens?: number;\n\toutputTokens?: number;\n\ttotalTokens?: number;\n\testimatedCostMicros?: number;\n\tcurrency?: string;\n}\n\ninterface OperatingPlaneSummaryOptions {\n\tmaxRuns?: number;\n}\n\ntype SignalField = {\n\tlabel: string;\n\tvalue: boolean | undefined;\n};\n\nexport function summarizeOperatingPlaneInspection(\n\tinspection: OperatingPlaneInspection,\n\toptions: OperatingPlaneSummaryOptions = {},\n): OperatingPlaneStatusReport {\n\tconst maxRuns = normalizePositiveLimit(options.maxRuns);\n\tconst runs = maxRuns ? inspection.runs.slice(0, maxRuns) : inspection.runs;\n\n\treturn {\n\t\tcontractVersion: inspection.contract_version,\n\t\tgeneratedAt: inspection.generated_at,\n\t\trunCount: inspection.runs.length,\n\t\tunavailableSources: uniqueStrings(inspection.unavailable_sources),\n\t\truns: runs.map(summarizeOperatingPlaneRun),\n\t};\n}\n\nexport function formatOperatingPlaneStatusReport(\n\treport: OperatingPlaneStatusReport,\n): string {\n\tconst lines = [\n\t\t`Agent operating-plane status (${report.runCount} ${pluralize(\"run\", report.runCount)})`,\n\t\t`Generated: ${report.generatedAt}`,\n\t];\n\tif (report.unavailableSources.length > 0) {\n\t\tlines.push(`Unavailable sources: ${report.unavailableSources.join(\", \")}`);\n\t}\n\tif (report.runs.length === 0) {\n\t\tlines.push(\"No operating-plane runs matched the query.\");\n\t\treturn lines.join(\"\\n\");\n\t}\n\n\tfor (const run of report.runs) {\n\t\tlines.push(\n\t\t\t`- ${run.title || run.runId} [${run.status || \"unknown\"}] on ${run.surface || \"unknown\"} (${run.runId})`,\n\t\t);\n\t\tpushLine(lines, \" Summary\", run.operatorSummary);\n\t\tpushLine(lines, \" Thread\", run.channelThreadId);\n\t\tpushLine(lines, \" Trace\", run.traceId);\n\t\tpushLine(lines, \" Identity\", run.identitySubject);\n\t\tif (run.signalsPresent.length > 0) {\n\t\t\tlines.push(` Signals present: ${run.signalsPresent.join(\", \")}`);\n\t\t}\n\t\tif (run.signalsMissing.length > 0) {\n\t\t\tlines.push(` Signals missing: ${run.signalsMissing.join(\", \")}`);\n\t\t}\n\t\tif (run.artifactRefs.length > 0) {\n\t\t\tlines.push(\n\t\t\t\t` Artifacts: ${run.artifactRefs.map(formatArtifactRef).join(\"; \")}`,\n\t\t\t);\n\t\t}\n\t\tfor (const nextAction of run.nextActions) {\n\t\t\tlines.push(` Next action: ${nextAction}`);\n\t\t}\n\t\tfor (const blocker of run.blockers) {\n\t\t\tlines.push(` Blocker: ${blocker}`);\n\t\t}\n\t\tif (run.withheld.length > 0) {\n\t\t\tlines.push(` Withheld/out of scope: ${run.withheld.join(\", \")}`);\n\t\t}\n\t\tconst usage = formatUsage(run.usage);\n\t\tif (usage) {\n\t\t\tlines.push(` Usage: ${usage}`);\n\t\t}\n\t}\n\n\treturn lines.join(\"\\n\");\n}\n\nfunction summarizeOperatingPlaneRun(\n\trun: OperatingPlaneRun,\n): OperatingPlaneRunStatus {\n\tconst { signalsPresent, signalsMissing } = summarizeValueSignals(run);\n\treturn stripUndefined({\n\t\trunId: run.agent_run_id,\n\t\ttitle: oneLine(run.title) ?? \"\",\n\t\tstatus: oneLine(run.status) ?? \"\",\n\t\tsurface: oneLine(run.surface) ?? \"\",\n\t\tchannelThreadId: oneLine(run.channel_thread_id),\n\t\ttraceId: oneLine(run.trace_id),\n\t\tidentitySubject: operatingPlaneIdentitySubject(run),\n\t\toperatorSummary: oneLine(run.value_proof?.operator_summary),\n\t\tsignalsPresent,\n\t\tsignalsMissing,\n\t\tartifactRefs: summarizeArtifactRefs(run.evidence_refs),\n\t\tnextActions: uniqueStrings(\n\t\t\trun.work_items?.map((item) => oneLine(item.next_action)),\n\t\t),\n\t\tblockers: uniqueStrings(\n\t\t\trun.work_items?.map((item) => oneLine(item.blocker)),\n\t\t),\n\t\twithheld: operatingPlaneWithheldReasons(run),\n\t\tusage: summarizeUsage(run.usage),\n\t});\n}\n\nfunction summarizeValueSignals(run: OperatingPlaneRun): {\n\tsignalsPresent: string[];\n\tsignalsMissing: string[];\n} {\n\tconst signals = run.value_proof;\n\tconst fields: SignalField[] = [\n\t\t{ label: \"identity\", value: signals?.identity_bound },\n\t\t{ label: \"model\", value: signals?.model_observed },\n\t\t{ label: \"tool\", value: signals?.tool_observed },\n\t\t{ label: \"approval\", value: signals?.approval_observed },\n\t\t{ label: \"trace\", value: signals?.trace_linked },\n\t\t{ label: \"artifact\", value: signals?.evidence_linked },\n\t\t{ label: \"cost\", value: signals?.cost_attributed },\n\t];\n\tconst signalsPresent = fields\n\t\t.filter((field) => field.value === true)\n\t\t.map((field) => field.label);\n\tconst signalsMissing = uniqueStrings([\n\t\t...fields\n\t\t\t.filter((field) => field.value !== true)\n\t\t\t.map((field) => field.label),\n\t\t...(signals?.missing_proof ?? []).map(operatorFacingSignalLabel),\n\t\tsignals ? undefined : \"runtime signal unavailable\",\n\t]);\n\treturn { signalsPresent, signalsMissing };\n}\n\nfunction summarizeArtifactRefs(\n\tevidenceRefs: OperatingPlaneEvidence[] | undefined,\n): OperatingPlaneArtifactStatus[] {\n\treturn (evidenceRefs ?? [])\n\t\t.map((evidence) =>\n\t\t\tstripUndefined({\n\t\t\t\tid: oneLine(evidence.id) ?? \"\",\n\t\t\t\tsource: oneLine(evidence.source) ?? \"\",\n\t\t\t\tkind: oneLine(evidence.kind) ?? \"\",\n\t\t\t\turi: oneLine(evidence.uri),\n\t\t\t\trevision: oneLine(evidence.revision),\n\t\t\t\tavailable: evidence.available,\n\t\t\t}),\n\t\t)\n\t\t.filter((evidence) => Boolean(evidence.id));\n}\n\nfunction summarizeUsage(\n\tusage: OperatingPlaneUsage | undefined,\n): OperatingPlaneUsageStatus {\n\treturn stripUndefined({\n\t\tinputTokens: usage?.input_tokens,\n\t\toutputTokens: usage?.output_tokens,\n\t\ttotalTokens: usage?.total_tokens,\n\t\testimatedCostMicros: usage?.estimated_cost_micros,\n\t\tcurrency: oneLine(usage?.currency),\n\t});\n}\n\nfunction operatingPlaneIdentitySubject(\n\trun: OperatingPlaneRun,\n): string | undefined {\n\tconst identity = run.identity;\n\treturn firstString([\n\t\tidentity?.gateway_authenticated_subject,\n\t\tidentity?.gateway_authenticated_user_subject,\n\t\tidentity?.gateway_authenticated_service,\n\t\tidentity?.principal_id,\n\t\tidentity?.actor_id,\n\t\tidentity?.agent_id,\n\t]);\n}\n\nfunction operatingPlaneWithheldReasons(run: OperatingPlaneRun): string[] {\n\treturn uniqueStrings([\n\t\t...(run.withholding_reasons ?? []),\n\t\trun.redaction_count && run.redaction_count > 0\n\t\t\t? `${run.redaction_count} ${pluralize(\"redaction\", run.redaction_count)}`\n\t\t\t: undefined,\n\t\t...(run.unavailable_sources ?? []),\n\t]);\n}\n\nfunction formatArtifactRef(evidence: OperatingPlaneArtifactStatus): string {\n\tconst details = [\n\t\t`${evidence.source}/${evidence.kind}`,\n\t\tevidence.available ? \"available\" : \"unavailable\",\n\t\tevidence.uri ? `uri ${evidence.uri}` : undefined,\n\t\tevidence.revision ? `revision ${evidence.revision}` : undefined,\n\t];\n\treturn `${evidence.id} (${uniqueStrings(details).join(\", \")})`;\n}\n\nfunction operatorFacingSignalLabel(value: string): string | undefined {\n\tconst normalized = oneLine(value);\n\tif (!normalized) {\n\t\treturn undefined;\n\t}\n\tif (normalized === \"value_proof unavailable\") {\n\t\treturn \"runtime signal unavailable\";\n\t}\n\treturn normalized\n\t\t.replace(/\\bproof\\b/giu, \"signal\")\n\t\t.replace(/\\bevidence\\b/giu, \"artifact\");\n}\n\nfunction formatUsage(usage: OperatingPlaneUsageStatus): string | undefined {\n\tconst parts = [\n\t\ttypeof usage.totalTokens === \"number\"\n\t\t\t? `${usage.totalTokens} total tokens`\n\t\t\t: undefined,\n\t\ttypeof usage.inputTokens === \"number\"\n\t\t\t? `${usage.inputTokens} input tokens`\n\t\t\t: undefined,\n\t\ttypeof usage.outputTokens === \"number\"\n\t\t\t? `${usage.outputTokens} output tokens`\n\t\t\t: undefined,\n\t\ttypeof usage.estimatedCostMicros === \"number\"\n\t\t\t? `${usage.estimatedCostMicros} cost micros`\n\t\t\t: undefined,\n\t\tusage.currency,\n\t];\n\treturn uniqueStrings(parts).join(\", \") || undefined;\n}\n\nfunction firstString(values: Array<string | undefined>): string | undefined {\n\tfor (const value of values) {\n\t\tconst normalized = oneLine(value);\n\t\tif (normalized) {\n\t\t\treturn normalized;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nfunction oneLine(value: string | undefined): string | undefined {\n\tconst normalized = value?.replace(/\\s+/gu, \" \").trim();\n\treturn normalized || undefined;\n}\n\nfunction pushLine(\n\tlines: string[],\n\tlabel: string,\n\tvalue: string | undefined,\n): void {\n\tif (value) {\n\t\tlines.push(`${label}: ${value}`);\n\t}\n}\n\nfunction uniqueStrings(\n\tvalues: Array<string | undefined> | undefined,\n): string[] {\n\tconst seen = new Set<string>();\n\tconst normalized: string[] = [];\n\tfor (const value of values ?? []) {\n\t\tconst clean = oneLine(value);\n\t\tif (!clean || seen.has(clean)) {\n\t\t\tcontinue;\n\t\t}\n\t\tseen.add(clean);\n\t\tnormalized.push(clean);\n\t}\n\treturn normalized;\n}\n\nfunction pluralize(noun: string, count: number): string {\n\treturn count === 1 ? noun : `${noun}s`;\n}\n\nfunction normalizePositiveLimit(value: number | undefined): number | undefined {\n\tif (typeof value !== \"number\" || !Number.isFinite(value) || value <= 0) {\n\t\treturn undefined;\n\t}\n\treturn Math.trunc(value);\n}\n\nfunction stripUndefined<T extends Record<string, unknown>>(value: T): T {\n\treturn Object.fromEntries(\n\t\tObject.entries(value).filter(([, entry]) => entry !== undefined),\n\t) as T;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"operating-plane-summary.js","sourceRoot":"","sources":["../../src/platform/operating-plane-summary.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tOperatingPlaneEvidence,\n\tOperatingPlaneInspection,\n\tOperatingPlaneRun,\n\tOperatingPlaneUsage,\n} from \"./operating-plane-client.js\";\n\nexport interface OperatingPlaneStatusReport {\n\tcontractVersion: string;\n\tgeneratedAt: string;\n\trunCount: number;\n\tunavailableSources: string[];\n\truns: OperatingPlaneRunStatus[];\n}\n\nexport interface OperatingPlaneRunStatus {\n\trunId: string;\n\ttitle: string;\n\tstatus: string;\n\tsurface: string;\n\tchannelThreadId?: string;\n\ttraceId?: string;\n\tidentitySubject?: string;\n\toperatorSummary?: string;\n\tsignalsPresent: string[];\n\tsignalsMissing: string[];\n\tartifactRefs: OperatingPlaneArtifactStatus[];\n\tnextActions: string[];\n\tblockers: string[];\n\twithheld: string[];\n\tusage: OperatingPlaneUsageStatus;\n}\n\nexport interface OperatingPlaneArtifactStatus {\n\tid: string;\n\tsource: string;\n\tkind: string;\n\turi?: string;\n\trevision?: string;\n\tavailable: boolean;\n}\n\nexport interface OperatingPlaneUsageStatus {\n\tinputTokens?: number;\n\toutputTokens?: number;\n\ttotalTokens?: number;\n\testimatedCostMicros?: number;\n\tcurrency?: string;\n}\n\ninterface OperatingPlaneSummaryOptions {\n\tmaxRuns?: number;\n}\n\ntype SignalField = {\n\tlabel: string;\n\tvalue: boolean | undefined;\n};\n\nexport function summarizeOperatingPlaneInspection(\n\tinspection: OperatingPlaneInspection,\n\toptions: OperatingPlaneSummaryOptions = {},\n): OperatingPlaneStatusReport {\n\tconst maxRuns = normalizePositiveLimit(options.maxRuns);\n\tconst runs = maxRuns ? inspection.runs.slice(0, maxRuns) : inspection.runs;\n\n\treturn {\n\t\tcontractVersion: inspection.contract_version,\n\t\tgeneratedAt: inspection.generated_at,\n\t\trunCount: inspection.runs.length,\n\t\tunavailableSources: uniqueStrings(inspection.unavailable_sources),\n\t\truns: runs.map(summarizeOperatingPlaneRun),\n\t};\n}\n\nexport function formatOperatingPlaneStatusReport(\n\treport: OperatingPlaneStatusReport,\n): string {\n\tconst lines = [\n\t\t`Agent operating-plane status (${report.runCount} ${pluralize(\"run\", report.runCount)})`,\n\t\t`Generated: ${report.generatedAt}`,\n\t];\n\tif (report.unavailableSources.length > 0) {\n\t\tlines.push(`Unavailable sources: ${report.unavailableSources.join(\", \")}`);\n\t}\n\tif (report.runs.length === 0) {\n\t\tlines.push(\"No operating-plane runs matched the query.\");\n\t\treturn lines.join(\"\\n\");\n\t}\n\n\tfor (const run of report.runs) {\n\t\tlines.push(\n\t\t\t`- ${run.title || run.runId} [${run.status || \"unknown\"}] on ${run.surface || \"unknown\"} (${run.runId})`,\n\t\t);\n\t\tpushLine(lines, \" Summary\", run.operatorSummary);\n\t\tpushLine(lines, \" Thread\", run.channelThreadId);\n\t\tpushLine(lines, \" Trace\", run.traceId);\n\t\tpushLine(lines, \" Identity\", run.identitySubject);\n\t\tif (run.signalsPresent.length > 0) {\n\t\t\tlines.push(` Signals present: ${run.signalsPresent.join(\", \")}`);\n\t\t}\n\t\tif (run.signalsMissing.length > 0) {\n\t\t\tlines.push(` Signals missing: ${run.signalsMissing.join(\", \")}`);\n\t\t}\n\t\tif (run.artifactRefs.length > 0) {\n\t\t\tlines.push(\n\t\t\t\t` Artifacts: ${run.artifactRefs.map(formatArtifactRef).join(\"; \")}`,\n\t\t\t);\n\t\t}\n\t\tfor (const nextAction of run.nextActions) {\n\t\t\tlines.push(` Next action: ${nextAction}`);\n\t\t}\n\t\tfor (const blocker of run.blockers) {\n\t\t\tlines.push(` Blocker: ${blocker}`);\n\t\t}\n\t\tif (run.withheld.length > 0) {\n\t\t\tlines.push(` Withheld/out of scope: ${run.withheld.join(\", \")}`);\n\t\t}\n\t\tconst usage = formatUsage(run.usage);\n\t\tif (usage) {\n\t\t\tlines.push(` Usage: ${usage}`);\n\t\t}\n\t}\n\n\treturn lines.join(\"\\n\");\n}\n\nfunction summarizeOperatingPlaneRun(\n\trun: OperatingPlaneRun,\n): OperatingPlaneRunStatus {\n\tconst { signalsPresent, signalsMissing } = summarizeValueSignals(run);\n\treturn stripUndefined({\n\t\trunId: run.agent_run_id,\n\t\ttitle: oneLine(run.title) ?? \"\",\n\t\tstatus: oneLine(run.status) ?? \"\",\n\t\tsurface: oneLine(run.surface) ?? \"\",\n\t\tchannelThreadId: oneLine(run.channel_thread_id),\n\t\ttraceId: oneLine(run.trace_id),\n\t\tidentitySubject: operatingPlaneIdentitySubject(run),\n\t\toperatorSummary: oneLine(run.runtime_signals?.operator_summary),\n\t\tsignalsPresent,\n\t\tsignalsMissing,\n\t\tartifactRefs: summarizeArtifactRefs(run.evidence_refs),\n\t\tnextActions: uniqueStrings(\n\t\t\trun.work_items?.map((item) => oneLine(item.next_action)),\n\t\t),\n\t\tblockers: uniqueStrings(\n\t\t\trun.work_items?.map((item) => oneLine(item.blocker)),\n\t\t),\n\t\twithheld: operatingPlaneWithheldReasons(run),\n\t\tusage: summarizeUsage(run.usage),\n\t});\n}\n\nfunction summarizeValueSignals(run: OperatingPlaneRun): {\n\tsignalsPresent: string[];\n\tsignalsMissing: string[];\n} {\n\tconst signals = run.runtime_signals;\n\tconst fields: SignalField[] = [\n\t\t{ label: \"identity\", value: signals?.identity_bound },\n\t\t{ label: \"model\", value: signals?.model_observed },\n\t\t{ label: \"tool\", value: signals?.tool_observed },\n\t\t{ label: \"approval\", value: signals?.approval_observed },\n\t\t{ label: \"trace\", value: signals?.trace_linked },\n\t\t{ label: \"artifact\", value: signals?.evidence_linked },\n\t\t{ label: \"cost\", value: signals?.cost_attributed },\n\t];\n\tconst signalsPresent = fields\n\t\t.filter((field) => field.value === true)\n\t\t.map((field) => field.label);\n\tconst signalsMissing = uniqueStrings([\n\t\t...fields\n\t\t\t.filter((field) => field.value !== true)\n\t\t\t.map((field) => field.label),\n\t\t...(signals?.missing_signals ?? []).map(operatorFacingSignalLabel),\n\t\tsignals ? undefined : \"runtime signal unavailable\",\n\t]);\n\treturn { signalsPresent, signalsMissing };\n}\n\nfunction summarizeArtifactRefs(\n\tevidenceRefs: OperatingPlaneEvidence[] | undefined,\n): OperatingPlaneArtifactStatus[] {\n\treturn (evidenceRefs ?? [])\n\t\t.map((evidence) =>\n\t\t\tstripUndefined({\n\t\t\t\tid: oneLine(evidence.id) ?? \"\",\n\t\t\t\tsource: oneLine(evidence.source) ?? \"\",\n\t\t\t\tkind: oneLine(evidence.kind) ?? \"\",\n\t\t\t\turi: oneLine(evidence.uri),\n\t\t\t\trevision: oneLine(evidence.revision),\n\t\t\t\tavailable: evidence.available,\n\t\t\t}),\n\t\t)\n\t\t.filter((evidence) => Boolean(evidence.id));\n}\n\nfunction summarizeUsage(\n\tusage: OperatingPlaneUsage | undefined,\n): OperatingPlaneUsageStatus {\n\treturn stripUndefined({\n\t\tinputTokens: usage?.input_tokens,\n\t\toutputTokens: usage?.output_tokens,\n\t\ttotalTokens: usage?.total_tokens,\n\t\testimatedCostMicros: usage?.estimated_cost_micros,\n\t\tcurrency: oneLine(usage?.currency),\n\t});\n}\n\nfunction operatingPlaneIdentitySubject(\n\trun: OperatingPlaneRun,\n): string | undefined {\n\tconst identity = run.identity;\n\treturn firstString([\n\t\tidentity?.gateway_authenticated_subject,\n\t\tidentity?.gateway_authenticated_user_subject,\n\t\tidentity?.gateway_authenticated_service,\n\t\tidentity?.principal_id,\n\t\tidentity?.actor_id,\n\t\tidentity?.agent_id,\n\t]);\n}\n\nfunction operatingPlaneWithheldReasons(run: OperatingPlaneRun): string[] {\n\treturn uniqueStrings([\n\t\t...(run.withholding_reasons ?? []),\n\t\trun.redaction_count && run.redaction_count > 0\n\t\t\t? `${run.redaction_count} ${pluralize(\"redaction\", run.redaction_count)}`\n\t\t\t: undefined,\n\t\t...(run.unavailable_sources ?? []),\n\t]);\n}\n\nfunction formatArtifactRef(evidence: OperatingPlaneArtifactStatus): string {\n\tconst details = [\n\t\t`${evidence.source}/${evidence.kind}`,\n\t\tevidence.available ? \"available\" : \"unavailable\",\n\t\tevidence.uri ? `uri ${evidence.uri}` : undefined,\n\t\tevidence.revision ? `revision ${evidence.revision}` : undefined,\n\t];\n\treturn `${evidence.id} (${uniqueStrings(details).join(\", \")})`;\n}\n\nfunction operatorFacingSignalLabel(value: string): string | undefined {\n\tconst normalized = oneLine(value);\n\tif (!normalized) {\n\t\treturn undefined;\n\t}\n\treturn normalized\n\t\t.replace(/\\bproof\\b/giu, \"signal\")\n\t\t.replace(/\\bevidence\\b/giu, \"artifact\");\n}\n\nfunction formatUsage(usage: OperatingPlaneUsageStatus): string | undefined {\n\tconst parts = [\n\t\ttypeof usage.totalTokens === \"number\"\n\t\t\t? `${usage.totalTokens} total tokens`\n\t\t\t: undefined,\n\t\ttypeof usage.inputTokens === \"number\"\n\t\t\t? `${usage.inputTokens} input tokens`\n\t\t\t: undefined,\n\t\ttypeof usage.outputTokens === \"number\"\n\t\t\t? `${usage.outputTokens} output tokens`\n\t\t\t: undefined,\n\t\ttypeof usage.estimatedCostMicros === \"number\"\n\t\t\t? `${usage.estimatedCostMicros} cost micros`\n\t\t\t: undefined,\n\t\tusage.currency,\n\t];\n\treturn uniqueStrings(parts).join(\", \") || undefined;\n}\n\nfunction firstString(values: Array<string | undefined>): string | undefined {\n\tfor (const value of values) {\n\t\tconst normalized = oneLine(value);\n\t\tif (normalized) {\n\t\t\treturn normalized;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nfunction oneLine(value: string | undefined): string | undefined {\n\tconst normalized = value?.replace(/\\s+/gu, \" \").trim();\n\treturn normalized || undefined;\n}\n\nfunction pushLine(\n\tlines: string[],\n\tlabel: string,\n\tvalue: string | undefined,\n): void {\n\tif (value) {\n\t\tlines.push(`${label}: ${value}`);\n\t}\n}\n\nfunction uniqueStrings(\n\tvalues: Array<string | undefined> | undefined,\n): string[] {\n\tconst seen = new Set<string>();\n\tconst normalized: string[] = [];\n\tfor (const value of values ?? []) {\n\t\tconst clean = oneLine(value);\n\t\tif (!clean || seen.has(clean)) {\n\t\t\tcontinue;\n\t\t}\n\t\tseen.add(clean);\n\t\tnormalized.push(clean);\n\t}\n\treturn normalized;\n}\n\nfunction pluralize(noun: string, count: number): string {\n\treturn count === 1 ? noun : `${noun}s`;\n}\n\nfunction normalizePositiveLimit(value: number | undefined): number | undefined {\n\tif (typeof value !== \"number\" || !Number.isFinite(value) || value <= 0) {\n\t\treturn undefined;\n\t}\n\treturn Math.trunc(value);\n}\n\nfunction stripUndefined<T extends Record<string, unknown>>(value: T): T {\n\treturn Object.fromEntries(\n\t\tObject.entries(value).filter(([, entry]) => entry !== undefined),\n\t) as T;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-trajectory-scenarios.d.ts","sourceRoot":"","sources":["../../src/server/agent-trajectory-scenarios.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"agent-trajectory-scenarios.d.ts","sourceRoot":"","sources":["../../src/server/agent-trajectory-scenarios.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,12 +18,30 @@ const AGENT_TRAJECTORY_SCENARIO_ASSERTION_KINDS = new Set([
|
|
|
18
18
|
"trajectory.diff",
|
|
19
19
|
]);
|
|
20
20
|
const EXTERNAL_REF_FIELDS = [
|
|
21
|
-
"
|
|
21
|
+
"platformSlackEventIds",
|
|
22
22
|
"platformTraceIds",
|
|
23
23
|
"platformWorkEnvelopeIds",
|
|
24
24
|
"slackThreadRefs",
|
|
25
25
|
"evidenceArtifactIds",
|
|
26
26
|
];
|
|
27
|
+
const LEGACY_EXTERNAL_REF_FIELDS = [
|
|
28
|
+
"ensembleTranscriptIds",
|
|
29
|
+
];
|
|
30
|
+
function isExternalRefField(value) {
|
|
31
|
+
return EXTERNAL_REF_FIELDS.includes(value);
|
|
32
|
+
}
|
|
33
|
+
function isLegacyExternalRefField(value) {
|
|
34
|
+
return LEGACY_EXTERNAL_REF_FIELDS.includes(value);
|
|
35
|
+
}
|
|
36
|
+
function externalRefValues(externalRefs, field) {
|
|
37
|
+
if (isExternalRefField(field) || isLegacyExternalRefField(field)) {
|
|
38
|
+
return externalRefs[field];
|
|
39
|
+
}
|
|
40
|
+
return undefined;
|
|
41
|
+
}
|
|
42
|
+
function allExternalRefValues(externalRefs) {
|
|
43
|
+
return [...EXTERNAL_REF_FIELDS, ...LEGACY_EXTERNAL_REF_FIELDS].flatMap((field) => externalRefs[field] ?? []);
|
|
44
|
+
}
|
|
27
45
|
const RELEASE_GATE_TIERS = [
|
|
28
46
|
"smoke",
|
|
29
47
|
"regression",
|
|
@@ -275,9 +293,13 @@ export function validateAgentTrajectoryScenario(scenario, label = scenario.id) {
|
|
|
275
293
|
if (!isObject(scenario.externalRefs)) {
|
|
276
294
|
throw new Error(`${label}.externalRefs must be an object`);
|
|
277
295
|
}
|
|
296
|
+
const externalRefs = scenario.externalRefs;
|
|
278
297
|
let refs = 0;
|
|
279
|
-
for (const field of
|
|
280
|
-
|
|
298
|
+
for (const field of [
|
|
299
|
+
...EXTERNAL_REF_FIELDS,
|
|
300
|
+
...LEGACY_EXTERNAL_REF_FIELDS,
|
|
301
|
+
]) {
|
|
302
|
+
const values = externalRefs[field];
|
|
281
303
|
if (values === undefined)
|
|
282
304
|
continue;
|
|
283
305
|
if (!Array.isArray(values) ||
|
|
@@ -342,7 +364,8 @@ export function validateAgentTrajectoryScenario(scenario, label = scenario.id) {
|
|
|
342
364
|
throw new Error(`${label}.assertions[].requiredExternalRefKinds must not be empty for external.refs`);
|
|
343
365
|
}
|
|
344
366
|
if (kind === "external.refs") {
|
|
345
|
-
const unknownKinds = (assertion.requiredExternalRefKinds ?? []).filter((refKind) =>
|
|
367
|
+
const unknownKinds = (assertion.requiredExternalRefKinds ?? []).filter((refKind) => typeof refKind !== "string" ||
|
|
368
|
+
(!isExternalRefField(refKind) && !isLegacyExternalRefField(refKind)));
|
|
346
369
|
if (unknownKinds.length > 0) {
|
|
347
370
|
throw new Error(`${label}.assertions[].requiredExternalRefKinds contains unknown external ref kind(s): ${unknownKinds.join(", ")}`);
|
|
348
371
|
}
|
|
@@ -700,10 +723,10 @@ function evaluateAssertion(assertion, scenario, inputs, diff) {
|
|
|
700
723
|
return fail(assertion, "external.refs requires scenario.externalRefs.");
|
|
701
724
|
}
|
|
702
725
|
const missingKinds = (assertion.requiredExternalRefKinds ?? []).filter((kind) => {
|
|
703
|
-
const values = externalRefs
|
|
726
|
+
const values = externalRefValues(externalRefs, kind);
|
|
704
727
|
return !Array.isArray(values) || values.length === 0;
|
|
705
728
|
});
|
|
706
|
-
const flattenedRefs = new Set(
|
|
729
|
+
const flattenedRefs = new Set(allExternalRefValues(externalRefs));
|
|
707
730
|
const missingRefs = (assertion.requiredExternalRefs ?? []).filter((ref) => !flattenedRefs.has(ref));
|
|
708
731
|
const missing = [...missingKinds, ...missingRefs];
|
|
709
732
|
return missing.length === 0
|