@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.
Files changed (152) hide show
  1. package/README.md +4 -0
  2. package/dist/agent/providers/openai-codex-session.js +1 -1
  3. package/dist/agent/providers/openai-codex-session.js.map +1 -1
  4. package/dist/app-server/in-process-client.d.ts +2 -2
  5. package/dist/app-server/in-process-client.js.map +1 -1
  6. package/dist/app-server/protocol-modes-api.js +1 -1
  7. package/dist/app-server/protocol-modes-api.js.map +1 -1
  8. package/dist/app-server/sandbox-check-api.d.ts +21 -0
  9. package/dist/app-server/{sandbox-proof-api.d.ts.map → sandbox-check-api.d.ts.map} +1 -1
  10. package/dist/app-server/{sandbox-proof-api.js → sandbox-check-api.js} +18 -18
  11. package/dist/app-server/{sandbox-proof-api.js.map → sandbox-check-api.js.map} +1 -1
  12. package/dist/app-server/session-api.d.ts +5 -5
  13. package/dist/app-server/session-api.js +18 -18
  14. package/dist/app-server/session-api.js.map +1 -1
  15. package/dist/audit/logger.d.ts +1 -1
  16. package/dist/cli/args.d.ts.map +1 -1
  17. package/dist/cli/args.js +3 -1
  18. package/dist/cli/args.js.map +1 -1
  19. package/dist/cli/commands/codex.js +30 -3
  20. package/dist/cli/commands/codex.js.map +1 -1
  21. package/dist/cli/commands/update.d.ts +12 -0
  22. package/dist/cli/commands/update.d.ts.map +1 -0
  23. package/dist/cli/commands/update.js +148 -0
  24. package/dist/cli/commands/update.js.map +1 -0
  25. package/dist/cli/help.d.ts.map +1 -1
  26. package/dist/cli/help.js +4 -0
  27. package/dist/cli/help.js.map +1 -1
  28. package/dist/cli-tui/auth-state.d.ts +7 -0
  29. package/dist/cli-tui/auth-state.d.ts.map +1 -0
  30. package/dist/cli-tui/auth-state.js +46 -0
  31. package/dist/cli-tui/auth-state.js.map +1 -0
  32. package/dist/cli-tui/commands/command-catalog.d.ts.map +1 -1
  33. package/dist/cli-tui/commands/command-catalog.js +8 -3
  34. package/dist/cli-tui/commands/command-catalog.js.map +1 -1
  35. package/dist/cli-tui/commands/command-suite-handlers.d.ts +2 -5
  36. package/dist/cli-tui/commands/command-suite-handlers.d.ts.map +1 -1
  37. package/dist/cli-tui/commands/command-suite-handlers.js.map +1 -1
  38. package/dist/cli-tui/commands/subcommands/auth-commands.d.ts +6 -5
  39. package/dist/cli-tui/commands/subcommands/auth-commands.d.ts.map +1 -1
  40. package/dist/cli-tui/commands/subcommands/auth-commands.js +2 -2
  41. package/dist/cli-tui/commands/subcommands/auth-commands.js.map +1 -1
  42. package/dist/cli-tui/commands/subcommands/ui-commands.d.ts +1 -1
  43. package/dist/cli-tui/commands/subcommands/ui-commands.js +2 -2
  44. package/dist/cli-tui/commands/subcommands/ui-commands.js.map +1 -1
  45. package/dist/cli-tui/footer.d.ts.map +1 -1
  46. package/dist/cli-tui/footer.js +1 -1
  47. package/dist/cli-tui/footer.js.map +1 -1
  48. package/dist/cli-tui/oauth/oauth-flow-controller.d.ts.map +1 -1
  49. package/dist/cli-tui/oauth/oauth-flow-controller.js +24 -11
  50. package/dist/cli-tui/oauth/oauth-flow-controller.js.map +1 -1
  51. package/dist/cli-tui/selectors/oauth-selector-view.d.ts +1 -0
  52. package/dist/cli-tui/selectors/oauth-selector-view.d.ts.map +1 -1
  53. package/dist/cli-tui/selectors/oauth-selector-view.js +1 -1
  54. package/dist/cli-tui/selectors/oauth-selector-view.js.map +1 -1
  55. package/dist/cli-tui/selectors/oauth-selector.d.ts +2 -1
  56. package/dist/cli-tui/selectors/oauth-selector.d.ts.map +1 -1
  57. package/dist/cli-tui/selectors/oauth-selector.js +25 -2
  58. package/dist/cli-tui/selectors/oauth-selector.js.map +1 -1
  59. package/dist/cli-tui/tui-renderer/command-suite-wiring.d.ts +2 -5
  60. package/dist/cli-tui/tui-renderer/command-suite-wiring.d.ts.map +1 -1
  61. package/dist/cli-tui/tui-renderer/command-suite-wiring.js.map +1 -1
  62. package/dist/cli-tui/tui-renderer/ui-state-controller.d.ts +1 -1
  63. package/dist/cli-tui/tui-renderer/ui-state-controller.d.ts.map +1 -1
  64. package/dist/cli-tui/tui-renderer/ui-state-controller.js +5 -11
  65. package/dist/cli-tui/tui-renderer/ui-state-controller.js.map +1 -1
  66. package/dist/cli-tui/tui-renderer.d.ts +0 -4
  67. package/dist/cli-tui/tui-renderer.d.ts.map +1 -1
  68. package/dist/cli-tui/tui-renderer.js +4 -29
  69. package/dist/cli-tui/tui-renderer.js.map +1 -1
  70. package/dist/cli-tui/ui-state.js +1 -1
  71. package/dist/cli-tui/ui-state.js.map +1 -1
  72. package/dist/cli-tui/utils/footer-utils.d.ts +1 -1
  73. package/dist/cli-tui/utils/footer-utils.d.ts.map +1 -1
  74. package/dist/cli-tui/utils/footer-utils.js.map +1 -1
  75. package/dist/cli.js +4800 -3779
  76. package/dist/cli.js.map +1 -1
  77. package/dist/codex/app-server-client.d.ts +16 -2
  78. package/dist/codex/app-server-client.d.ts.map +1 -1
  79. package/dist/codex/app-server-client.js +67 -7
  80. package/dist/codex/app-server-client.js.map +1 -1
  81. package/dist/codex/auth.d.ts +4 -0
  82. package/dist/codex/auth.d.ts.map +1 -0
  83. package/dist/codex/auth.js +103 -0
  84. package/dist/codex/auth.js.map +1 -0
  85. package/dist/db/schema.d.ts +1 -1
  86. package/dist/evalops/agent-bootstrap.js +2 -2
  87. package/dist/evalops/agent-bootstrap.js.map +1 -1
  88. package/dist/main.d.ts.map +1 -1
  89. package/dist/main.js +10 -1
  90. package/dist/main.js.map +1 -1
  91. package/dist/models/config-loader.d.ts +12 -12
  92. package/dist/node_modules/@evalops/contracts/dist/maestro-app-server.d.ts +19 -19
  93. package/dist/node_modules/@evalops/contracts/dist/maestro-app-server.d.ts.map +1 -1
  94. package/dist/node_modules/@evalops/contracts/dist/maestro-app-server.js +12 -13
  95. package/dist/node_modules/@evalops/contracts/dist/maestro-app-server.js.map +1 -1
  96. package/dist/node_modules/@evalops/contracts/dist/scenario.d.ts +2 -0
  97. package/dist/node_modules/@evalops/contracts/dist/scenario.d.ts.map +1 -1
  98. package/dist/node_modules/@evalops/contracts/dist/scenario.js.map +1 -1
  99. package/dist/node_modules/@evalops/contracts/package.json +1 -1
  100. package/dist/node_modules/@evalops/tui/package.json +1 -1
  101. package/dist/oauth/index.d.ts +1 -0
  102. package/dist/oauth/index.d.ts.map +1 -1
  103. package/dist/oauth/index.js +42 -2
  104. package/dist/oauth/index.js.map +1 -1
  105. package/dist/platform/operating-plane-client.d.ts +3 -3
  106. package/dist/platform/operating-plane-client.d.ts.map +1 -1
  107. package/dist/platform/operating-plane-client.js.map +1 -1
  108. package/dist/platform/operating-plane-summary.js +3 -6
  109. package/dist/platform/operating-plane-summary.js.map +1 -1
  110. package/dist/server/agent-trajectory-scenarios.d.ts.map +1 -1
  111. package/dist/server/agent-trajectory-scenarios.js +29 -6
  112. package/dist/server/agent-trajectory-scenarios.js.map +1 -1
  113. package/dist/server/app-context.d.ts +2 -0
  114. package/dist/server/app-context.d.ts.map +1 -1
  115. package/dist/server/app-context.js.map +1 -1
  116. package/dist/server/handlers/headless-sessions.d.ts.map +1 -1
  117. package/dist/server/handlers/headless-sessions.js +44 -10
  118. package/dist/server/handlers/headless-sessions.js.map +1 -1
  119. package/dist/server/handlers/hosted-runner-identity.d.ts +2 -0
  120. package/dist/server/handlers/hosted-runner-identity.d.ts.map +1 -1
  121. package/dist/server/handlers/hosted-runner-identity.js +2 -0
  122. package/dist/server/handlers/hosted-runner-identity.js.map +1 -1
  123. package/dist/server/handlers/platform-a2a-push.d.ts.map +1 -1
  124. package/dist/server/handlers/platform-a2a-push.js +113 -2
  125. package/dist/server/handlers/platform-a2a-push.js.map +1 -1
  126. package/dist/server/handlers/ui.d.ts.map +1 -1
  127. package/dist/server/handlers/ui.js +5 -5
  128. package/dist/server/handlers/ui.js.map +1 -1
  129. package/dist/server/headless-in-process-host.d.ts.map +1 -1
  130. package/dist/server/headless-in-process-host.js +1 -1
  131. package/dist/server/headless-in-process-host.js.map +1 -1
  132. package/dist/server/headless-runtime-service.d.ts +9 -2
  133. package/dist/server/headless-runtime-service.d.ts.map +1 -1
  134. package/dist/server/headless-runtime-service.js +54 -15
  135. package/dist/server/headless-runtime-service.js.map +1 -1
  136. package/dist/server/stores/ui-store.d.ts.map +1 -1
  137. package/dist/server/stores/ui-store.js +8 -1
  138. package/dist/server/stores/ui-store.js.map +1 -1
  139. package/dist/tools/background/task-runtime.js +1 -1
  140. package/dist/tools/background/task-runtime.js.map +1 -1
  141. package/dist/tools/background/task-types.d.ts +1 -1
  142. package/dist/update/check.d.ts +2 -0
  143. package/dist/update/check.d.ts.map +1 -1
  144. package/dist/update/check.js +100 -41
  145. package/dist/update/check.js.map +1 -1
  146. package/dist/update/startup-refresh.d.ts +56 -0
  147. package/dist/update/startup-refresh.d.ts.map +1 -0
  148. package/dist/update/startup-refresh.js +321 -0
  149. package/dist/update/startup-refresh.js.map +1 -0
  150. package/dist/version.json +2 -2
  151. package/package.json +297 -296
  152. 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"]}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@evalops/contracts",
3
- "version": "0.10.46",
3
+ "version": "0.10.48",
4
4
  "description": "Shared Maestro contracts for frontend/backend integration",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@evalops/tui",
3
- "version": "0.10.46",
3
+ "version": "0.10.48",
4
4
  "description": "Terminal UI library with differential rendering for Maestro",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -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":"AAUA,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,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,CA0Cf;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,QAAQ,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBzE;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"}
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"}
@@ -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
- await loginOpenAICodex(options.onAuthUrl, options.onPromptCode, options.onStatus);
113
- shouldSyncConnectorConnection = true;
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
@@ -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
- value_proof?: OperatingPlaneRuntimeSignals;
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
- proof_points?: string[];
151
- missing_proof?: string[];
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":"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"}
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,eAAe,CAAC,EAAE,4BAA4B,CAAC;IAC/C,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,sBAAsB;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,6BAA6B,CAAC,EAAE,MAAM,CAAC;IACvC,kCAAkC,CAAC,EAAE,MAAM,CAAC;IAC5C,6BAA6B,CAAC,EAAE,MAAM,CAAC;IACvC,gCAAgC,CAAC,EAAE,MAAM,CAAC;CAC1C;AAED,MAAM,WAAW,kBAAkB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,sBAAsB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,sBAAsB;IACtC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,uBAAuB;IACvC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,sBAAsB;IACtC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,sBAAsB;IACtC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,4BAA4B;IAC5C,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;IACvB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,wBAAsB,kCAAkC,IAAI,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAchG;AAED,wBAAgB,0BAA0B,CACzC,MAAM,EAAE,IAAI,CAAC,qBAAqB,EAAE,SAAS,GAAG,aAAa,CAAC,EAC9D,KAAK,GAAE,sBAA2B,GAChC,MAAM,CA+BR;AAED,wBAAsB,yBAAyB,CAC9C,KAAK,GAAE,sBAA2B,EAClC,OAAO,GAAE,gCAAqC,GAC5C,OAAO,CAAC,wBAAwB,CAAC,CAqBnC"}
@@ -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.value_proof?.operator_summary),
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.value_proof;
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?.missing_proof ?? []).map(operatorFacingSignalLabel),
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":"AA2DA,MAAM,UAAU,iCAAiC,CAChD,UAAoC,EACpC,UAAwC,EAAE;IAE1C,MAAM,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;IAE3E,OAAO;QACN,eAAe,EAAE,UAAU,CAAC,gBAAgB;QAC5C,WAAW,EAAE,UAAU,CAAC,YAAY;QACpC,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC,MAAM;QAChC,kBAAkB,EAAE,aAAa,CAAC,UAAU,CAAC,mBAAmB,CAAC;QACjE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,0BAA0B,CAAC;KAC1C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC/C,MAAkC;IAElC,MAAM,KAAK,GAAG;QACb,iCAAiC,MAAM,CAAC,QAAQ,IAAI,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG;QACxF,cAAc,MAAM,CAAC,WAAW,EAAE;KAClC,CAAC;IACF,IAAI,MAAM,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,wBAAwB,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QACzD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CACT,KAAK,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,MAAM,IAAI,SAAS,QAAQ,GAAG,CAAC,OAAO,IAAI,SAAS,KAAK,GAAG,CAAC,KAAK,GAAG,CACxG,CAAC;QACF,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC;QAClD,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC;QACjD,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QACxC,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC;QACnD,IAAI,GAAG,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,KAAK,CAAC,IAAI,CAAC,sBAAsB,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,GAAG,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,KAAK,CAAC,IAAI,CAAC,sBAAsB,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,KAAK,CAAC,IAAI,CACT,gBAAgB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACpE,CAAC;QACH,CAAC;QACD,KAAK,MAAM,UAAU,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;YAC1C,KAAK,CAAC,IAAI,CAAC,kBAAkB,UAAU,EAAE,CAAC,CAAC;QAC5C,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,cAAc,OAAO,EAAE,CAAC,CAAC;QACrC,CAAC;QACD,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,4BAA4B,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,KAAK,EAAE,CAAC;YACX,KAAK,CAAC,IAAI,CAAC,YAAY,KAAK,EAAE,CAAC,CAAC;QACjC,CAAC;IACF,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,0BAA0B,CAClC,GAAsB;IAEtB,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;IACtE,OAAO,cAAc,CAAC;QACrB,KAAK,EAAE,GAAG,CAAC,YAAY;QACvB,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE;QAC/B,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE;QACjC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE;QACnC,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;QAC/C,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC9B,eAAe,EAAE,6BAA6B,CAAC,GAAG,CAAC;QACnD,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,gBAAgB,CAAC;QAC3D,cAAc;QACd,cAAc;QACd,YAAY,EAAE,qBAAqB,CAAC,GAAG,CAAC,aAAa,CAAC;QACtD,WAAW,EAAE,aAAa,CACzB,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CACxD;QACD,QAAQ,EAAE,aAAa,CACtB,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CACpD;QACD,QAAQ,EAAE,6BAA6B,CAAC,GAAG,CAAC;QAC5C,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;KAChC,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,GAAsB;IAIpD,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,CAAC;IAChC,MAAM,MAAM,GAAkB;QAC7B,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE;QACrD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE;QAClD,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE;QAChD,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE;QACxD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE;QAChD,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE;QACtD,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE;KAClD,CAAC;IACF,MAAM,cAAc,GAAG,MAAM;SAC3B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC;SACvC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC9B,MAAM,cAAc,GAAG,aAAa,CAAC;QACpC,GAAG,MAAM;aACP,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC;aACvC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;QAC7B,GAAG,CAAC,OAAO,EAAE,aAAa,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,yBAAyB,CAAC;QAChE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,4BAA4B;KAClD,CAAC,CAAC;IACH,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC;AAC3C,CAAC;AAED,SAAS,qBAAqB,CAC7B,YAAkD;IAElD,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC;SACzB,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CACjB,cAAc,CAAC;QACd,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE;QAC9B,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE;QACtC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE;QAClC,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;QAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACpC,SAAS,EAAE,QAAQ,CAAC,SAAS;KAC7B,CAAC,CACF;SACA,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,cAAc,CACtB,KAAsC;IAEtC,OAAO,cAAc,CAAC;QACrB,WAAW,EAAE,KAAK,EAAE,YAAY;QAChC,YAAY,EAAE,KAAK,EAAE,aAAa;QAClC,WAAW,EAAE,KAAK,EAAE,YAAY;QAChC,mBAAmB,EAAE,KAAK,EAAE,qBAAqB;QACjD,QAAQ,EAAE,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC;KAClC,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,6BAA6B,CACrC,GAAsB;IAEtB,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;IAC9B,OAAO,WAAW,CAAC;QAClB,QAAQ,EAAE,6BAA6B;QACvC,QAAQ,EAAE,kCAAkC;QAC5C,QAAQ,EAAE,6BAA6B;QACvC,QAAQ,EAAE,YAAY;QACtB,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,QAAQ;KAClB,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,6BAA6B,CAAC,GAAsB;IAC5D,OAAO,aAAa,CAAC;QACpB,GAAG,CAAC,GAAG,CAAC,mBAAmB,IAAI,EAAE,CAAC;QAClC,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,eAAe,GAAG,CAAC;YAC7C,CAAC,CAAC,GAAG,GAAG,CAAC,eAAe,IAAI,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,eAAe,CAAC,EAAE;YACzE,CAAC,CAAC,SAAS;QACZ,GAAG,CAAC,GAAG,CAAC,mBAAmB,IAAI,EAAE,CAAC;KAClC,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAsC;IAChE,MAAM,OAAO,GAAG;QACf,GAAG,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,EAAE;QACrC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa;QAChD,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS;QAChD,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS;KAC/D,CAAC;IACF,OAAO,GAAG,QAAQ,CAAC,EAAE,KAAK,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AAChE,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAa;IAC/C,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,CAAC,UAAU,EAAE,CAAC;QACjB,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,IAAI,UAAU,KAAK,yBAAyB,EAAE,CAAC;QAC9C,OAAO,4BAA4B,CAAC;IACrC,CAAC;IACD,OAAO,UAAU;SACf,OAAO,CAAC,cAAc,EAAE,QAAQ,CAAC;SACjC,OAAO,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,WAAW,CAAC,KAAgC;IACpD,MAAM,KAAK,GAAG;QACb,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ;YACpC,CAAC,CAAC,GAAG,KAAK,CAAC,WAAW,eAAe;YACrC,CAAC,CAAC,SAAS;QACZ,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ;YACpC,CAAC,CAAC,GAAG,KAAK,CAAC,WAAW,eAAe;YACrC,CAAC,CAAC,SAAS;QACZ,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ;YACrC,CAAC,CAAC,GAAG,KAAK,CAAC,YAAY,gBAAgB;YACvC,CAAC,CAAC,SAAS;QACZ,OAAO,KAAK,CAAC,mBAAmB,KAAK,QAAQ;YAC5C,CAAC,CAAC,GAAG,KAAK,CAAC,mBAAmB,cAAc;YAC5C,CAAC,CAAC,SAAS;QACZ,KAAK,CAAC,QAAQ;KACd,CAAC;IACF,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC;AACrD,CAAC;AAED,SAAS,WAAW,CAAC,MAAiC;IACrD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,UAAU,EAAE,CAAC;YAChB,OAAO,UAAU,CAAC;QACnB,CAAC;IACF,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AAED,SAAS,OAAO,CAAC,KAAyB;IACzC,MAAM,UAAU,GAAG,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACvD,OAAO,UAAU,IAAI,SAAS,CAAC;AAChC,CAAC;AAED,SAAS,QAAQ,CAChB,KAAe,EACf,KAAa,EACb,KAAyB;IAEzB,IAAI,KAAK,EAAE,CAAC;QACX,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,KAAK,KAAK,EAAE,CAAC,CAAC;IAClC,CAAC;AACF,CAAC;AAED,SAAS,aAAa,CACrB,MAA6C;IAE7C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,KAAK,MAAM,KAAK,IAAI,MAAM,IAAI,EAAE,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,SAAS;QACV,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAChB,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,UAAU,CAAC;AACnB,CAAC;AAED,SAAS,SAAS,CAAC,IAAY,EAAE,KAAa;IAC7C,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC;AACxC,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAyB;IACxD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACxE,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,cAAc,CAAoC,KAAQ;IAClE,OAAO,MAAM,CAAC,WAAW,CACxB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAC3D,CAAC;AACR,CAAC","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
- "ensembleTranscriptIds",
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 EXTERNAL_REF_FIELDS) {
280
- const values = scenario.externalRefs[field];
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) => !EXTERNAL_REF_FIELDS.includes(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[kind];
726
+ const values = externalRefValues(externalRefs, kind);
704
727
  return !Array.isArray(values) || values.length === 0;
705
728
  });
706
- const flattenedRefs = new Set(EXTERNAL_REF_FIELDS.flatMap((field) => externalRefs[field] ?? []));
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