@bjoernrochel/sevro 1.0.0 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CONTRIBUTING.md +34 -4
- package/README.md +7 -6
- package/dist/examples/basic/graded.json +13 -0
- package/dist/examples/basic/host.js +9 -0
- package/dist/examples/basic/host.js.map +1 -0
- package/dist/examples/basic/prompt-only.json +7 -0
- package/dist/examples/recipes/candidate.js +23 -0
- package/dist/examples/recipes/candidate.js.map +1 -0
- package/dist/examples/recipes/cases/coding-change.json +21 -0
- package/dist/examples/recipes/cases/host-tools.json +21 -0
- package/dist/examples/recipes/cases/mise.json +21 -0
- package/dist/examples/recipes/cases/node.json +21 -0
- package/dist/examples/recipes/cases/python-uv.json +21 -0
- package/dist/examples/recipes/cases/semantic.json +17 -0
- package/dist/examples/recipes/coding-change/check.js +16 -0
- package/dist/examples/recipes/coding-change/check.js.map +1 -0
- package/dist/examples/recipes/executable.js +20 -0
- package/dist/examples/recipes/executable.js.map +1 -0
- package/dist/examples/recipes/extension-artifacts.js +56 -0
- package/dist/examples/recipes/extension-artifacts.js.map +1 -0
- package/dist/examples/recipes/extension-methods.js +167 -0
- package/dist/examples/recipes/extension-methods.js.map +1 -0
- package/dist/examples/recipes/extension.js +28 -0
- package/dist/examples/recipes/extension.js.map +1 -0
- package/dist/examples/recipes/modules.js +9 -0
- package/dist/examples/recipes/modules.js.map +1 -0
- package/dist/examples/recipes/repository-skill/.agents/skills/startup-guide/SKILL.md +7 -0
- package/dist/examples/recipes/repository-skill/.claude/skills/startup-guide/SKILL.md +7 -0
- package/dist/examples/recipes/repository-skill/README.md +3 -0
- package/dist/examples/recipes/run-inputs.js +144 -0
- package/dist/examples/recipes/run-inputs.js.map +1 -0
- package/dist/examples/recipes/run-options.js +103 -0
- package/dist/examples/recipes/run-options.js.map +1 -0
- package/dist/examples/recipes/run.js +62 -0
- package/dist/examples/recipes/run.js.map +1 -0
- package/dist/examples/recipes/runtime/empty.json +1 -0
- package/dist/examples/recipes/runtime/goals.json +1 -0
- package/dist/examples/recipes/runtime/mise.json +6 -0
- package/dist/examples/recipes/runtime/path.json +1 -0
- package/dist/examples/recipes/runtime/plugins.json +4 -0
- package/dist/examples/recipes/runtime/python-uv.json +10 -0
- package/dist/examples/recipes/semantic-judge.js +27 -0
- package/dist/examples/recipes/semantic-judge.js.map +1 -0
- package/dist/examples/templates/coding/adapter.js +14 -0
- package/dist/examples/templates/coding/adapter.js.map +1 -0
- package/dist/examples/templates/coding/case.json +15 -0
- package/dist/examples/templates/repository-skill/.agents/skills/startup-guide/SKILL.md +6 -0
- package/dist/examples/templates/repository-skill/extension-data.js +61 -0
- package/dist/examples/templates/repository-skill/extension-data.js.map +1 -0
- package/dist/examples/templates/repository-skill/extension.js +29 -0
- package/dist/examples/templates/repository-skill/extension.js.map +1 -0
- package/dist/examples/templates/response/adapter.js +13 -0
- package/dist/examples/templates/response/adapter.js.map +1 -0
- package/dist/examples/templates/response/case.json +13 -0
- package/dist/src/advisory.js +86 -0
- package/dist/src/advisory.js.map +1 -0
- package/dist/src/candidate-artifacts.js +139 -0
- package/dist/src/candidate-artifacts.js.map +1 -0
- package/dist/src/candidate-codex-state.js +110 -0
- package/dist/src/candidate-codex-state.js.map +1 -0
- package/dist/src/case-validation.js +92 -0
- package/dist/src/case-validation.js.map +1 -0
- package/dist/src/cli/cancellation.js +21 -0
- package/dist/src/cli/cancellation.js.map +1 -0
- package/dist/src/cli/command.js +60 -0
- package/dist/src/cli/command.js.map +1 -0
- package/dist/src/cli/completion.js +14 -0
- package/dist/src/cli/completion.js.map +1 -0
- package/dist/src/cli/demo.js +45 -0
- package/dist/src/cli/demo.js.map +1 -0
- package/dist/src/cli/evaluation.js +40 -0
- package/dist/src/cli/evaluation.js.map +1 -0
- package/dist/src/cli/extension.js +54 -0
- package/dist/src/cli/extension.js.map +1 -0
- package/dist/src/cli/help.js +190 -0
- package/dist/src/cli/help.js.map +1 -0
- package/dist/src/cli/hosts.js +33 -0
- package/dist/src/cli/hosts.js.map +1 -0
- package/dist/src/cli/init-settings.js +29 -0
- package/dist/src/cli/init-settings.js.map +1 -0
- package/dist/src/cli/init.js +82 -0
- package/dist/src/cli/init.js.map +1 -0
- package/dist/src/cli/invocation.js +431 -0
- package/dist/src/cli/invocation.js.map +1 -0
- package/dist/src/cli/loading.js +110 -0
- package/dist/src/cli/loading.js.map +1 -0
- package/dist/src/cli/preparation.js +88 -0
- package/dist/src/cli/preparation.js.map +1 -0
- package/dist/src/cli/presentation.js +61 -0
- package/dist/src/cli/presentation.js.map +1 -0
- package/dist/src/cli/progress.js +5 -0
- package/dist/src/cli/progress.js.map +1 -0
- package/dist/src/cli/run-manifest.js +108 -0
- package/dist/src/cli/run-manifest.js.map +1 -0
- package/dist/src/cli/run-options.js +367 -0
- package/dist/src/cli/run-options.js.map +1 -0
- package/dist/src/cli/run-overrides.js +51 -0
- package/dist/src/cli/run-overrides.js.map +1 -0
- package/dist/src/cli/settings.js +127 -0
- package/dist/src/cli/settings.js.map +1 -0
- package/dist/src/cli/summary.js +28 -0
- package/dist/src/cli/summary.js.map +1 -0
- package/dist/src/cli.js +20 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/contract-types.js +2 -0
- package/dist/src/contract-types.js.map +1 -0
- package/dist/src/engine.js +4 -0
- package/dist/src/engine.js.map +1 -0
- package/dist/src/evaluation/advisory.js +85 -0
- package/dist/src/evaluation/advisory.js.map +1 -0
- package/dist/src/evaluation/check-plan.js +292 -0
- package/dist/src/evaluation/check-plan.js.map +1 -0
- package/dist/src/evaluation/collection.js +61 -0
- package/dist/src/evaluation/collection.js.map +1 -0
- package/dist/src/evaluation/context.js +2 -0
- package/dist/src/evaluation/context.js.map +1 -0
- package/dist/src/evaluation/grading-host.js +28 -0
- package/dist/src/evaluation/grading-host.js.map +1 -0
- package/dist/src/evaluation/grading.js +154 -0
- package/dist/src/evaluation/grading.js.map +1 -0
- package/dist/src/evaluation/invocation-plan.js +312 -0
- package/dist/src/evaluation/invocation-plan.js.map +1 -0
- package/dist/src/evaluation/plan.js +376 -0
- package/dist/src/evaluation/plan.js.map +1 -0
- package/dist/src/evaluation/progress.js +14 -0
- package/dist/src/evaluation/progress.js.map +1 -0
- package/dist/src/evaluation/resources.js +159 -0
- package/dist/src/evaluation/resources.js.map +1 -0
- package/dist/src/evaluation/run.js +148 -0
- package/dist/src/evaluation/run.js.map +1 -0
- package/dist/src/evaluation/scheduler.js +27 -0
- package/dist/src/evaluation/scheduler.js.map +1 -0
- package/dist/src/evaluation/semantic.js +183 -0
- package/dist/src/evaluation/semantic.js.map +1 -0
- package/dist/src/evaluation/trial.js +593 -0
- package/dist/src/evaluation/trial.js.map +1 -0
- package/dist/src/evaluation/types.js +20 -0
- package/dist/src/evaluation/types.js.map +1 -0
- package/dist/src/evidence/host-results.js +67 -0
- package/dist/src/evidence/host-results.js.map +1 -0
- package/dist/src/evidence/retained-artifacts.js +17 -0
- package/dist/src/evidence/retained-artifacts.js.map +1 -0
- package/dist/src/evidence/trial-writer.js +131 -0
- package/dist/src/evidence/trial-writer.js.map +1 -0
- package/dist/src/evidence/usage.js +14 -0
- package/dist/src/evidence/usage.js.map +1 -0
- package/dist/src/executable.js +20 -0
- package/dist/src/executable.js.map +1 -0
- package/dist/src/extension-client.js +212 -0
- package/dist/src/extension-client.js.map +1 -0
- package/dist/src/extension-session.js +236 -0
- package/dist/src/extension-session.js.map +1 -0
- package/dist/src/fixtures/advisory.js +206 -0
- package/dist/src/fixtures/advisory.js.map +1 -0
- package/dist/src/fixtures/bin.js +41 -0
- package/dist/src/fixtures/bin.js.map +1 -0
- package/dist/src/fixtures/cleanup.js +43 -0
- package/dist/src/fixtures/cleanup.js.map +1 -0
- package/dist/src/fixtures/create.js +94 -0
- package/dist/src/fixtures/create.js.map +1 -0
- package/dist/src/fixtures/generated.js +181 -0
- package/dist/src/fixtures/generated.js.map +1 -0
- package/dist/src/fixtures/git-hooks.js +16 -0
- package/dist/src/fixtures/git-hooks.js.map +1 -0
- package/dist/src/fixtures/preparation.js +201 -0
- package/dist/src/fixtures/preparation.js.map +1 -0
- package/dist/src/fixtures/repository.js +255 -0
- package/dist/src/fixtures/repository.js.map +1 -0
- package/dist/src/fixtures/setup.js +175 -0
- package/dist/src/fixtures/setup.js.map +1 -0
- package/dist/src/fixtures/tools.js +57 -0
- package/dist/src/fixtures/tools.js.map +1 -0
- package/dist/src/fixtures/workspace-state.js +155 -0
- package/dist/src/fixtures/workspace-state.js.map +1 -0
- package/dist/src/generated/cli-result.cjs +2 -0
- package/dist/src/generated/extension.cjs +2 -0
- package/dist/src/generated/report.cjs +2 -0
- package/dist/src/generated/run-evidence.cjs +2 -0
- package/dist/src/generated/runtime.cjs +2 -0
- package/dist/src/git.js +72 -0
- package/dist/src/git.js.map +1 -0
- package/dist/src/graders/artifact.js +68 -0
- package/dist/src/graders/artifact.js.map +1 -0
- package/dist/src/graders/git-head.js +112 -0
- package/dist/src/graders/git-head.js.map +1 -0
- package/dist/src/graders/output.js +345 -0
- package/dist/src/graders/output.js.map +1 -0
- package/dist/src/graders/semantic.js +132 -0
- package/dist/src/graders/semantic.js.map +1 -0
- package/dist/src/graders/shell.js +321 -0
- package/dist/src/graders/shell.js.map +1 -0
- package/dist/src/host-diagnostic-redaction.js +52 -0
- package/dist/src/host-diagnostic-redaction.js.map +1 -0
- package/dist/src/host-diagnostics.js +248 -0
- package/dist/src/host-diagnostics.js.map +1 -0
- package/dist/src/hosts/claude-continuation.js +89 -0
- package/dist/src/hosts/claude-continuation.js.map +1 -0
- package/dist/src/hosts/claude-credential.js +121 -0
- package/dist/src/hosts/claude-credential.js.map +1 -0
- package/dist/src/hosts/claude-events.js +136 -0
- package/dist/src/hosts/claude-events.js.map +1 -0
- package/dist/src/hosts/claude-keychain.js +100 -0
- package/dist/src/hosts/claude-keychain.js.map +1 -0
- package/dist/src/hosts/claude-login-recovery.js +67 -0
- package/dist/src/hosts/claude-login-recovery.js.map +1 -0
- package/dist/src/hosts/claude-login-refresh.js +146 -0
- package/dist/src/hosts/claude-login-refresh.js.map +1 -0
- package/dist/src/hosts/claude-login-store.js +124 -0
- package/dist/src/hosts/claude-login-store.js.map +1 -0
- package/dist/src/hosts/claude-login.js +74 -0
- package/dist/src/hosts/claude-login.js.map +1 -0
- package/dist/src/hosts/claude-native-goal.js +138 -0
- package/dist/src/hosts/claude-native-goal.js.map +1 -0
- package/dist/src/hosts/claude-process.js +10 -0
- package/dist/src/hosts/claude-process.js.map +1 -0
- package/dist/src/hosts/claude-refresh-lock.js +76 -0
- package/dist/src/hosts/claude-refresh-lock.js.map +1 -0
- package/dist/src/hosts/claude-repository-invocation.js +229 -0
- package/dist/src/hosts/claude-repository-invocation.js.map +1 -0
- package/dist/src/hosts/claude-settings.js +158 -0
- package/dist/src/hosts/claude-settings.js.map +1 -0
- package/dist/src/hosts/claude-skill-activations.js +131 -0
- package/dist/src/hosts/claude-skill-activations.js.map +1 -0
- package/dist/src/hosts/claude-state.js +237 -0
- package/dist/src/hosts/claude-state.js.map +1 -0
- package/dist/src/hosts/claude-tool-calls.js +150 -0
- package/dist/src/hosts/claude-tool-calls.js.map +1 -0
- package/dist/src/hosts/claude.js +373 -0
- package/dist/src/hosts/claude.js.map +1 -0
- package/dist/src/hosts/codex-app-server.js +764 -0
- package/dist/src/hosts/codex-app-server.js.map +1 -0
- package/dist/src/hosts/codex-configuration.js +91 -0
- package/dist/src/hosts/codex-configuration.js.map +1 -0
- package/dist/src/hosts/codex-events.js +104 -0
- package/dist/src/hosts/codex-events.js.map +1 -0
- package/dist/src/hosts/codex-exec-controls.js +434 -0
- package/dist/src/hosts/codex-exec-controls.js.map +1 -0
- package/dist/src/hosts/codex-invocation.js +54 -0
- package/dist/src/hosts/codex-invocation.js.map +1 -0
- package/dist/src/hosts/codex-marketplace.js +185 -0
- package/dist/src/hosts/codex-marketplace.js.map +1 -0
- package/dist/src/hosts/codex-native-calls.js +516 -0
- package/dist/src/hosts/codex-native-calls.js.map +1 -0
- package/dist/src/hosts/codex-process.js +10 -0
- package/dist/src/hosts/codex-process.js.map +1 -0
- package/dist/src/hosts/codex-profile.js +206 -0
- package/dist/src/hosts/codex-profile.js.map +1 -0
- package/dist/src/hosts/codex-session-files.js +89 -0
- package/dist/src/hosts/codex-session-files.js.map +1 -0
- package/dist/src/hosts/codex-state.js +310 -0
- package/dist/src/hosts/codex-state.js.map +1 -0
- package/dist/src/hosts/codex.js +527 -0
- package/dist/src/hosts/codex.js.map +1 -0
- package/dist/src/hosts/isolation-common.js +43 -0
- package/dist/src/hosts/isolation-common.js.map +1 -0
- package/dist/src/hosts/isolation-roots.js +64 -0
- package/dist/src/hosts/isolation-roots.js.map +1 -0
- package/dist/src/hosts/isolation.js +12 -0
- package/dist/src/hosts/isolation.js.map +1 -0
- package/dist/src/hosts/linux-sandbox.js +127 -0
- package/dist/src/hosts/linux-sandbox.js.map +1 -0
- package/dist/src/hosts/mac-sandbox.js +137 -0
- package/dist/src/hosts/mac-sandbox.js.map +1 -0
- package/dist/src/hosts/native-controls.js +151 -0
- package/dist/src/hosts/native-controls.js.map +1 -0
- package/dist/src/hosts/native-request.js +33 -0
- package/dist/src/hosts/native-request.js.map +1 -0
- package/dist/src/hosts/process-lifecycle.js +167 -0
- package/dist/src/hosts/process-lifecycle.js.map +1 -0
- package/dist/src/hosts/protected-worktrees.js +81 -0
- package/dist/src/hosts/protected-worktrees.js.map +1 -0
- package/dist/src/hosts/skill-hook-catalog.js +100 -0
- package/dist/src/hosts/skill-hook-catalog.js.map +1 -0
- package/dist/src/hosts/skill-hook-handler.js +228 -0
- package/dist/src/hosts/skill-hook-handler.js.map +1 -0
- package/dist/src/hosts/skill-hooks.js +423 -0
- package/dist/src/hosts/skill-hooks.js.map +1 -0
- package/dist/src/hosts/workspace-fingerprint.js +72 -0
- package/dist/src/hosts/workspace-fingerprint.js.map +1 -0
- package/dist/src/identity.js +167 -0
- package/dist/src/identity.js.map +1 -0
- package/dist/src/instrumentation.js +83 -0
- package/dist/src/instrumentation.js.map +1 -0
- package/dist/src/native-transcript-state.js +85 -0
- package/dist/src/native-transcript-state.js.map +1 -0
- package/dist/src/native-transcript-view.js +65 -0
- package/dist/src/native-transcript-view.js.map +1 -0
- package/dist/src/native-transcripts.js +208 -0
- package/dist/src/native-transcripts.js.map +1 -0
- package/dist/src/paths.js +13 -0
- package/dist/src/paths.js.map +1 -0
- package/dist/src/process-lifecycle.js +101 -0
- package/dist/src/process-lifecycle.js.map +1 -0
- package/dist/src/provenance.js +263 -0
- package/dist/src/provenance.js.map +1 -0
- package/dist/src/prune.js +228 -0
- package/dist/src/prune.js.map +1 -0
- package/dist/src/report.js +276 -0
- package/dist/src/report.js.map +1 -0
- package/dist/src/resolved-case.js +29 -0
- package/dist/src/resolved-case.js.map +1 -0
- package/dist/src/results-lock.js +40 -0
- package/dist/src/results-lock.js.map +1 -0
- package/dist/src/results.js +127 -0
- package/dist/src/results.js.map +1 -0
- package/dist/src/run-owner.js +283 -0
- package/dist/src/run-owner.js.map +1 -0
- package/dist/src/runner-paths.js +11 -0
- package/dist/src/runner-paths.js.map +1 -0
- package/dist/src/runtime/config.js +323 -0
- package/dist/src/runtime/config.js.map +1 -0
- package/dist/src/runtime/discovery-apple.js +65 -0
- package/dist/src/runtime/discovery-apple.js.map +1 -0
- package/dist/src/runtime/discovery-providers.js +37 -0
- package/dist/src/runtime/discovery-providers.js.map +1 -0
- package/dist/src/runtime/discovery.js +40 -0
- package/dist/src/runtime/discovery.js.map +1 -0
- package/dist/src/runtime/hook-processes.js +81 -0
- package/dist/src/runtime/hook-processes.js.map +1 -0
- package/dist/src/runtime/hooks.js +304 -0
- package/dist/src/runtime/hooks.js.map +1 -0
- package/dist/src/runtime/paths.js +244 -0
- package/dist/src/runtime/paths.js.map +1 -0
- package/dist/src/runtime/query.js +76 -0
- package/dist/src/runtime/query.js.map +1 -0
- package/dist/src/runtime/seeds.js +98 -0
- package/dist/src/runtime/seeds.js.map +1 -0
- package/dist/src/runtime/shared-cache.js +81 -0
- package/dist/src/runtime/shared-cache.js.map +1 -0
- package/dist/src/runtime/state.js +106 -0
- package/dist/src/runtime/state.js.map +1 -0
- package/dist/src/runtime-process.js +148 -0
- package/dist/src/runtime-process.js.map +1 -0
- package/dist/src/schema-types.js +2 -0
- package/dist/src/schema-types.js.map +1 -0
- package/dist/src/schema.js +16 -0
- package/dist/src/schema.js.map +1 -0
- package/dist/src/shell.js +5 -0
- package/dist/src/shell.js.map +1 -0
- package/dist/src/sqlite-lock.js +18 -0
- package/dist/src/sqlite-lock.js.map +1 -0
- package/dist/src/storage.js +21 -0
- package/dist/src/storage.js.map +1 -0
- package/dist/src/transcript-retention.js +109 -0
- package/dist/src/transcript-retention.js.map +1 -0
- package/dist/src/value-guards.js +26 -0
- package/dist/src/value-guards.js.map +1 -0
- package/docs/architecture.md +5 -2
- package/docs/creating-cases.md +2 -3
- package/docs/development-cli.md +12 -7
- package/docs/documentation-quality.md +4 -3
- package/docs/evaluation-workflow.md +8 -8
- package/docs/getting-started.md +7 -6
- package/docs/guide-evaluation.md +1 -1
- package/docs/identity-v1.md +4 -1
- package/docs/installing.md +31 -13
- package/docs/licensing.md +2 -2
- package/docs/native-hosts.md +1 -1
- package/docs/recipes.md +41 -40
- package/docs/releases.md +20 -4
- package/docs/run-settings-v1.md +3 -3
- package/docs/specs/repository-guide.md +1 -1
- package/docs/troubleshooting.md +1 -1
- package/docs/typescript-quality.md +18 -1
- package/examples/recipes/executable.ts +19 -0
- package/examples/recipes/extension-artifacts.ts +1 -1
- package/examples/recipes/extension.ts +2 -1
- package/examples/recipes/modules.ts +9 -0
- package/examples/recipes/run-inputs.ts +14 -19
- package/examples/recipes/run-options.ts +9 -8
- package/examples/recipes/run.ts +21 -7
- package/examples/templates/repository-skill/extension-data.ts +1 -1
- package/examples/templates/repository-skill/extension.ts +2 -1
- package/package.json +14 -6
- package/src/cli/demo.ts +3 -2
- package/src/cli/help.ts +4 -3
- package/src/cli/init-settings.ts +5 -4
- package/src/cli/init.ts +9 -8
- package/src/cli/invocation.ts +2 -1
- package/src/cli/preparation.ts +2 -2
- package/src/cli.ts +1 -1
- package/src/executable.ts +19 -0
- package/src/extension-client.ts +6 -12
- package/src/fixtures/setup.ts +3 -2
- package/src/git.ts +2 -1
- package/src/graders/git-head.ts +3 -2
- package/src/graders/shell.ts +4 -3
- package/src/hosts/claude-keychain.ts +3 -2
- package/src/hosts/claude-login-refresh.ts +3 -2
- package/src/hosts/claude-refresh-lock.ts +2 -1
- package/src/hosts/claude-settings.ts +3 -1
- package/src/hosts/claude.ts +1 -1
- package/src/hosts/isolation-roots.ts +3 -2
- package/src/hosts/process-lifecycle.ts +4 -6
- package/src/hosts/protected-worktrees.ts +2 -1
- package/src/hosts/skill-hook-handler.ts +1 -1
- package/src/hosts/skill-hooks.ts +10 -2
- package/src/provenance.ts +7 -6
- package/src/results-lock.ts +4 -4
- package/src/run-owner.ts +15 -9
- package/src/runner-paths.ts +21 -0
- package/src/runtime/hook-processes.ts +2 -1
- package/src/runtime/hooks.ts +9 -7
- package/src/runtime-process.ts +194 -0
- package/src/sqlite-lock.ts +25 -0
|
@@ -0,0 +1,516 @@
|
|
|
1
|
+
import { isRecord, isUnknownArray } from "../value-guards.js";
|
|
2
|
+
import { codexExecCallReceipts, } from "./codex-exec-controls.js";
|
|
3
|
+
import { readNativeSession, locateNativeSession as sessionPath, } from "./codex-session-files.js";
|
|
4
|
+
const MAX_SESSION_ENTRIES = 10_000;
|
|
5
|
+
const MAX_RETAINED_CALLS = 128;
|
|
6
|
+
const MAX_CHILD_SESSIONS = 8;
|
|
7
|
+
const GOAL_CONTROLS = new Set(["create_goal", "get_goal", "update_goal"]);
|
|
8
|
+
const COLLABORATION_CONTROLS = new Set([
|
|
9
|
+
"spawn_agent",
|
|
10
|
+
"list_agents",
|
|
11
|
+
"wait_agent",
|
|
12
|
+
"followup_task",
|
|
13
|
+
"send_message",
|
|
14
|
+
"interrupt_agent",
|
|
15
|
+
]);
|
|
16
|
+
function unavailable(completeness) {
|
|
17
|
+
return {
|
|
18
|
+
id: "sevro.codex.native-calls",
|
|
19
|
+
completeness,
|
|
20
|
+
data: {
|
|
21
|
+
method: "native_session",
|
|
22
|
+
calls: [],
|
|
23
|
+
toolCalls: [],
|
|
24
|
+
submittedExecCalls: 0,
|
|
25
|
+
acceptedSpawns: [],
|
|
26
|
+
feedbackCalls: [],
|
|
27
|
+
childSessions: [],
|
|
28
|
+
childrenTruncated: false,
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
function nativeControlNamespace(payload) {
|
|
33
|
+
if (goalNamespace(payload.namespace) && GOAL_CONTROLS.has(payload.name))
|
|
34
|
+
return "functions";
|
|
35
|
+
if (payload.namespace === "collaboration" &&
|
|
36
|
+
COLLABORATION_CONTROLS.has(payload.name))
|
|
37
|
+
return "collaboration";
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
function goalNamespace(value) {
|
|
41
|
+
return value === "functions" || value === undefined;
|
|
42
|
+
}
|
|
43
|
+
function directCall(ordinal, payload) {
|
|
44
|
+
if (payload.type !== "function_call" || typeof payload.name !== "string")
|
|
45
|
+
return null;
|
|
46
|
+
const namespace = nativeControlNamespace({ ...payload, name: payload.name });
|
|
47
|
+
return namespace
|
|
48
|
+
? { ordinal, namespace, name: payload.name, evidence: "invocation_attempt" }
|
|
49
|
+
: null;
|
|
50
|
+
}
|
|
51
|
+
const IDENTIFIER = /^[A-Za-z0-9][A-Za-z0-9._:/-]{0,127}$/;
|
|
52
|
+
const AGENT_REF = /^(?:\/root(?:\/[a-z0-9_]+)+|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$/;
|
|
53
|
+
function bounded(value, pattern) {
|
|
54
|
+
return typeof value === "string" && value.length <= 128 && pattern.test(value)
|
|
55
|
+
? value
|
|
56
|
+
: undefined;
|
|
57
|
+
}
|
|
58
|
+
function toolNamespace(value) {
|
|
59
|
+
return value === "functions" || value === "collaboration" || value === "clock"
|
|
60
|
+
? value
|
|
61
|
+
: "other";
|
|
62
|
+
}
|
|
63
|
+
function parsedObject(text) {
|
|
64
|
+
if (typeof text !== "string")
|
|
65
|
+
return null;
|
|
66
|
+
try {
|
|
67
|
+
const value = JSON.parse(text);
|
|
68
|
+
return isRecord(value) ? value : null;
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
function feedbackTarget(args) {
|
|
75
|
+
if (!args)
|
|
76
|
+
return undefined;
|
|
77
|
+
return (bounded(args.target, AGENT_REF) ??
|
|
78
|
+
bounded(args.target, /^[a-z0-9][a-z0-9_]{0,63}$/));
|
|
79
|
+
}
|
|
80
|
+
function nativeToolTarget(payload, namespace, name) {
|
|
81
|
+
if (namespace !== "collaboration" ||
|
|
82
|
+
!["followup_task", "send_message", "interrupt_agent"].includes(name))
|
|
83
|
+
return undefined;
|
|
84
|
+
return feedbackTarget(parsedObject(payload.arguments));
|
|
85
|
+
}
|
|
86
|
+
function toolCallType(value) {
|
|
87
|
+
return value === "function_call" || value === "custom_tool_call";
|
|
88
|
+
}
|
|
89
|
+
function nativeToolCall(ordinal, payload) {
|
|
90
|
+
if (!toolCallType(payload.type))
|
|
91
|
+
return null;
|
|
92
|
+
const namespace = toolNamespace(payload.namespace);
|
|
93
|
+
const name = bounded(payload.name, /^[A-Za-z_][A-Za-z0-9_]{0,63}$/) ?? "other";
|
|
94
|
+
const target = nativeToolTarget(payload, namespace, name);
|
|
95
|
+
return { ordinal, namespace, name, ...(target ? { target } : {}) };
|
|
96
|
+
}
|
|
97
|
+
function spawnRequest(payload) {
|
|
98
|
+
return (payload.type === "function_call" &&
|
|
99
|
+
payload.namespace === "collaboration" &&
|
|
100
|
+
payload.name === "spawn_agent");
|
|
101
|
+
}
|
|
102
|
+
function acceptedSpawns(entries) {
|
|
103
|
+
const requests = entries.filter(({ payload }) => spawnRequest(payload));
|
|
104
|
+
const accepted = [];
|
|
105
|
+
for (const request of requests) {
|
|
106
|
+
const spawn = acceptedSpawn(request, requests, entries);
|
|
107
|
+
if (spawn)
|
|
108
|
+
accepted.push(spawn);
|
|
109
|
+
}
|
|
110
|
+
return accepted;
|
|
111
|
+
}
|
|
112
|
+
function spawnArguments(request, requests) {
|
|
113
|
+
const callId = bounded(request.payload.call_id, IDENTIFIER);
|
|
114
|
+
if (!callId ||
|
|
115
|
+
requests.filter(({ payload }) => payload.call_id === callId).length !== 1)
|
|
116
|
+
return null;
|
|
117
|
+
const args = parsedObject(request.payload.arguments);
|
|
118
|
+
return args ? { callId, args } : null;
|
|
119
|
+
}
|
|
120
|
+
function startedSpawn(payload, callId) {
|
|
121
|
+
const item = isRecord(payload.item) ? payload.item : {};
|
|
122
|
+
return (payload.type === "item_completed" &&
|
|
123
|
+
item.type === "SubAgentActivity" &&
|
|
124
|
+
item.id === callId &&
|
|
125
|
+
item.kind === "started");
|
|
126
|
+
}
|
|
127
|
+
function spawnBoundaries(entries, callId) {
|
|
128
|
+
const starts = entries.filter(({ payload }) => startedSpawn(payload, callId));
|
|
129
|
+
const outputs = entries.filter(({ payload }) => payload.type === "function_call_output" && payload.call_id === callId);
|
|
130
|
+
const [start] = starts, [result] = outputs;
|
|
131
|
+
if (starts.length !== 1 ||
|
|
132
|
+
outputs.length !== 1 ||
|
|
133
|
+
start === undefined ||
|
|
134
|
+
result === undefined)
|
|
135
|
+
return null;
|
|
136
|
+
return { start, result };
|
|
137
|
+
}
|
|
138
|
+
function spawnIdentity(request, start, result) {
|
|
139
|
+
const item = isRecord(start.payload.item) ? start.payload.item : {};
|
|
140
|
+
const agentRef = bounded(item.agent_path, AGENT_REF), threadId = bounded(item.agent_thread_id, IDENTIFIER);
|
|
141
|
+
if (!agentRef || !threadId || !spawnOrdered(request, start, result))
|
|
142
|
+
return null;
|
|
143
|
+
return { agentRef, threadId };
|
|
144
|
+
}
|
|
145
|
+
function spawnOrdered(request, start, result) {
|
|
146
|
+
return request.ordinal < start.ordinal && start.ordinal < result.ordinal;
|
|
147
|
+
}
|
|
148
|
+
function acceptedSpawn(request, requests, entries) {
|
|
149
|
+
const declaration = spawnArguments(request, requests);
|
|
150
|
+
if (!declaration)
|
|
151
|
+
return null;
|
|
152
|
+
const boundaries = spawnBoundaries(entries, declaration.callId);
|
|
153
|
+
if (!boundaries)
|
|
154
|
+
return null;
|
|
155
|
+
return correlatedSpawn(request, declaration, boundaries);
|
|
156
|
+
}
|
|
157
|
+
function correlatedSpawn(request, declaration, boundaries) {
|
|
158
|
+
const { start, result } = boundaries;
|
|
159
|
+
const identity = spawnIdentity(request, start, result);
|
|
160
|
+
if (!identity)
|
|
161
|
+
return null;
|
|
162
|
+
const output = parsedObject(result.payload.output);
|
|
163
|
+
if (!output || output.task_name !== identity.agentRef)
|
|
164
|
+
return null;
|
|
165
|
+
return {
|
|
166
|
+
callId: declaration.callId,
|
|
167
|
+
...identity,
|
|
168
|
+
requestedOrdinal: request.ordinal,
|
|
169
|
+
startedOrdinal: start.ordinal,
|
|
170
|
+
acceptedOrdinal: result.ordinal,
|
|
171
|
+
...requestFields(declaration.args),
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
function requestFields(args) {
|
|
175
|
+
const taskName = bounded(args.task_name, /^[a-z0-9][a-z0-9_]{0,63}$/);
|
|
176
|
+
const model = bounded(args.model, IDENTIFIER);
|
|
177
|
+
const reasoningEffort = bounded(args.reasoning_effort, /^(?:low|medium|high|xhigh|max|ultra)$/);
|
|
178
|
+
const forkTurns = bounded(args.fork_turns, /^(?:none|all|[1-9][0-9]*)$/);
|
|
179
|
+
return {
|
|
180
|
+
...(taskName ? { taskName } : {}),
|
|
181
|
+
...(model ? { model } : {}),
|
|
182
|
+
...(reasoningEffort ? { reasoningEffort } : {}),
|
|
183
|
+
...(forkTurns ? { forkTurns } : {}),
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
function feedbackRepresentation(message) {
|
|
187
|
+
if (typeof message !== "string")
|
|
188
|
+
return "unavailable";
|
|
189
|
+
return /^gAAAAA[A-Za-z0-9_-]+={0,2}$/.test(message)
|
|
190
|
+
? "encrypted"
|
|
191
|
+
: "plaintext";
|
|
192
|
+
}
|
|
193
|
+
function feedbackMessageEvidence(payload, followUpPrompt) {
|
|
194
|
+
const message = parsedObject(payload.arguments)?.message;
|
|
195
|
+
const messageRepresentation = feedbackRepresentation(message);
|
|
196
|
+
return {
|
|
197
|
+
messageRepresentation,
|
|
198
|
+
messageMatchesFollowUpPrompt: messageRepresentation === "plaintext" && followUpPrompt !== undefined
|
|
199
|
+
? message === followUpPrompt
|
|
200
|
+
: null,
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
function feedbackPayload(payload) {
|
|
204
|
+
return (payload.type === "function_call" &&
|
|
205
|
+
payload.namespace === "collaboration" &&
|
|
206
|
+
typeof payload.name === "string" &&
|
|
207
|
+
["followup_task", "send_message", "interrupt_agent"].includes(payload.name));
|
|
208
|
+
}
|
|
209
|
+
function feedbackResponses(entries, callId, ordinal) {
|
|
210
|
+
return callId
|
|
211
|
+
? entries.filter((entry) => entry.ordinal > ordinal &&
|
|
212
|
+
entry.payload.type === "function_call_output" &&
|
|
213
|
+
entry.payload.call_id === callId)
|
|
214
|
+
: [];
|
|
215
|
+
}
|
|
216
|
+
function responseObserved(outputs) {
|
|
217
|
+
return outputs.length === 1 && typeof outputs[0]?.payload.output === "string";
|
|
218
|
+
}
|
|
219
|
+
function nativeFeedbackCalls(entries, followUpPrompt) {
|
|
220
|
+
return entries.flatMap((entry) => feedbackCall(entry, entries, followUpPrompt));
|
|
221
|
+
}
|
|
222
|
+
function feedbackCall({ ordinal, payload }, entries, followUpPrompt) {
|
|
223
|
+
if (!feedbackPayload(payload))
|
|
224
|
+
return [];
|
|
225
|
+
const outputs = feedbackResponses(entries, bounded(payload.call_id, IDENTIFIER), ordinal);
|
|
226
|
+
return [
|
|
227
|
+
{
|
|
228
|
+
ordinal,
|
|
229
|
+
tool: payload.name,
|
|
230
|
+
target: nativeToolCall(ordinal, payload)?.target ?? null,
|
|
231
|
+
responseObserved: responseObserved(outputs),
|
|
232
|
+
...feedbackMessageEvidence(payload, followUpPrompt),
|
|
233
|
+
},
|
|
234
|
+
];
|
|
235
|
+
}
|
|
236
|
+
function parseSession(text, followUpPrompt) {
|
|
237
|
+
const state = {
|
|
238
|
+
calls: [],
|
|
239
|
+
toolCalls: [],
|
|
240
|
+
entries: [],
|
|
241
|
+
submittedExecCalls: 0,
|
|
242
|
+
lastOrdinal: -1,
|
|
243
|
+
malformed: false,
|
|
244
|
+
entryCount: 0,
|
|
245
|
+
};
|
|
246
|
+
for (const line of text.split("\n")) {
|
|
247
|
+
if (!line.trim())
|
|
248
|
+
continue;
|
|
249
|
+
if (!consumeSessionLine(line, state))
|
|
250
|
+
break;
|
|
251
|
+
}
|
|
252
|
+
return {
|
|
253
|
+
entries: state.entries,
|
|
254
|
+
observation: sessionObservation(state, followUpPrompt),
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
function consumeSessionLine(line, state) {
|
|
258
|
+
state.entryCount++;
|
|
259
|
+
if (state.entryCount > MAX_SESSION_ENTRIES) {
|
|
260
|
+
state.malformed = true;
|
|
261
|
+
return false;
|
|
262
|
+
}
|
|
263
|
+
const entry = parsedSessionEntry(line, state);
|
|
264
|
+
if (!entry)
|
|
265
|
+
return true;
|
|
266
|
+
state.lastOrdinal = entry.ordinal;
|
|
267
|
+
state.entries.push(entry);
|
|
268
|
+
retainSessionCalls(entry, state);
|
|
269
|
+
return !truncateSessionCalls(state);
|
|
270
|
+
}
|
|
271
|
+
function sessionOrdinal(entry, lastOrdinal) {
|
|
272
|
+
return (typeof entry.ordinal === "number" &&
|
|
273
|
+
Number.isSafeInteger(entry.ordinal) &&
|
|
274
|
+
entry.ordinal > lastOrdinal);
|
|
275
|
+
}
|
|
276
|
+
function parsedSessionEntry(line, state) {
|
|
277
|
+
let entry;
|
|
278
|
+
try {
|
|
279
|
+
entry = JSON.parse(line);
|
|
280
|
+
}
|
|
281
|
+
catch {
|
|
282
|
+
state.malformed = true;
|
|
283
|
+
return null;
|
|
284
|
+
}
|
|
285
|
+
if (!isRecord(entry) ||
|
|
286
|
+
!sessionOrdinal(entry, state.lastOrdinal) ||
|
|
287
|
+
!isRecord(entry.payload)) {
|
|
288
|
+
state.malformed = true;
|
|
289
|
+
return null;
|
|
290
|
+
}
|
|
291
|
+
return { ordinal: entry.ordinal, payload: entry.payload };
|
|
292
|
+
}
|
|
293
|
+
function retainSessionCalls(entry, state) {
|
|
294
|
+
if (entry.payload.type === "custom_tool_call" &&
|
|
295
|
+
entry.payload.name === "exec")
|
|
296
|
+
state.submittedExecCalls++;
|
|
297
|
+
const call = directCall(entry.ordinal, entry.payload);
|
|
298
|
+
if (call)
|
|
299
|
+
state.calls.push(call);
|
|
300
|
+
const tool = nativeToolCall(entry.ordinal, entry.payload);
|
|
301
|
+
if (tool)
|
|
302
|
+
state.toolCalls.push(tool);
|
|
303
|
+
}
|
|
304
|
+
function truncateSessionCalls(state) {
|
|
305
|
+
if (state.calls.length <= MAX_RETAINED_CALLS &&
|
|
306
|
+
state.toolCalls.length <= MAX_RETAINED_CALLS)
|
|
307
|
+
return false;
|
|
308
|
+
state.calls.length = MAX_RETAINED_CALLS;
|
|
309
|
+
state.toolCalls.length = MAX_RETAINED_CALLS;
|
|
310
|
+
state.malformed = true;
|
|
311
|
+
return true;
|
|
312
|
+
}
|
|
313
|
+
function sessionReceipts(state, followUpPrompt) {
|
|
314
|
+
if (state.malformed || state.entries.length === 0)
|
|
315
|
+
return { acceptedSpawns: [], feedbackCalls: [] };
|
|
316
|
+
return {
|
|
317
|
+
acceptedSpawns: acceptedSpawns(state.entries),
|
|
318
|
+
feedbackCalls: nativeFeedbackCalls(state.entries, followUpPrompt),
|
|
319
|
+
};
|
|
320
|
+
}
|
|
321
|
+
function sessionObservation(state, followUpPrompt) {
|
|
322
|
+
return {
|
|
323
|
+
id: "sevro.codex.native-calls",
|
|
324
|
+
completeness: state.malformed || state.entryCount === 0 ? "partial" : "complete",
|
|
325
|
+
data: {
|
|
326
|
+
method: "native_session",
|
|
327
|
+
calls: state.calls,
|
|
328
|
+
toolCalls: state.toolCalls,
|
|
329
|
+
submittedExecCalls: state.submittedExecCalls,
|
|
330
|
+
...(state.submittedExecCalls > 0
|
|
331
|
+
? { execCalls: codexExecCallReceipts(state.entries) }
|
|
332
|
+
: {}),
|
|
333
|
+
...sessionReceipts(state, followUpPrompt),
|
|
334
|
+
childSessions: [],
|
|
335
|
+
childrenTruncated: false,
|
|
336
|
+
},
|
|
337
|
+
};
|
|
338
|
+
}
|
|
339
|
+
/** Bind a private final answer to the same turn's later native completion. */
|
|
340
|
+
function finalAgentMessage(payload) {
|
|
341
|
+
const item = isRecord(payload.item) ? payload.item : {};
|
|
342
|
+
return (payload.type === "item_completed" &&
|
|
343
|
+
item.type === "AgentMessage" &&
|
|
344
|
+
item.phase === "final_answer");
|
|
345
|
+
}
|
|
346
|
+
function childResultCompleted(entries) {
|
|
347
|
+
const finals = entries.filter(({ payload }) => finalAgentMessage(payload));
|
|
348
|
+
const completions = entries.filter(({ payload }) => payload.type === "task_complete");
|
|
349
|
+
const boundaries = childResultBoundaries(finals, completions, entries);
|
|
350
|
+
return (boundaries !== null &&
|
|
351
|
+
childFinalMatched(boundaries.final, boundaries.complete));
|
|
352
|
+
}
|
|
353
|
+
function childResultBoundaries(finals, completions, entries) {
|
|
354
|
+
if (!uniqueChildCompletion(finals, completions, entries))
|
|
355
|
+
return null;
|
|
356
|
+
const [final] = finals, [complete] = completions;
|
|
357
|
+
return final && complete ? { final, complete } : null;
|
|
358
|
+
}
|
|
359
|
+
function uniqueChildCompletion(finals, completions, entries) {
|
|
360
|
+
return (finals.length === 1 &&
|
|
361
|
+
completions.length === 1 &&
|
|
362
|
+
!entries.some(({ payload }) => payload.type === "turn_aborted" || payload.type === "turn_failed"));
|
|
363
|
+
}
|
|
364
|
+
function childFinalMatched(final, complete) {
|
|
365
|
+
if (!childCompletionOrdered(final, complete))
|
|
366
|
+
return false;
|
|
367
|
+
const item = isRecord(final.payload.item) ? final.payload.item : {};
|
|
368
|
+
const message = childMessage(item.content);
|
|
369
|
+
return (message !== null &&
|
|
370
|
+
message.trim().length > 0 &&
|
|
371
|
+
complete.payload.last_agent_message === message);
|
|
372
|
+
}
|
|
373
|
+
function childCompletionOrdered(final, complete) {
|
|
374
|
+
return (!!bounded(final.payload.turn_id, IDENTIFIER) &&
|
|
375
|
+
complete.payload.turn_id === final.payload.turn_id &&
|
|
376
|
+
final.ordinal < complete.ordinal);
|
|
377
|
+
}
|
|
378
|
+
function childTextBlock(part) {
|
|
379
|
+
return (isRecord(part) && part.type === "Text" && typeof part.text === "string");
|
|
380
|
+
}
|
|
381
|
+
function childMessage(content) {
|
|
382
|
+
if (!isUnknownArray(content) ||
|
|
383
|
+
content.length === 0 ||
|
|
384
|
+
!content.every(childTextBlock))
|
|
385
|
+
return null;
|
|
386
|
+
return content.map((part) => part.text).join("");
|
|
387
|
+
}
|
|
388
|
+
function nestedRequestFields(payload) {
|
|
389
|
+
const args = parsedObject(payload.arguments);
|
|
390
|
+
return args ? requestFields(args) : {};
|
|
391
|
+
}
|
|
392
|
+
async function nestedSpawnReceipts(home, rootThread, parentThread, entries) {
|
|
393
|
+
const requests = entries.filter(({ payload }) => payload.type === "function_call" &&
|
|
394
|
+
payload.namespace === "collaboration" &&
|
|
395
|
+
payload.name === "spawn_agent");
|
|
396
|
+
const accepted = acceptedSpawns(entries);
|
|
397
|
+
const nestedSpawns = await Promise.all(requests
|
|
398
|
+
.slice(0, MAX_CHILD_SESSIONS)
|
|
399
|
+
.map((request) => nestedSpawnReceipt(home, rootThread, parentThread, accepted, request)));
|
|
400
|
+
return {
|
|
401
|
+
nestedSpawns,
|
|
402
|
+
requestsTruncated: requests.length > MAX_CHILD_SESSIONS,
|
|
403
|
+
};
|
|
404
|
+
}
|
|
405
|
+
async function nestedSpawnReceipt(home, rootThread, parentThread, accepted, { ordinal, payload }) {
|
|
406
|
+
const receipt = accepted.find((spawn) => spawn.requestedOrdinal === ordinal);
|
|
407
|
+
const session = await nestedReaderSession(home, rootThread, parentThread, receipt);
|
|
408
|
+
return {
|
|
409
|
+
requestedOrdinal: ordinal,
|
|
410
|
+
status: receipt ? "accepted" : "unaccepted",
|
|
411
|
+
...nestedRequestFields(payload),
|
|
412
|
+
...(receipt
|
|
413
|
+
? { agentRef: receipt.agentRef, threadId: receipt.threadId }
|
|
414
|
+
: {}),
|
|
415
|
+
...nestedReaderStatus(session),
|
|
416
|
+
};
|
|
417
|
+
}
|
|
418
|
+
function nestedReaderStatus(session) {
|
|
419
|
+
return {
|
|
420
|
+
sessionStatus: session?.status ?? "unavailable",
|
|
421
|
+
readerResultStatus: session?.resultStatus ?? "unavailable",
|
|
422
|
+
};
|
|
423
|
+
}
|
|
424
|
+
async function nestedReaderSession(home, rootThread, parentThread, receipt) {
|
|
425
|
+
if (!receipt)
|
|
426
|
+
return null;
|
|
427
|
+
if (receipt.threadId === rootThread)
|
|
428
|
+
return { threadId: receipt.threadId, status: "partial" };
|
|
429
|
+
return childSessionStatus(home, parentThread, receipt.threadId);
|
|
430
|
+
}
|
|
431
|
+
async function childSessionStatus(home, parentThread, threadId, rootThread) {
|
|
432
|
+
if (threadId === parentThread)
|
|
433
|
+
return { threadId, status: "partial" };
|
|
434
|
+
const located = await sessionPath(home, threadId);
|
|
435
|
+
if (located.status !== "found")
|
|
436
|
+
return { threadId, status: located.status };
|
|
437
|
+
try {
|
|
438
|
+
const text = await readNativeSession(located.path);
|
|
439
|
+
if (text === null)
|
|
440
|
+
return { threadId, status: "partial" };
|
|
441
|
+
return await availableChildSession(home, threadId, text, rootThread);
|
|
442
|
+
}
|
|
443
|
+
catch {
|
|
444
|
+
return { threadId, status: "partial" };
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
async function availableChildSession(home, threadId, text, rootThread) {
|
|
448
|
+
const parsed = parseSession(text);
|
|
449
|
+
if (parsed.observation.completeness !== "complete")
|
|
450
|
+
return { threadId, status: "partial" };
|
|
451
|
+
const nested = rootThread
|
|
452
|
+
? await nestedSpawnReceipts(home, rootThread, threadId, parsed.entries)
|
|
453
|
+
: undefined;
|
|
454
|
+
return {
|
|
455
|
+
threadId,
|
|
456
|
+
status: "available",
|
|
457
|
+
resultStatus: childResultCompleted(parsed.entries)
|
|
458
|
+
? "completed"
|
|
459
|
+
: "unavailable",
|
|
460
|
+
...nested,
|
|
461
|
+
};
|
|
462
|
+
}
|
|
463
|
+
/** Last validated native event before a follow-up prompt enters this thread. */
|
|
464
|
+
export async function codexNativeSessionLastOrdinal(home, threadId) {
|
|
465
|
+
const located = await sessionPath(home, threadId);
|
|
466
|
+
if (located.status !== "found")
|
|
467
|
+
return null;
|
|
468
|
+
try {
|
|
469
|
+
const text = await readNativeSession(located.path);
|
|
470
|
+
return text === null ? null : lastSessionOrdinal(text);
|
|
471
|
+
}
|
|
472
|
+
catch {
|
|
473
|
+
return null;
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
function lastSessionOrdinal(text) {
|
|
477
|
+
const parsed = parseSession(text);
|
|
478
|
+
if (parsed.observation.completeness !== "complete")
|
|
479
|
+
return null;
|
|
480
|
+
return parsed.entries.at(-1)?.ordinal ?? null;
|
|
481
|
+
}
|
|
482
|
+
/** Bind one private native session to the completed public thread. */
|
|
483
|
+
export async function codexNativeCallObservation(home, threadId, context) {
|
|
484
|
+
const located = await sessionPath(home, threadId);
|
|
485
|
+
if (located.status !== "found")
|
|
486
|
+
return unavailable(located.status === "ambiguous" ? "partial" : located.status);
|
|
487
|
+
try {
|
|
488
|
+
return await nativeSessionObservation(home, threadId, located.path, context);
|
|
489
|
+
}
|
|
490
|
+
catch {
|
|
491
|
+
return unavailable("partial");
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
async function nativeSessionObservation(home, threadId, path, context) {
|
|
495
|
+
const text = await readNativeSession(path);
|
|
496
|
+
if (text === null)
|
|
497
|
+
return unavailable("partial");
|
|
498
|
+
const { observation } = parseSession(text, context?.followUpPrompt);
|
|
499
|
+
if (observation.completeness !== "complete")
|
|
500
|
+
return observation;
|
|
501
|
+
const children = [
|
|
502
|
+
...new Set(observation.data.acceptedSpawns.map((spawn) => spawn.threadId)),
|
|
503
|
+
];
|
|
504
|
+
const childSessions = await Promise.all(children
|
|
505
|
+
.slice(0, MAX_CHILD_SESSIONS)
|
|
506
|
+
.map((child) => childSessionStatus(home, threadId, child, threadId)));
|
|
507
|
+
return {
|
|
508
|
+
...observation,
|
|
509
|
+
data: {
|
|
510
|
+
...observation.data,
|
|
511
|
+
childSessions,
|
|
512
|
+
childrenTruncated: children.length > MAX_CHILD_SESSIONS,
|
|
513
|
+
},
|
|
514
|
+
};
|
|
515
|
+
}
|
|
516
|
+
//# sourceMappingURL=codex-native-calls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-native-calls.js","sourceRoot":"","sources":["codex-native-calls.ts"],"names":[],"mappings":"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","sourcesContent":["import { isRecord, isUnknownArray } from \"../value-guards\";\nimport {\n codexExecCallReceipts,\n type ExecCallReceipt,\n} from \"./codex-exec-controls\";\nimport {\n readNativeSession,\n locateNativeSession as sessionPath,\n} from \"./codex-session-files\";\n\nconst MAX_SESSION_ENTRIES = 10_000;\nconst MAX_RETAINED_CALLS = 128;\nconst MAX_CHILD_SESSIONS = 8;\nconst GOAL_CONTROLS = new Set([\"create_goal\", \"get_goal\", \"update_goal\"]);\nconst COLLABORATION_CONTROLS = new Set([\n \"spawn_agent\",\n \"list_agents\",\n \"wait_agent\",\n \"followup_task\",\n \"send_message\",\n \"interrupt_agent\",\n]);\n\ninterface NativeCall {\n ordinal: number;\n namespace: \"functions\" | \"collaboration\";\n name: string;\n evidence: \"invocation_attempt\";\n}\n\ninterface NativeToolCall {\n ordinal: number;\n namespace: \"functions\" | \"collaboration\" | \"clock\" | \"other\";\n name: string;\n target?: string;\n}\n\ninterface AcceptedSpawn {\n callId: string;\n agentRef: string;\n threadId: string;\n requestedOrdinal: number;\n startedOrdinal: number;\n acceptedOrdinal: number;\n taskName?: string;\n model?: string;\n reasoningEffort?: string;\n forkTurns?: string;\n}\n\ninterface NativeFeedbackCall {\n ordinal: number;\n tool: \"followup_task\" | \"send_message\" | \"interrupt_agent\";\n target: string | null;\n responseObserved: boolean;\n messageRepresentation: \"plaintext\" | \"encrypted\" | \"unavailable\";\n messageMatchesFollowUpPrompt: boolean | null;\n}\n\ninterface ChildSession {\n threadId: string;\n status: \"available\" | \"unavailable\" | \"ambiguous\" | \"partial\";\n resultStatus?: \"completed\" | \"unavailable\";\n nestedSpawns?: NestedSpawn[];\n requestsTruncated?: boolean;\n}\n\ninterface NestedSpawn {\n requestedOrdinal: number;\n status: \"accepted\" | \"unaccepted\";\n taskName?: string;\n model?: string;\n reasoningEffort?: string;\n forkTurns?: string;\n agentRef?: string;\n threadId?: string;\n sessionStatus: ChildSession[\"status\"];\n readerResultStatus: \"completed\" | \"unavailable\";\n}\n\ninterface NativeCallContext {\n followUpPrompt?: string;\n}\n\ninterface NativeCallObservation {\n id: \"sevro.codex.native-calls\";\n completeness: \"complete\" | \"partial\" | \"unavailable\";\n data: {\n method: \"native_session\";\n calls: NativeCall[];\n toolCalls: NativeToolCall[];\n submittedExecCalls: number;\n execCalls?: ExecCallReceipt[];\n acceptedSpawns: AcceptedSpawn[];\n feedbackCalls: NativeFeedbackCall[];\n childSessions: ChildSession[];\n childrenTruncated: boolean;\n };\n}\n\nfunction unavailable(\n completeness: NativeCallObservation[\"completeness\"],\n): NativeCallObservation {\n return {\n id: \"sevro.codex.native-calls\",\n completeness,\n data: {\n method: \"native_session\",\n calls: [],\n toolCalls: [],\n submittedExecCalls: 0,\n acceptedSpawns: [],\n feedbackCalls: [],\n childSessions: [],\n childrenTruncated: false,\n },\n };\n}\n\nfunction nativeControlNamespace(\n payload: Record<string, unknown> & { name: string },\n): NativeCall[\"namespace\"] | null {\n if (goalNamespace(payload.namespace) && GOAL_CONTROLS.has(payload.name))\n return \"functions\";\n if (\n payload.namespace === \"collaboration\" &&\n COLLABORATION_CONTROLS.has(payload.name)\n )\n return \"collaboration\";\n return null;\n}\nfunction goalNamespace(value: unknown): boolean {\n return value === \"functions\" || value === undefined;\n}\nfunction directCall(\n ordinal: number,\n payload: Record<string, unknown>,\n): NativeCall | null {\n if (payload.type !== \"function_call\" || typeof payload.name !== \"string\")\n return null;\n const namespace = nativeControlNamespace({ ...payload, name: payload.name });\n return namespace\n ? { ordinal, namespace, name: payload.name, evidence: \"invocation_attempt\" }\n : null;\n}\n\nconst IDENTIFIER = /^[A-Za-z0-9][A-Za-z0-9._:/-]{0,127}$/;\nconst AGENT_REF =\n /^(?:\\/root(?:\\/[a-z0-9_]+)+|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$/;\n\nfunction bounded(value: unknown, pattern: RegExp): string | undefined {\n return typeof value === \"string\" && value.length <= 128 && pattern.test(value)\n ? value\n : undefined;\n}\n\nfunction toolNamespace(value: unknown): NativeToolCall[\"namespace\"] {\n return value === \"functions\" || value === \"collaboration\" || value === \"clock\"\n ? value\n : \"other\";\n}\nfunction parsedObject(text: unknown): Record<string, unknown> | null {\n if (typeof text !== \"string\") return null;\n try {\n const value: unknown = JSON.parse(text);\n return isRecord(value) ? value : null;\n } catch {\n return null;\n }\n}\nfunction feedbackTarget(\n args: Record<string, unknown> | null,\n): string | undefined {\n if (!args) return undefined;\n return (\n bounded(args.target, AGENT_REF) ??\n bounded(args.target, /^[a-z0-9][a-z0-9_]{0,63}$/)\n );\n}\nfunction nativeToolTarget(\n payload: Record<string, unknown>,\n namespace: NativeToolCall[\"namespace\"],\n name: string,\n): string | undefined {\n if (\n namespace !== \"collaboration\" ||\n ![\"followup_task\", \"send_message\", \"interrupt_agent\"].includes(name)\n )\n return undefined;\n return feedbackTarget(parsedObject(payload.arguments));\n}\nfunction toolCallType(value: unknown): boolean {\n return value === \"function_call\" || value === \"custom_tool_call\";\n}\nfunction nativeToolCall(\n ordinal: number,\n payload: Record<string, unknown>,\n): NativeToolCall | null {\n if (!toolCallType(payload.type)) return null;\n const namespace = toolNamespace(payload.namespace);\n const name =\n bounded(payload.name, /^[A-Za-z_][A-Za-z0-9_]{0,63}$/) ?? \"other\";\n const target = nativeToolTarget(payload, namespace, name);\n return { ordinal, namespace, name, ...(target ? { target } : {}) };\n}\n\ntype NativeEntry = { ordinal: number; payload: Record<string, unknown> };\nfunction spawnRequest(payload: Record<string, unknown>): boolean {\n return (\n payload.type === \"function_call\" &&\n payload.namespace === \"collaboration\" &&\n payload.name === \"spawn_agent\"\n );\n}\nfunction acceptedSpawns(entries: NativeEntry[]): AcceptedSpawn[] {\n const requests = entries.filter(({ payload }) => spawnRequest(payload));\n const accepted: AcceptedSpawn[] = [];\n for (const request of requests) {\n const spawn = acceptedSpawn(request, requests, entries);\n if (spawn) accepted.push(spawn);\n }\n return accepted;\n}\nfunction spawnArguments(request: NativeEntry, requests: NativeEntry[]) {\n const callId = bounded(request.payload.call_id, IDENTIFIER);\n if (\n !callId ||\n requests.filter(({ payload }) => payload.call_id === callId).length !== 1\n )\n return null;\n const args = parsedObject(request.payload.arguments);\n return args ? { callId, args } : null;\n}\nfunction startedSpawn(\n payload: Record<string, unknown>,\n callId: string,\n): boolean {\n const item = isRecord(payload.item) ? payload.item : {};\n return (\n payload.type === \"item_completed\" &&\n item.type === \"SubAgentActivity\" &&\n item.id === callId &&\n item.kind === \"started\"\n );\n}\nfunction spawnBoundaries(entries: NativeEntry[], callId: string) {\n const starts = entries.filter(({ payload }) => startedSpawn(payload, callId));\n const outputs = entries.filter(\n ({ payload }) =>\n payload.type === \"function_call_output\" && payload.call_id === callId,\n );\n const [start] = starts,\n [result] = outputs;\n if (\n starts.length !== 1 ||\n outputs.length !== 1 ||\n start === undefined ||\n result === undefined\n )\n return null;\n return { start, result };\n}\nfunction spawnIdentity(\n request: NativeEntry,\n start: NativeEntry,\n result: NativeEntry,\n) {\n const item = isRecord(start.payload.item) ? start.payload.item : {};\n const agentRef = bounded(item.agent_path, AGENT_REF),\n threadId = bounded(item.agent_thread_id, IDENTIFIER);\n if (!agentRef || !threadId || !spawnOrdered(request, start, result))\n return null;\n return { agentRef, threadId };\n}\nfunction spawnOrdered(\n request: NativeEntry,\n start: NativeEntry,\n result: NativeEntry,\n): boolean {\n return request.ordinal < start.ordinal && start.ordinal < result.ordinal;\n}\nfunction acceptedSpawn(\n request: NativeEntry,\n requests: NativeEntry[],\n entries: NativeEntry[],\n): AcceptedSpawn | null {\n const declaration = spawnArguments(request, requests);\n if (!declaration) return null;\n const boundaries = spawnBoundaries(entries, declaration.callId);\n if (!boundaries) return null;\n return correlatedSpawn(request, declaration, boundaries);\n}\nfunction correlatedSpawn(\n request: NativeEntry,\n declaration: { callId: string; args: Record<string, unknown> },\n boundaries: { start: NativeEntry; result: NativeEntry },\n): AcceptedSpawn | null {\n const { start, result } = boundaries;\n const identity = spawnIdentity(request, start, result);\n if (!identity) return null;\n const output = parsedObject(result.payload.output);\n if (!output || output.task_name !== identity.agentRef) return null;\n return {\n callId: declaration.callId,\n ...identity,\n requestedOrdinal: request.ordinal,\n startedOrdinal: start.ordinal,\n acceptedOrdinal: result.ordinal,\n ...requestFields(declaration.args),\n };\n}\nfunction requestFields(args: Record<string, unknown>) {\n const taskName = bounded(args.task_name, /^[a-z0-9][a-z0-9_]{0,63}$/);\n const model = bounded(args.model, IDENTIFIER);\n const reasoningEffort = bounded(\n args.reasoning_effort,\n /^(?:low|medium|high|xhigh|max|ultra)$/,\n );\n const forkTurns = bounded(args.fork_turns, /^(?:none|all|[1-9][0-9]*)$/);\n return {\n ...(taskName ? { taskName } : {}),\n ...(model ? { model } : {}),\n ...(reasoningEffort ? { reasoningEffort } : {}),\n ...(forkTurns ? { forkTurns } : {}),\n };\n}\n\nfunction feedbackRepresentation(\n message: unknown,\n): NativeFeedbackCall[\"messageRepresentation\"] {\n if (typeof message !== \"string\") return \"unavailable\";\n return /^gAAAAA[A-Za-z0-9_-]+={0,2}$/.test(message)\n ? \"encrypted\"\n : \"plaintext\";\n}\nfunction feedbackMessageEvidence(\n payload: Record<string, unknown>,\n followUpPrompt?: string,\n) {\n const message = parsedObject(payload.arguments)?.message;\n const messageRepresentation = feedbackRepresentation(message);\n return {\n messageRepresentation,\n messageMatchesFollowUpPrompt:\n messageRepresentation === \"plaintext\" && followUpPrompt !== undefined\n ? message === followUpPrompt\n : null,\n };\n}\n\nfunction feedbackPayload(\n payload: Record<string, unknown>,\n): payload is Record<string, unknown> & { name: NativeFeedbackCall[\"tool\"] } {\n return (\n payload.type === \"function_call\" &&\n payload.namespace === \"collaboration\" &&\n typeof payload.name === \"string\" &&\n [\"followup_task\", \"send_message\", \"interrupt_agent\"].includes(payload.name)\n );\n}\nfunction feedbackResponses(\n entries: NativeEntry[],\n callId: string | undefined,\n ordinal: number,\n) {\n return callId\n ? entries.filter(\n (entry) =>\n entry.ordinal > ordinal &&\n entry.payload.type === \"function_call_output\" &&\n entry.payload.call_id === callId,\n )\n : [];\n}\nfunction responseObserved(outputs: NativeEntry[]): boolean {\n return outputs.length === 1 && typeof outputs[0]?.payload.output === \"string\";\n}\nfunction nativeFeedbackCalls(\n entries: NativeEntry[],\n followUpPrompt?: string,\n): NativeFeedbackCall[] {\n return entries.flatMap((entry) =>\n feedbackCall(entry, entries, followUpPrompt),\n );\n}\nfunction feedbackCall(\n { ordinal, payload }: NativeEntry,\n entries: NativeEntry[],\n followUpPrompt: string | undefined,\n): NativeFeedbackCall[] {\n if (!feedbackPayload(payload)) return [];\n const outputs = feedbackResponses(\n entries,\n bounded(payload.call_id, IDENTIFIER),\n ordinal,\n );\n return [\n {\n ordinal,\n tool: payload.name,\n target: nativeToolCall(ordinal, payload)?.target ?? null,\n responseObserved: responseObserved(outputs),\n ...feedbackMessageEvidence(payload, followUpPrompt),\n },\n ];\n}\n\ninterface ParseState {\n calls: NativeCall[];\n toolCalls: NativeToolCall[];\n entries: NativeEntry[];\n submittedExecCalls: number;\n lastOrdinal: number;\n malformed: boolean;\n entryCount: number;\n}\nfunction parseSession(\n text: string,\n followUpPrompt?: string,\n): { observation: NativeCallObservation; entries: NativeEntry[] } {\n const state: ParseState = {\n calls: [],\n toolCalls: [],\n entries: [],\n submittedExecCalls: 0,\n lastOrdinal: -1,\n malformed: false,\n entryCount: 0,\n };\n for (const line of text.split(\"\\n\")) {\n if (!line.trim()) continue;\n if (!consumeSessionLine(line, state)) break;\n }\n return {\n entries: state.entries,\n observation: sessionObservation(state, followUpPrompt),\n };\n}\nfunction consumeSessionLine(line: string, state: ParseState): boolean {\n state.entryCount++;\n if (state.entryCount > MAX_SESSION_ENTRIES) {\n state.malformed = true;\n return false;\n }\n const entry = parsedSessionEntry(line, state);\n if (!entry) return true;\n state.lastOrdinal = entry.ordinal;\n state.entries.push(entry);\n retainSessionCalls(entry, state);\n return !truncateSessionCalls(state);\n}\nfunction sessionOrdinal(\n entry: Record<string, unknown>,\n lastOrdinal: number,\n): entry is Record<string, unknown> & { ordinal: number } {\n return (\n typeof entry.ordinal === \"number\" &&\n Number.isSafeInteger(entry.ordinal) &&\n entry.ordinal > lastOrdinal\n );\n}\nfunction parsedSessionEntry(\n line: string,\n state: ParseState,\n): NativeEntry | null {\n let entry: unknown;\n try {\n entry = JSON.parse(line);\n } catch {\n state.malformed = true;\n return null;\n }\n if (\n !isRecord(entry) ||\n !sessionOrdinal(entry, state.lastOrdinal) ||\n !isRecord(entry.payload)\n ) {\n state.malformed = true;\n return null;\n }\n return { ordinal: entry.ordinal, payload: entry.payload };\n}\nfunction retainSessionCalls(entry: NativeEntry, state: ParseState): void {\n if (\n entry.payload.type === \"custom_tool_call\" &&\n entry.payload.name === \"exec\"\n )\n state.submittedExecCalls++;\n const call = directCall(entry.ordinal, entry.payload);\n if (call) state.calls.push(call);\n const tool = nativeToolCall(entry.ordinal, entry.payload);\n if (tool) state.toolCalls.push(tool);\n}\nfunction truncateSessionCalls(state: ParseState): boolean {\n if (\n state.calls.length <= MAX_RETAINED_CALLS &&\n state.toolCalls.length <= MAX_RETAINED_CALLS\n )\n return false;\n state.calls.length = MAX_RETAINED_CALLS;\n state.toolCalls.length = MAX_RETAINED_CALLS;\n state.malformed = true;\n return true;\n}\nfunction sessionReceipts(\n state: ParseState,\n followUpPrompt: string | undefined,\n) {\n if (state.malformed || state.entries.length === 0)\n return { acceptedSpawns: [], feedbackCalls: [] };\n return {\n acceptedSpawns: acceptedSpawns(state.entries),\n feedbackCalls: nativeFeedbackCalls(state.entries, followUpPrompt),\n };\n}\nfunction sessionObservation(\n state: ParseState,\n followUpPrompt: string | undefined,\n): NativeCallObservation {\n return {\n id: \"sevro.codex.native-calls\",\n completeness:\n state.malformed || state.entryCount === 0 ? \"partial\" : \"complete\",\n data: {\n method: \"native_session\",\n calls: state.calls,\n toolCalls: state.toolCalls,\n submittedExecCalls: state.submittedExecCalls,\n ...(state.submittedExecCalls > 0\n ? { execCalls: codexExecCallReceipts(state.entries) }\n : {}),\n ...sessionReceipts(state, followUpPrompt),\n childSessions: [],\n childrenTruncated: false,\n },\n };\n}\n\n/** Bind a private final answer to the same turn's later native completion. */\n\nfunction finalAgentMessage(payload: Record<string, unknown>): boolean {\n const item = isRecord(payload.item) ? payload.item : {};\n return (\n payload.type === \"item_completed\" &&\n item.type === \"AgentMessage\" &&\n item.phase === \"final_answer\"\n );\n}\nfunction childResultCompleted(entries: NativeEntry[]): boolean {\n const finals = entries.filter(({ payload }) => finalAgentMessage(payload));\n const completions = entries.filter(\n ({ payload }) => payload.type === \"task_complete\",\n );\n const boundaries = childResultBoundaries(finals, completions, entries);\n return (\n boundaries !== null &&\n childFinalMatched(boundaries.final, boundaries.complete)\n );\n}\nfunction childResultBoundaries(\n finals: NativeEntry[],\n completions: NativeEntry[],\n entries: NativeEntry[],\n) {\n if (!uniqueChildCompletion(finals, completions, entries)) return null;\n const [final] = finals,\n [complete] = completions;\n return final && complete ? { final, complete } : null;\n}\n\nfunction uniqueChildCompletion(\n finals: NativeEntry[],\n completions: NativeEntry[],\n entries: NativeEntry[],\n): boolean {\n return (\n finals.length === 1 &&\n completions.length === 1 &&\n !entries.some(\n ({ payload }) =>\n payload.type === \"turn_aborted\" || payload.type === \"turn_failed\",\n )\n );\n}\nfunction childFinalMatched(final: NativeEntry, complete: NativeEntry): boolean {\n if (!childCompletionOrdered(final, complete)) return false;\n const item = isRecord(final.payload.item) ? final.payload.item : {};\n const message = childMessage(item.content);\n return (\n message !== null &&\n message.trim().length > 0 &&\n complete.payload.last_agent_message === message\n );\n}\nfunction childCompletionOrdered(\n final: NativeEntry,\n complete: NativeEntry,\n): boolean {\n return (\n !!bounded(final.payload.turn_id, IDENTIFIER) &&\n complete.payload.turn_id === final.payload.turn_id &&\n final.ordinal < complete.ordinal\n );\n}\nfunction childTextBlock(part: unknown): part is { type: \"Text\"; text: string } {\n return (\n isRecord(part) && part.type === \"Text\" && typeof part.text === \"string\"\n );\n}\nfunction childMessage(content: unknown): string | null {\n if (\n !isUnknownArray(content) ||\n content.length === 0 ||\n !content.every(childTextBlock)\n )\n return null;\n return content.map((part) => part.text).join(\"\");\n}\n\nfunction nestedRequestFields(payload: Record<string, unknown>) {\n const args = parsedObject(payload.arguments);\n return args ? requestFields(args) : {};\n}\n\nasync function nestedSpawnReceipts(\n home: string,\n rootThread: string,\n parentThread: string,\n entries: Array<{ ordinal: number; payload: Record<string, unknown> }>,\n) {\n const requests = entries.filter(\n ({ payload }) =>\n payload.type === \"function_call\" &&\n payload.namespace === \"collaboration\" &&\n payload.name === \"spawn_agent\",\n );\n const accepted = acceptedSpawns(entries);\n const nestedSpawns: NestedSpawn[] = await Promise.all(\n requests\n .slice(0, MAX_CHILD_SESSIONS)\n .map((request) =>\n nestedSpawnReceipt(home, rootThread, parentThread, accepted, request),\n ),\n );\n return {\n nestedSpawns,\n requestsTruncated: requests.length > MAX_CHILD_SESSIONS,\n };\n}\n\nasync function nestedSpawnReceipt(\n home: string,\n rootThread: string,\n parentThread: string,\n accepted: AcceptedSpawn[],\n { ordinal, payload }: NativeEntry,\n): Promise<NestedSpawn> {\n const receipt = accepted.find((spawn) => spawn.requestedOrdinal === ordinal);\n const session = await nestedReaderSession(\n home,\n rootThread,\n parentThread,\n receipt,\n );\n return {\n requestedOrdinal: ordinal,\n status: receipt ? \"accepted\" : \"unaccepted\",\n ...nestedRequestFields(payload),\n ...(receipt\n ? { agentRef: receipt.agentRef, threadId: receipt.threadId }\n : {}),\n ...nestedReaderStatus(session),\n };\n}\nfunction nestedReaderStatus(session: ChildSession | null) {\n return {\n sessionStatus: session?.status ?? \"unavailable\",\n readerResultStatus: session?.resultStatus ?? \"unavailable\",\n };\n}\nasync function nestedReaderSession(\n home: string,\n rootThread: string,\n parentThread: string,\n receipt: AcceptedSpawn | undefined,\n): Promise<ChildSession | null> {\n if (!receipt) return null;\n if (receipt.threadId === rootThread)\n return { threadId: receipt.threadId, status: \"partial\" };\n return childSessionStatus(home, parentThread, receipt.threadId);\n}\n\nasync function childSessionStatus(\n home: string,\n parentThread: string,\n threadId: string,\n rootThread?: string,\n): Promise<ChildSession> {\n if (threadId === parentThread) return { threadId, status: \"partial\" };\n const located = await sessionPath(home, threadId);\n if (located.status !== \"found\") return { threadId, status: located.status };\n try {\n const text = await readNativeSession(located.path);\n if (text === null) return { threadId, status: \"partial\" };\n return await availableChildSession(home, threadId, text, rootThread);\n } catch {\n return { threadId, status: \"partial\" };\n }\n}\n\nasync function availableChildSession(\n home: string,\n threadId: string,\n text: string,\n rootThread: string | undefined,\n): Promise<ChildSession> {\n const parsed = parseSession(text);\n if (parsed.observation.completeness !== \"complete\")\n return { threadId, status: \"partial\" };\n const nested = rootThread\n ? await nestedSpawnReceipts(home, rootThread, threadId, parsed.entries)\n : undefined;\n return {\n threadId,\n status: \"available\",\n resultStatus: childResultCompleted(parsed.entries)\n ? \"completed\"\n : \"unavailable\",\n ...nested,\n };\n}\n\n/** Last validated native event before a follow-up prompt enters this thread. */\nexport async function codexNativeSessionLastOrdinal(\n home: string,\n threadId: string,\n): Promise<number | null> {\n const located = await sessionPath(home, threadId);\n if (located.status !== \"found\") return null;\n try {\n const text = await readNativeSession(located.path);\n return text === null ? null : lastSessionOrdinal(text);\n } catch {\n return null;\n }\n}\n\nfunction lastSessionOrdinal(text: string): number | null {\n const parsed = parseSession(text);\n if (parsed.observation.completeness !== \"complete\") return null;\n return parsed.entries.at(-1)?.ordinal ?? null;\n}\n\n/** Bind one private native session to the completed public thread. */\nexport async function codexNativeCallObservation(\n home: string,\n threadId: string,\n context?: NativeCallContext,\n): Promise<NativeCallObservation> {\n const located = await sessionPath(home, threadId);\n if (located.status !== \"found\")\n return unavailable(\n located.status === \"ambiguous\" ? \"partial\" : located.status,\n );\n try {\n return await nativeSessionObservation(\n home,\n threadId,\n located.path,\n context,\n );\n } catch {\n return unavailable(\"partial\");\n }\n}\n\nasync function nativeSessionObservation(\n home: string,\n threadId: string,\n path: string,\n context: NativeCallContext | undefined,\n): Promise<NativeCallObservation> {\n const text = await readNativeSession(path);\n if (text === null) return unavailable(\"partial\");\n const { observation } = parseSession(text, context?.followUpPrompt);\n if (observation.completeness !== \"complete\") return observation;\n const children = [\n ...new Set(observation.data.acceptedSpawns.map((spawn) => spawn.threadId)),\n ];\n const childSessions = await Promise.all(\n children\n .slice(0, MAX_CHILD_SESSIONS)\n .map((child) => childSessionStatus(home, threadId, child, threadId)),\n );\n return {\n ...observation,\n data: {\n ...observation.data,\n childSessions,\n childrenTruncated: children.length > MAX_CHILD_SESSIONS,\n },\n };\n}\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { HostProcessFailure, runHostProcess, } from "./process-lifecycle.js";
|
|
2
|
+
export class CodexProcessFailure extends HostProcessFailure {
|
|
3
|
+
constructor(phase, result) {
|
|
4
|
+
super("Codex", phase, result);
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
export function runCodexProcess(options) {
|
|
8
|
+
return runHostProcess({ ...options, host: "Codex" });
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=codex-process.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-process.js","sourceRoot":"","sources":["codex-process.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,cAAc,GAIf,+BAA4B;AAE7B,MAAM,OAAO,mBAAoB,SAAQ,kBAAkB;IACzD,YAAY,KAAY,EAAE,MAAyB;QACjD,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAChC,CAAC;CACF;AAED,MAAM,UAAU,eAAe,CAAC,OAAyC;IACvE,OAAO,cAAc,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AACvD,CAAC","sourcesContent":["import {\n HostProcessFailure,\n runHostProcess,\n type HostProcessOptions,\n type HostProcessResult,\n type Phase,\n} from \"./process-lifecycle\";\n\nexport class CodexProcessFailure extends HostProcessFailure {\n constructor(phase: Phase, result: HostProcessResult) {\n super(\"Codex\", phase, result);\n }\n}\n\nexport function runCodexProcess(options: Omit<HostProcessOptions, \"host\">) {\n return runHostProcess({ ...options, host: \"Codex\" });\n}\n"]}
|