@pome-sh/cli 0.8.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/build-info.json +3 -3
- package/dist/src/cli/agent-identity.js +7 -2
- package/dist/src/cli/agent-resolver.d.ts +3 -0
- package/dist/src/cli/agent-resolver.js +10 -0
- package/dist/src/cli/checks-add.d.ts +32 -0
- package/dist/src/cli/checks-add.js +236 -0
- package/dist/src/cli/checks.d.ts +21 -0
- package/dist/src/cli/checks.js +150 -0
- package/dist/src/cli/compile-seeds.js +51 -5
- package/dist/src/cli/main.js +49 -11
- package/dist/src/cli/project-config.d.ts +8 -0
- package/dist/src/cli/project-config.js +18 -0
- package/dist/src/cli/register.d.ts +15 -0
- package/dist/src/cli/register.js +26 -3
- package/dist/src/cli/session.d.ts +10 -0
- package/dist/src/cli/session.js +28 -2
- package/dist/src/fix-prompt/index.d.ts +1 -1
- package/dist/src/fix-prompt/index.js +2 -2
- package/dist/src/fix-prompt/prompt.d.ts +2 -2
- package/dist/src/fix-prompt/prompt.js +9 -9
- package/dist/src/hosted/client.d.ts +8 -2
- package/dist/src/hosted/client.js +108 -26
- package/dist/src/hosted/errors.d.ts +14 -0
- package/dist/src/hosted/errors.js +22 -0
- package/dist/src/hosted/evalResultCache.d.ts +4 -4
- package/dist/src/hosted/evalResultCache.js +10 -3
- package/dist/src/recorder/artifacts.d.ts +1 -1
- package/dist/src/recorder/artifacts.js +8 -1
- package/dist/src/runner/runTask.d.ts +10 -10
- package/dist/src/runner/runTaskHosted.js +9 -2
- package/dist/src/runner/runTrialGroup.js +4 -1
- package/dist/src/task/insertCriterion.d.ts +15 -0
- package/dist/src/task/insertCriterion.js +62 -0
- package/dist/src/task/parseTask.d.ts +5 -0
- package/dist/src/task/parseTask.js +11 -0
- package/dist/src/task/taskSchema.d.ts +4 -4
- package/node_modules/@pome-sh/sdk/dist/checks.d.ts +54 -0
- package/node_modules/@pome-sh/sdk/dist/checks.js +143 -0
- package/node_modules/@pome-sh/sdk/dist/checks.js.map +1 -0
- package/node_modules/@pome-sh/sdk/package.json +7 -3
- package/node_modules/@pome-sh/twin-github/dist/src/access-control.d.ts +3 -3
- package/node_modules/@pome-sh/twin-github/dist/src/checks.d.ts +21 -0
- package/node_modules/@pome-sh/twin-github/dist/src/checks.js +90 -0
- package/node_modules/@pome-sh/twin-github/dist/src/checks.js.map +1 -0
- package/node_modules/@pome-sh/twin-github/dist/src/domain/checks.d.ts +153 -0
- package/node_modules/@pome-sh/twin-github/dist/src/domain/checks.js +66 -0
- package/node_modules/@pome-sh/twin-github/dist/src/domain/checks.js.map +1 -0
- package/node_modules/@pome-sh/twin-github/dist/src/domain/git.d.ts +567 -0
- package/node_modules/@pome-sh/twin-github/dist/src/domain/git.js +198 -0
- package/node_modules/@pome-sh/twin-github/dist/src/domain/git.js.map +1 -0
- package/node_modules/@pome-sh/twin-github/dist/src/{domain.d.ts → domain/github-domain.d.ts} +340 -71
- package/node_modules/@pome-sh/twin-github/dist/src/domain/github-domain.js +794 -0
- package/node_modules/@pome-sh/twin-github/dist/src/domain/github-domain.js.map +1 -0
- package/node_modules/@pome-sh/twin-github/dist/src/domain/helpers.d.ts +5 -0
- package/node_modules/@pome-sh/twin-github/dist/src/domain/helpers.js +15 -0
- package/node_modules/@pome-sh/twin-github/dist/src/domain/helpers.js.map +1 -0
- package/node_modules/@pome-sh/twin-github/dist/src/domain/index.d.ts +2 -0
- package/node_modules/@pome-sh/twin-github/dist/src/domain/index.js +5 -0
- package/node_modules/@pome-sh/twin-github/dist/src/domain/index.js.map +1 -0
- package/node_modules/@pome-sh/twin-github/dist/src/domain/issues.d.ts +545 -0
- package/node_modules/@pome-sh/twin-github/dist/src/domain/issues.js +272 -0
- package/node_modules/@pome-sh/twin-github/dist/src/domain/issues.js.map +1 -0
- package/node_modules/@pome-sh/twin-github/dist/src/domain/pulls.d.ts +816 -0
- package/node_modules/@pome-sh/twin-github/dist/src/domain/pulls.js +256 -0
- package/node_modules/@pome-sh/twin-github/dist/src/domain/pulls.js.map +1 -0
- package/node_modules/@pome-sh/twin-github/dist/src/domain/releases.d.ts +160 -0
- package/node_modules/@pome-sh/twin-github/dist/src/domain/releases.js +63 -0
- package/node_modules/@pome-sh/twin-github/dist/src/domain/releases.js.map +1 -0
- package/node_modules/@pome-sh/twin-github/dist/src/domain/repos.d.ts +219 -0
- package/node_modules/@pome-sh/twin-github/dist/src/domain/repos.js +131 -0
- package/node_modules/@pome-sh/twin-github/dist/src/domain/repos.js.map +1 -0
- package/node_modules/@pome-sh/twin-github/dist/src/domain/search.d.ts +252 -0
- package/node_modules/@pome-sh/twin-github/dist/src/domain/search.js +83 -0
- package/node_modules/@pome-sh/twin-github/dist/src/domain/search.js.map +1 -0
- package/node_modules/@pome-sh/twin-github/dist/src/domain/types.d.ts +15 -0
- package/node_modules/@pome-sh/twin-github/dist/src/domain/types.js +2 -0
- package/node_modules/@pome-sh/twin-github/dist/src/domain/types.js.map +1 -0
- package/node_modules/@pome-sh/twin-github/dist/src/index.d.ts +2 -1
- package/node_modules/@pome-sh/twin-github/dist/src/index.js +1 -1
- package/node_modules/@pome-sh/twin-github/dist/src/index.js.map +1 -1
- package/node_modules/@pome-sh/twin-github/dist/src/routes.d.ts +1 -1
- package/node_modules/@pome-sh/twin-github/dist/src/seed.d.ts +1 -1
- package/node_modules/@pome-sh/twin-github/dist/src/serializers.d.ts +3 -3
- package/node_modules/@pome-sh/twin-github/dist/src/tools.d.ts +188 -188
- package/node_modules/@pome-sh/twin-github/dist/src/twin.d.ts +1 -1
- package/node_modules/@pome-sh/twin-github/dist/src/twin.js +1 -1
- package/node_modules/@pome-sh/twin-github/dist/src/twin.js.map +1 -1
- package/node_modules/@pome-sh/twin-github/package.json +4 -4
- package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/package.json +2 -2
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/admin-gate.d.ts +35 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/admin-gate.js +103 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/admin-gate.js.map +1 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/auth.d.ts +100 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/auth.js +262 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/auth.js.map +1 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/build-info.d.ts +7 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/build-info.js +14 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/build-info.js.map +1 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/db.d.ts +44 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/db.js +113 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/db.js.map +1 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/errors.d.ts +24 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/errors.js +61 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/errors.js.map +1 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/failure-injection.d.ts +43 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/failure-injection.js +160 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/failure-injection.js.map +1 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/fidelity-inventory.d.ts +121 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/fidelity-inventory.js +204 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/fidelity-inventory.js.map +1 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/fidelity.d.ts +8 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/fidelity.js +39 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/fidelity.js.map +1 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/index.d.ts +372 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/index.js +139 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/index.js.map +1 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.d.ts +10 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.js +221 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.js.map +1 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/parity.d.ts +61 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/parity.js +123 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/parity.js.map +1 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/recorder.d.ts +120 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/recorder.js +368 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/recorder.js.map +1 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/redaction.d.ts +1 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/redaction.js +3 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/redaction.js.map +1 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/server-helpers.d.ts +54 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/server-helpers.js +181 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/server-helpers.js.map +1 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/server.d.ts +46 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/server.js +394 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/server.js.map +1 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/tool-context.d.ts +8 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/tool-context.js +22 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/dist/tool-context.js.map +1 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/sdk/package.json +54 -0
- package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/index.d.ts +1 -0
- package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/index.js +1 -0
- package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/index.js.map +1 -1
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/shared-types/dist/manifest.d.ts +31 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/shared-types/dist/manifest.js +76 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/shared-types/dist/manifest.js.map +1 -0
- package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/rest.d.ts +9 -0
- package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/rest.js +27 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/shared-types/dist/rest.js.map +1 -0
- package/node_modules/@pome-sh/twin-linear/node_modules/@pome-sh/shared-types/manifest-schema.json +68 -0
- package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/package.json +2 -1
- package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/trace-contract.json +1 -1
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/admin-gate.d.ts +35 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/admin-gate.js +103 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/admin-gate.js.map +1 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/auth.d.ts +100 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/auth.js +262 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/auth.js.map +1 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/build-info.d.ts +7 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/build-info.js +14 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/build-info.js.map +1 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/db.d.ts +44 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/db.js +113 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/db.js.map +1 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/errors.d.ts +24 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/errors.js +61 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/errors.js.map +1 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/failure-injection.d.ts +43 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/failure-injection.js +160 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/failure-injection.js.map +1 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/fidelity-inventory.d.ts +121 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/fidelity-inventory.js +204 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/fidelity-inventory.js.map +1 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/fidelity.d.ts +8 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/fidelity.js +39 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/fidelity.js.map +1 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/index.d.ts +372 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/index.js +139 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/index.js.map +1 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.d.ts +10 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.js +221 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.js.map +1 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/parity.d.ts +61 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/parity.js +123 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/parity.js.map +1 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/recorder.d.ts +120 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/recorder.js +368 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/recorder.js.map +1 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/redaction.d.ts +1 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/redaction.js +3 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/redaction.js.map +1 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/server-helpers.d.ts +54 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/server-helpers.js +181 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/server-helpers.js.map +1 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/server.d.ts +46 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/server.js +394 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/server.js.map +1 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/tool-context.d.ts +8 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/tool-context.js +22 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/tool-context.js.map +1 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/package.json +54 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/admin-gate.d.ts +35 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/admin-gate.js +103 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/admin-gate.js.map +1 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/auth.d.ts +100 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/auth.js +262 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/auth.js.map +1 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/build-info.d.ts +7 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/build-info.js +14 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/build-info.js.map +1 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/db.d.ts +44 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/db.js +113 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/db.js.map +1 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/errors.d.ts +24 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/errors.js +61 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/errors.js.map +1 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/failure-injection.d.ts +43 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/failure-injection.js +160 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/failure-injection.js.map +1 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/fidelity-inventory.d.ts +121 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/fidelity-inventory.js +204 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/fidelity-inventory.js.map +1 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/fidelity.d.ts +8 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/fidelity.js +39 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/fidelity.js.map +1 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/index.d.ts +372 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/index.js +139 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/index.js.map +1 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.d.ts +10 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.js +221 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.js.map +1 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/parity.d.ts +61 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/parity.js +123 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/parity.js.map +1 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/recorder.d.ts +120 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/recorder.js +368 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/recorder.js.map +1 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/redaction.d.ts +1 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/redaction.js +3 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/redaction.js.map +1 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/server-helpers.d.ts +54 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/server-helpers.js +181 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/server-helpers.js.map +1 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/server.d.ts +46 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/server.js +394 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/server.js.map +1 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/tool-context.d.ts +8 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/tool-context.js +22 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/tool-context.js.map +1 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/package.json +54 -0
- package/package.json +3 -3
- package/tasks/00-default-seed.md +1 -1
- package/tasks/01-bug-happy-path.md +1 -1
- package/tasks/03-already-triaged.md +1 -1
- package/tasks/06-mislabeled-needs-fix.md +1 -1
- package/tasks/17-in-scope-injection.md +1 -1
- package/node_modules/@pome-sh/twin-github/dist/src/domain.js +0 -0
- package/node_modules/@pome-sh/twin-github/dist/src/domain.js.map +0 -1
- package/node_modules/@pome-sh/twin-github/node_modules/@pome-sh/shared-types/dist/rest.js.map +0 -1
- /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/admin-gate.d.ts +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/admin-gate.js +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/admin-gate.js.map +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/auth.d.ts +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/auth.js +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/auth.js.map +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/build-info.d.ts +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/build-info.js +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/build-info.js.map +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/db.d.ts +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/db.js +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/db.js.map +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/errors.d.ts +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/errors.js +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/errors.js.map +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/failure-injection.d.ts +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/failure-injection.js +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/failure-injection.js.map +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/fidelity-inventory.d.ts +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/fidelity-inventory.js +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/fidelity-inventory.js.map +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/fidelity.d.ts +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/fidelity.js +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/fidelity.js.map +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/index.d.ts +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/index.js +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/index.js.map +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.d.ts +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.js +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.js.map +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/parity.d.ts +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/parity.js +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/parity.js.map +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/recorder.d.ts +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/recorder.js +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/recorder.js.map +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/redaction.d.ts +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/redaction.js +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/redaction.js.map +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/server-helpers.d.ts +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/server-helpers.js +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/server-helpers.js.map +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/server.d.ts +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/server.js +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/server.js.map +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/tool-context.d.ts +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/tool-context.js +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-gmail}/node_modules/@pome-sh/sdk/dist/tool-context.js.map +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/errors.d.ts +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/errors.js +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/errors.js.map +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/finalize-shapes.d.ts +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/finalize-shapes.js +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/finalize-shapes.js.map +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/github-access-control.d.ts +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/github-access-control.js +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/github-access-control.js.map +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/identity.d.ts +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/identity.js +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/identity.js.map +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/index.d.ts +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/index.js +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/index.js.map +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/manifest.d.ts +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/manifest.js +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/manifest.js.map +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/event-schema.d.ts +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/event-schema.js +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/event-schema.js.map +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/fixtures/data.d.ts +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/fixtures/data.js +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/fixtures/data.js.map +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/fixtures/index.d.ts +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/fixtures/index.js +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/fixtures/index.js.map +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/index.d.ts +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/index.js +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/index.js.map +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/legacy-shim.d.ts +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/legacy-shim.js +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/legacy-shim.js.map +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/map-span.d.ts +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/map-span.js +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/map-span.js.map +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/nano.d.ts +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/nano.js +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/nano.js.map +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/project.d.ts +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/project.js +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/project.js.map +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/semconv.d.ts +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/semconv.js +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/semconv.js.map +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/span-event.d.ts +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/span-event.js +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/otel/span-event.js.map +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/recorder-events.d.ts +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/recorder-events.js +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/recorder-events.js.map +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/redaction.d.ts +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/redaction.js +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/redaction.js.map +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/rest.d.ts +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/rest.js +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/rest.js.map +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/run.d.ts +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/run.js +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/run.js.map +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/seed-envelope.d.ts +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/seed-envelope.js +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/seed-envelope.js.map +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/seed-state.d.ts +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/seed-state.js +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/seed-state.js.map +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/sessions.d.ts +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/sessions.js +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/sessions.js.map +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/task-vocab.d.ts +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/task-vocab.js +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/task-vocab.js.map +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/task.d.ts +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/task.js +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/dist/task.js.map +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/manifest-schema.json +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/package.json +0 -0
- /package/node_modules/@pome-sh/{sdk → twin-gmail}/node_modules/@pome-sh/shared-types/trace-contract.json +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/errors.d.ts +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/errors.js +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/errors.js.map +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/finalize-shapes.d.ts +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/finalize-shapes.js +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/finalize-shapes.js.map +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/github-access-control.d.ts +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/github-access-control.js +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/github-access-control.js.map +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/identity.d.ts +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/identity.js +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/identity.js.map +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/event-schema.d.ts +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/event-schema.js +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/event-schema.js.map +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/fixtures/data.d.ts +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/fixtures/data.js +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/fixtures/data.js.map +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/fixtures/index.d.ts +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/fixtures/index.js +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/fixtures/index.js.map +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/index.d.ts +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/index.js +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/index.js.map +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/legacy-shim.d.ts +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/legacy-shim.js +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/legacy-shim.js.map +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/map-span.d.ts +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/map-span.js +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/map-span.js.map +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/nano.d.ts +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/nano.js +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/nano.js.map +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/project.d.ts +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/project.js +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/project.js.map +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/semconv.d.ts +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/semconv.js +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/semconv.js.map +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/span-event.d.ts +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/span-event.js +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/otel/span-event.js.map +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/recorder-events.d.ts +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/recorder-events.js +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/recorder-events.js.map +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/redaction.d.ts +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/redaction.js +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/redaction.js.map +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/run.d.ts +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/run.js +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/run.js.map +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/seed-envelope.d.ts +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/seed-envelope.js +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/seed-envelope.js.map +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/seed-state.d.ts +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/seed-state.js +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/seed-state.js.map +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/sessions.d.ts +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/sessions.js +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/sessions.js.map +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/task-vocab.d.ts +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/task-vocab.js +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/task-vocab.js.map +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/task.d.ts +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/task.js +0 -0
- /package/node_modules/@pome-sh/{twin-github → twin-linear}/node_modules/@pome-sh/shared-types/dist/task.js.map +0 -0
package/dist/src/cli/main.js
CHANGED
|
@@ -17,6 +17,8 @@ import { loginWithClerk } from "./login.js";
|
|
|
17
17
|
import { runDocsCommand } from "./docs.js";
|
|
18
18
|
import { runCompileSeeds } from "./compile-seeds.js";
|
|
19
19
|
import { runTasksCommand } from "./tasks.js";
|
|
20
|
+
import { runChecksCommand } from "./checks.js";
|
|
21
|
+
import { runChecksAddCommand } from "./checks-add.js";
|
|
20
22
|
import { runEvalCommand } from "./eval.js";
|
|
21
23
|
import { copyAnnounceLine, ensureDefaultTask, runYoursFrameLines, trialsPinFallbackLine, } from "./default-task.js";
|
|
22
24
|
import { findTwin, runnableTasks, } from "./tasks-catalog.js";
|
|
@@ -245,6 +247,32 @@ export function createProgram() {
|
|
|
245
247
|
};
|
|
246
248
|
registerTasksCommand("tasks", false);
|
|
247
249
|
registerTasksCommand("scenarios", true);
|
|
250
|
+
// F-1074 — `pome checks` is a TOP-LEVEL group, not `pome tasks checks`:
|
|
251
|
+
// `pome tasks` already takes `[twin]` positionally, so `tasks checks` would
|
|
252
|
+
// parse "checks" as a twin id, and `pome task` one letter from `pome tasks`
|
|
253
|
+
// is a trap.
|
|
254
|
+
const checks = program
|
|
255
|
+
.command("checks")
|
|
256
|
+
.argument("[twin]", "Twin id (e.g. github). Omit to list twins that declare checks.")
|
|
257
|
+
.option("--json", "Emit the declaration as JSON (for skills and agents).", false)
|
|
258
|
+
.description("Browse the typed checks a twin declares — the closed set [code] criteria come from")
|
|
259
|
+
.action(async (twin, opts) => {
|
|
260
|
+
await runChecksCommand(twin, { json: opts.json });
|
|
261
|
+
});
|
|
262
|
+
checks
|
|
263
|
+
.command("add")
|
|
264
|
+
.argument("<file>", "Task markdown file to append a criterion to")
|
|
265
|
+
.option("--check <id>", "Check id (run `pome checks <twin>` to list them)")
|
|
266
|
+
.option("--arg <key=value>", "One per declared parameter. Repeat the flag.", (value, previous = []) => [...previous, value], [])
|
|
267
|
+
.option("--api-url <url>", "Control-plane URL", process.env.POME_API_URL ?? DEFAULT_CONTROL_PLANE_URL)
|
|
268
|
+
.description("Add one [code] criterion by picking a declared check — pome writes the English")
|
|
269
|
+
.action(async (file, opts) => {
|
|
270
|
+
await runChecksAddCommand(file, {
|
|
271
|
+
check: opts.check,
|
|
272
|
+
arg: opts.arg,
|
|
273
|
+
apiBaseUrl: opts.apiUrl,
|
|
274
|
+
});
|
|
275
|
+
});
|
|
248
276
|
program
|
|
249
277
|
.command("compile-seeds")
|
|
250
278
|
.argument("[target]", "Task .md file or directory (defaults to ./tasks)")
|
|
@@ -272,7 +300,7 @@ export function createProgram() {
|
|
|
272
300
|
.argument("<name>", "Human-readable agent name (e.g. \"triage-bot\")")
|
|
273
301
|
.option("--api-url <url>", "Control-plane URL", process.env.POME_API_URL ?? DEFAULT_CONTROL_PLANE_URL)
|
|
274
302
|
.option("--force", "Re-resolve the agent even when .pome/link.json already links one", false)
|
|
275
|
-
.option("--twins <list>", "Comma-separated services this agent may exercise (e.g. github,slack). Default: the cloud's default enablement.")
|
|
303
|
+
.option("--twins <list>", "Comma-separated services this agent may exercise (e.g. github,slack), unioned with the manifest's twins. Default: the manifest's twins, else the cloud's default enablement.")
|
|
276
304
|
.description("Create a cloud agent under the current team and write agent.slug to pome.json")
|
|
277
305
|
.action(async (name, opts) => {
|
|
278
306
|
try {
|
|
@@ -360,12 +388,22 @@ export function createProgram() {
|
|
|
360
388
|
.description("Stop a hosted session (aliased as `kill`)")
|
|
361
389
|
.argument("<session-id>", "Session id (ses_…)")
|
|
362
390
|
.option("--api-url <url>", "Control-plane URL", process.env.POME_API_URL ?? DEFAULT_CONTROL_PLANE_URL)
|
|
391
|
+
.option("--discard", "Confirm destroying a session whose run has not been graded (F-983)", false)
|
|
363
392
|
.action(async (sessionId, opts) => {
|
|
364
393
|
try {
|
|
365
|
-
await runSessionStop({
|
|
394
|
+
await runSessionStop({
|
|
395
|
+
apiBaseUrl: opts.apiUrl,
|
|
396
|
+
sessionId,
|
|
397
|
+
discard: opts.discard === true,
|
|
398
|
+
});
|
|
366
399
|
}
|
|
367
400
|
catch (err) {
|
|
368
|
-
|
|
401
|
+
// runSessionStop already prints the full refusal detail for
|
|
402
|
+
// HostedDiscardRefusedError; friendlyHostedError returns "" for it
|
|
403
|
+
// so we don't print a duplicate (or bare blank) line here.
|
|
404
|
+
const friendly = friendlyHostedError(err);
|
|
405
|
+
if (friendly)
|
|
406
|
+
console.error(friendly);
|
|
369
407
|
process.exitCode = 2;
|
|
370
408
|
}
|
|
371
409
|
});
|
|
@@ -558,7 +596,7 @@ export function createProgram() {
|
|
|
558
596
|
// documented exit codes. Anything else falls through to Commander
|
|
559
597
|
// (treated like self-host).
|
|
560
598
|
try {
|
|
561
|
-
// FDRS-636 — effective trial count: -n wins, else the
|
|
599
|
+
// FDRS-636 — effective trial count: -n wins, else the task
|
|
562
600
|
// config's `runs` field (both capped at 20). k>1 takes the
|
|
563
601
|
// trial-group path; k=1 stays EXACTLY the single-run path
|
|
564
602
|
// below (no group is ever stamped for it).
|
|
@@ -769,7 +807,7 @@ export function createProgram() {
|
|
|
769
807
|
.argument("[task]", "Path to the task .md file (only with an events.jsonl target)")
|
|
770
808
|
.description("Assemble a paste-into-IDE fix prompt (no LLM call, no network). With no args, reads the latest FAILED run set under ./runs: the persisted cloud verdicts (verdict.json) become grouped failure signatures over the raw traces, in one prompt. Point it at a trial run dir to target that set, or use the legacy `<events.jsonl> <task.md>` form for a single trace.")
|
|
771
809
|
.action(async (target, taskArg) => {
|
|
772
|
-
// Legacy 2-arg form: <events.jsonl> <
|
|
810
|
+
// Legacy 2-arg form: <events.jsonl> <task.md> — unchanged
|
|
773
811
|
// (CAPTURE-ONLY, FDRS-657: raw trace + declared criteria, no verdict).
|
|
774
812
|
if (target !== undefined && target.endsWith(".jsonl")) {
|
|
775
813
|
if (!taskArg) {
|
|
@@ -777,7 +815,7 @@ export function createProgram() {
|
|
|
777
815
|
process.exitCode = 5;
|
|
778
816
|
return;
|
|
779
817
|
}
|
|
780
|
-
const [eventsRaw,
|
|
818
|
+
const [eventsRaw, task] = await Promise.all([
|
|
781
819
|
readFile(resolve(target), "utf8"),
|
|
782
820
|
parseTaskFile(resolve(taskArg)),
|
|
783
821
|
]);
|
|
@@ -786,7 +824,7 @@ export function createProgram() {
|
|
|
786
824
|
.map((line) => line.trim())
|
|
787
825
|
.filter((line) => line.length > 0)
|
|
788
826
|
.map((line) => JSON.parse(line));
|
|
789
|
-
console.log(buildFixPrompt({ events,
|
|
827
|
+
console.log(buildFixPrompt({ events, task }));
|
|
790
828
|
return;
|
|
791
829
|
}
|
|
792
830
|
if (taskArg !== undefined) {
|
|
@@ -810,14 +848,14 @@ export function createProgram() {
|
|
|
810
848
|
return;
|
|
811
849
|
}
|
|
812
850
|
const set = discovery.set;
|
|
813
|
-
let
|
|
851
|
+
let task = null;
|
|
814
852
|
try {
|
|
815
|
-
|
|
853
|
+
task = await parseTaskFile(resolve(set.taskPath));
|
|
816
854
|
}
|
|
817
855
|
catch {
|
|
818
856
|
// Task file moved/edited since the run — the prompt degrades to the
|
|
819
857
|
// verdict-embedded criteria.
|
|
820
|
-
|
|
858
|
+
task = null;
|
|
821
859
|
}
|
|
822
860
|
const trials = [];
|
|
823
861
|
for (const [idx, t] of set.trials.entries()) {
|
|
@@ -831,7 +869,7 @@ export function createProgram() {
|
|
|
831
869
|
console.log(buildGroupFixPrompt({
|
|
832
870
|
taskName: set.taskName,
|
|
833
871
|
groupId: set.groupId,
|
|
834
|
-
|
|
872
|
+
task,
|
|
835
873
|
trials,
|
|
836
874
|
}));
|
|
837
875
|
});
|
|
@@ -27,3 +27,11 @@ export declare function readRequiredManifest(startDir?: string): Promise<Manifes
|
|
|
27
27
|
* pretty-printed with a trailing newline; YAML carries the schema pointer as a
|
|
28
28
|
* language-server comment (the `$schema` key is dropped from the YAML body). */
|
|
29
29
|
export declare function writeManifest(path: string, format: ManifestFormat, data: Record<string, unknown>): Promise<void>;
|
|
30
|
+
/** Normalize the manifest's `twins` to canonical (trim + lowercase, de-duped)
|
|
31
|
+
* twin ids for the `POST /v1/agents` body. The manifest schema keeps `twins`
|
|
32
|
+
* open (min(1) strings, not checked against MOUNTED_TWINS), so entries are
|
|
33
|
+
* normalized but NOT validated here — the server returns a friendly error for
|
|
34
|
+
* an unknown twin. Returns undefined when nothing survives so the cloud's
|
|
35
|
+
* default enablement still applies. Shared by the register command and the
|
|
36
|
+
* run-path identity resolver (F-926). */
|
|
37
|
+
export declare function normalizeManifestTwins(manifestTwins: readonly string[] | undefined): string[] | undefined;
|
|
@@ -114,6 +114,24 @@ function slugErrorMessage(raw, path) {
|
|
|
114
114
|
const base = `Invalid agent.slug in ${path}: must match ${SLUG_RE} (lowercase kebab-case, max 64 chars).`;
|
|
115
115
|
return suggestion.length > 0 ? `${base} Did you mean "${suggestion}"?` : base;
|
|
116
116
|
}
|
|
117
|
+
/** Normalize the manifest's `twins` to canonical (trim + lowercase, de-duped)
|
|
118
|
+
* twin ids for the `POST /v1/agents` body. The manifest schema keeps `twins`
|
|
119
|
+
* open (min(1) strings, not checked against MOUNTED_TWINS), so entries are
|
|
120
|
+
* normalized but NOT validated here — the server returns a friendly error for
|
|
121
|
+
* an unknown twin. Returns undefined when nothing survives so the cloud's
|
|
122
|
+
* default enablement still applies. Shared by the register command and the
|
|
123
|
+
* run-path identity resolver (F-926). */
|
|
124
|
+
export function normalizeManifestTwins(manifestTwins) {
|
|
125
|
+
if (manifestTwins === undefined)
|
|
126
|
+
return undefined;
|
|
127
|
+
const out = new Set();
|
|
128
|
+
for (const twin of manifestTwins) {
|
|
129
|
+
const norm = twin.trim().toLowerCase();
|
|
130
|
+
if (norm.length > 0)
|
|
131
|
+
out.add(norm);
|
|
132
|
+
}
|
|
133
|
+
return out.size > 0 ? [...out] : undefined;
|
|
134
|
+
}
|
|
117
135
|
async function fileExists(path) {
|
|
118
136
|
try {
|
|
119
137
|
await readFile(path, "utf8");
|
|
@@ -14,5 +14,20 @@ interface RegisterAgentOptions extends InteractiveSeams {
|
|
|
14
14
|
}
|
|
15
15
|
/** Normalize a `--twins github,slack` comma list to a validated twin array. */
|
|
16
16
|
export declare function normalizeRegisterTwins(raw: string | undefined): string[] | undefined;
|
|
17
|
+
/** Effective register twins = the manifest's declared `twins` (the default twin
|
|
18
|
+
* set for runs) unioned with any `--twins` flag additions (F-926). Before this,
|
|
19
|
+
* the CLI sent only the flag, so a manifest like `twins: ["gmail"]` never
|
|
20
|
+
* reached `POST /v1/agents` and the server's `github` default won — the first
|
|
21
|
+
* `pome run` then errored with "Requested twins are not enabled".
|
|
22
|
+
*
|
|
23
|
+
* Union is the correct client shape because the server merges additively (never
|
|
24
|
+
* removes), so there is no "reduce" semantics to preserve; sending more is
|
|
25
|
+
* always safe. Manifest entries are normalized (trim + lowercase) to match the
|
|
26
|
+
* flag path and the canonical lowercase twin ids; they are intentionally NOT
|
|
27
|
+
* validated against MOUNTED_TWINS here (the manifest schema keeps `twins` open,
|
|
28
|
+
* and the server returns a friendly error for an unknown twin). Returns
|
|
29
|
+
* undefined when neither source contributes so the cloud's default enablement
|
|
30
|
+
* still applies. */
|
|
31
|
+
export declare function mergeRegisterTwins(manifestTwins: readonly string[] | undefined, flagTwins: readonly string[] | undefined): string[] | undefined;
|
|
17
32
|
export declare function runRegisterAgent(opts: RegisterAgentOptions): Promise<void>;
|
|
18
33
|
export { friendlyHostedError };
|
package/dist/src/cli/register.js
CHANGED
|
@@ -19,7 +19,7 @@ import { postAgentResolver, resolveSeams, } from "./agent-resolver.js";
|
|
|
19
19
|
import { resolveCredentials } from "./credentials.js";
|
|
20
20
|
import { suggestFramework } from "./frameworks.js";
|
|
21
21
|
import { ensurePomeGitignored, readLinkCache, resolveCachedAgentId, writeLinkCache, } from "./link-cache.js";
|
|
22
|
-
import { readRequiredManifest, writeManifest, } from "./project-config.js";
|
|
22
|
+
import { normalizeManifestTwins, readRequiredManifest, writeManifest, } from "./project-config.js";
|
|
23
23
|
import { friendlyHostedError } from "./session.js";
|
|
24
24
|
const SCHEMA_URL = "https://pome.sh/schemas/v1/pome.json";
|
|
25
25
|
/** Normalize a `--twins github,slack` comma list to a validated twin array. */
|
|
@@ -39,6 +39,26 @@ export function normalizeRegisterTwins(raw) {
|
|
|
39
39
|
}
|
|
40
40
|
return [...new Set(twins)];
|
|
41
41
|
}
|
|
42
|
+
/** Effective register twins = the manifest's declared `twins` (the default twin
|
|
43
|
+
* set for runs) unioned with any `--twins` flag additions (F-926). Before this,
|
|
44
|
+
* the CLI sent only the flag, so a manifest like `twins: ["gmail"]` never
|
|
45
|
+
* reached `POST /v1/agents` and the server's `github` default won — the first
|
|
46
|
+
* `pome run` then errored with "Requested twins are not enabled".
|
|
47
|
+
*
|
|
48
|
+
* Union is the correct client shape because the server merges additively (never
|
|
49
|
+
* removes), so there is no "reduce" semantics to preserve; sending more is
|
|
50
|
+
* always safe. Manifest entries are normalized (trim + lowercase) to match the
|
|
51
|
+
* flag path and the canonical lowercase twin ids; they are intentionally NOT
|
|
52
|
+
* validated against MOUNTED_TWINS here (the manifest schema keeps `twins` open,
|
|
53
|
+
* and the server returns a friendly error for an unknown twin). Returns
|
|
54
|
+
* undefined when neither source contributes so the cloud's default enablement
|
|
55
|
+
* still applies. */
|
|
56
|
+
export function mergeRegisterTwins(manifestTwins, flagTwins) {
|
|
57
|
+
const merged = new Set(normalizeManifestTwins(manifestTwins) ?? []);
|
|
58
|
+
for (const twin of flagTwins ?? [])
|
|
59
|
+
merged.add(twin);
|
|
60
|
+
return merged.size > 0 ? [...merged] : undefined;
|
|
61
|
+
}
|
|
42
62
|
// ── Persist: manifest + link cache + gitignore ──────────────────────────────
|
|
43
63
|
/** Read the manifest's existing agent block (for round-trip preservation and
|
|
44
64
|
* did-you-mean input) without forcing schema defaults. */
|
|
@@ -141,12 +161,15 @@ export async function runRegisterAgent(opts) {
|
|
|
141
161
|
return;
|
|
142
162
|
}
|
|
143
163
|
}
|
|
164
|
+
// Send the manifest's declared twins (unioned with any --twins flag) so the
|
|
165
|
+
// cloud's enabled services match the manifest, not the server default (F-926).
|
|
166
|
+
const twins = mergeRegisterTwins(manifestRead.manifest.twins, opts.twins);
|
|
144
167
|
const agent = await createAndPersistAgent({
|
|
145
168
|
creds,
|
|
146
169
|
name: opts.name,
|
|
147
170
|
manifestRead,
|
|
148
171
|
projectDir,
|
|
149
|
-
twins
|
|
172
|
+
twins,
|
|
150
173
|
seams: resolveSeams(opts),
|
|
151
174
|
});
|
|
152
175
|
const displayName = stripControlCharacters(agent.display_name);
|
|
@@ -156,7 +179,7 @@ export async function runRegisterAgent(opts) {
|
|
|
156
179
|
if (agent.enabled_services !== undefined) {
|
|
157
180
|
console.error(`Enabled services: ${agent.enabled_services.length > 0 ? agent.enabled_services.join(", ") : "(none)"}.`);
|
|
158
181
|
}
|
|
159
|
-
else if (
|
|
182
|
+
else if (twins && twins.length > 0) {
|
|
160
183
|
console.error("Enabled services: not reported by this pome cloud (older control plane) — twin scoping may not have taken effect.");
|
|
161
184
|
}
|
|
162
185
|
// Deep-link the registered agent's dashboard page. `/agents/<slug>` is the
|
|
@@ -21,5 +21,15 @@ export declare function runSessionList(opts: {
|
|
|
21
21
|
export declare function runSessionStop(opts: {
|
|
22
22
|
apiBaseUrl: string;
|
|
23
23
|
sessionId: string;
|
|
24
|
+
/** F-983: confirm destroying a session whose run has not been graded.
|
|
25
|
+
* Off by default — a human-typed destructive command gets the refusal
|
|
26
|
+
* printed instead of silently discarding the evidence. */
|
|
27
|
+
discard?: boolean;
|
|
24
28
|
}): Promise<void>;
|
|
29
|
+
/** Empty string means "already fully reported — print nothing more". Only
|
|
30
|
+
* `HostedDiscardRefusedError` returns it today: `runSessionStop` above just
|
|
31
|
+
* printed the complete multi-line refusal (session, task, open time, the
|
|
32
|
+
* `--discard` escape hatch), so falling through to `err.message` here would
|
|
33
|
+
* either duplicate that or, when the server omits `error.message`, print a
|
|
34
|
+
* bare blank line. Callers must skip printing when this returns "". */
|
|
25
35
|
export declare function friendlyHostedError(err: unknown): string;
|
package/dist/src/cli/session.js
CHANGED
|
@@ -4,7 +4,7 @@ import { chmod, mkdir, writeFile } from "node:fs/promises";
|
|
|
4
4
|
import { dirname } from "node:path";
|
|
5
5
|
import { MOUNTED_TWINS } from "@pome-sh/shared-types";
|
|
6
6
|
import { createHostedClient, perTwinReturnedByCloud } from "../hosted/client.js";
|
|
7
|
-
import { HostedAuthError, HostedOrchError, HostedQuotaError, } from "../hosted/errors.js";
|
|
7
|
+
import { HostedAuthError, HostedDiscardRefusedError, HostedOrchError, HostedQuotaError, } from "../hosted/errors.js";
|
|
8
8
|
import { resolveRunAgentIdentity } from "./agent-identity.js";
|
|
9
9
|
import { resolveCredentials } from "./credentials.js";
|
|
10
10
|
import { DEFAULT_DASHBOARD_URL } from "./defaults.js";
|
|
@@ -242,10 +242,36 @@ export async function runSessionStop(opts) {
|
|
|
242
242
|
baseUrl: creds.apiBaseUrl,
|
|
243
243
|
apiKey: creds.apiKey,
|
|
244
244
|
});
|
|
245
|
-
|
|
245
|
+
try {
|
|
246
|
+
await client.deleteSession(opts.sessionId, false, {
|
|
247
|
+
discard: opts.discard === true,
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
catch (err) {
|
|
251
|
+
if (err instanceof HostedDiscardRefusedError) {
|
|
252
|
+
console.error(`Refused to stop ${err.sessionId}: it is still open (${err.state}), so its ` +
|
|
253
|
+
`run has not been graded — Pome creates the run row at finalize, and ` +
|
|
254
|
+
`stopping now discards it.`);
|
|
255
|
+
if (err.taskName)
|
|
256
|
+
console.error(` Task: ${err.taskName}`);
|
|
257
|
+
console.error(` Open for ${err.openSeconds}s.`);
|
|
258
|
+
console.error(` To keep the run, finalize it instead. To discard it anyway: ` +
|
|
259
|
+
`pome session stop ${err.sessionId} --discard`);
|
|
260
|
+
}
|
|
261
|
+
throw err;
|
|
262
|
+
}
|
|
246
263
|
console.error(`Stopped session ${opts.sessionId}.`);
|
|
247
264
|
}
|
|
265
|
+
/** Empty string means "already fully reported — print nothing more". Only
|
|
266
|
+
* `HostedDiscardRefusedError` returns it today: `runSessionStop` above just
|
|
267
|
+
* printed the complete multi-line refusal (session, task, open time, the
|
|
268
|
+
* `--discard` escape hatch), so falling through to `err.message` here would
|
|
269
|
+
* either duplicate that or, when the server omits `error.message`, print a
|
|
270
|
+
* bare blank line. Callers must skip printing when this returns "". */
|
|
248
271
|
export function friendlyHostedError(err) {
|
|
272
|
+
if (err instanceof HostedDiscardRefusedError) {
|
|
273
|
+
return "";
|
|
274
|
+
}
|
|
249
275
|
if (err instanceof HostedAuthError) {
|
|
250
276
|
return `${err.message} · Run \`pome login\` or set a valid POME_API_KEY.`;
|
|
251
277
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type FixPromptContext, type GroupFixPromptContext } from "./prompt.js";
|
|
2
2
|
/**
|
|
3
|
-
* Build the paste-into-IDE fix prompt from the raw trace + the
|
|
3
|
+
* Build the paste-into-IDE fix prompt from the raw trace + the task's
|
|
4
4
|
* criteria. PURE + synchronous — no network, no LLM, no local judge.
|
|
5
5
|
*
|
|
6
6
|
* The output is a complete prompt: the system instructions (how to write the
|
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
// (FDRS-657). CAPTURE-ONLY: no LLM/judge call happens here. The former BYOK
|
|
5
5
|
// CLI-side judge call (`callJudge`) that generated the handoff was removed;
|
|
6
6
|
// this now returns the fully-assembled prompt (system instructions + the
|
|
7
|
-
//
|
|
7
|
+
// task's criteria + the captured trace) for the developer to paste into
|
|
8
8
|
// their own coding assistant.
|
|
9
9
|
import { FIX_PROMPT_SYSTEM_PROMPT, buildFixUserPrompt, buildGroupFixUserPrompt, } from "./prompt.js";
|
|
10
10
|
/**
|
|
11
|
-
* Build the paste-into-IDE fix prompt from the raw trace + the
|
|
11
|
+
* Build the paste-into-IDE fix prompt from the raw trace + the task's
|
|
12
12
|
* criteria. PURE + synchronous — no network, no LLM, no local judge.
|
|
13
13
|
*
|
|
14
14
|
* The output is a complete prompt: the system instructions (how to write the
|
|
@@ -6,7 +6,7 @@ export declare const FIX_PROMPT_SYSTEM_PROMPT: string;
|
|
|
6
6
|
export declare function escapeTagContent(text: string): string;
|
|
7
7
|
export interface FixPromptContext {
|
|
8
8
|
events: RecorderEvent[];
|
|
9
|
-
|
|
9
|
+
task: Task;
|
|
10
10
|
}
|
|
11
11
|
export declare function buildFixUserPrompt(ctx: FixPromptContext): string;
|
|
12
12
|
export interface TrialFixInput {
|
|
@@ -22,7 +22,7 @@ export interface GroupFixPromptContext {
|
|
|
22
22
|
groupId: string | null;
|
|
23
23
|
/** Parsed task file when it still resolves. Null degrades the prompt to
|
|
24
24
|
* the verdict-embedded criteria (the file may have moved since the run). */
|
|
25
|
-
|
|
25
|
+
task: Task | null;
|
|
26
26
|
/** Completed trials of the run set (verdict.json present), run order. */
|
|
27
27
|
trials: TrialFixInput[];
|
|
28
28
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// Assembles the paste-into-IDE fix prompt for a failed run (FDRS-657).
|
|
4
4
|
//
|
|
5
5
|
// CAPTURE-ONLY: the OSS CLI does NOT call an LLM here. `pome fix-prompt`
|
|
6
|
-
// assembles a self-contained prompt — system instructions + the
|
|
6
|
+
// assembles a self-contained prompt — system instructions + the task's
|
|
7
7
|
// criteria + the raw captured trace — and prints it so the developer can paste
|
|
8
8
|
// it into THEIR own coding assistant (Cursor / Claude Code). The former BYOK
|
|
9
9
|
// local-judge call that generated the handoff CLI-side was removed under
|
|
@@ -87,10 +87,10 @@ function renderCriteria(criteria) {
|
|
|
87
87
|
.join("\n");
|
|
88
88
|
}
|
|
89
89
|
export function buildFixUserPrompt(ctx) {
|
|
90
|
-
const criteria = redactSecrets(renderCriteria(ctx.
|
|
90
|
+
const criteria = redactSecrets(renderCriteria(ctx.task.criteria));
|
|
91
91
|
const trace = renderEvents(ctx.events.map((event) => redactEvent(event)));
|
|
92
|
-
const taskTitle = redactSecrets(ctx.
|
|
93
|
-
const taskPrompt = redactSecrets(ctx.
|
|
92
|
+
const taskTitle = redactSecrets(ctx.task.title);
|
|
93
|
+
const taskPrompt = redactSecrets(ctx.task.prompt);
|
|
94
94
|
return `## Task
|
|
95
95
|
${taskTitle}
|
|
96
96
|
|
|
@@ -192,15 +192,15 @@ export function buildGroupFixUserPrompt(ctx) {
|
|
|
192
192
|
const representative = representativeFailingTrial(ctx.trials);
|
|
193
193
|
const otherFailing = ctx.trials.filter((t) => !t.verdict.passed && t !== representative);
|
|
194
194
|
const signatures = redactSecrets(renderGroupedSignatures(ctx.trials));
|
|
195
|
-
const criteriaBlock = ctx.
|
|
196
|
-
? redactSecrets(renderCriteria(ctx.
|
|
195
|
+
const criteriaBlock = ctx.task
|
|
196
|
+
? redactSecrets(renderCriteria(ctx.task.criteria))
|
|
197
197
|
: redactSecrets(renderCriteria((ctx.trials[0]?.verdict.criteria_results ?? []).map((r) => ({
|
|
198
198
|
type: r.criterion.type,
|
|
199
199
|
text: r.criterion.text,
|
|
200
200
|
}))));
|
|
201
|
-
const promptBlock = ctx.
|
|
202
|
-
? redactSecrets(ctx.
|
|
203
|
-
: `(task file not found at ${ctx.trials[0]?.verdict.
|
|
201
|
+
const promptBlock = ctx.task
|
|
202
|
+
? redactSecrets(ctx.task.prompt)
|
|
203
|
+
: `(task file not found at ${ctx.trials[0]?.verdict.task_path ?? "?"} — criteria above come from the cloud verdicts)`;
|
|
204
204
|
const sections = [];
|
|
205
205
|
sections.push(`## Run set (cloud-judged)
|
|
206
206
|
task ${redactSecrets(ctx.taskName)} · ${ctx.groupId ? `group ${ctx.groupId}` : "single run"} · ${passed} of ${completed} completed trials passed`);
|
|
@@ -197,7 +197,13 @@ export interface HostedClient {
|
|
|
197
197
|
* for the feature-detection contract (a 404 here means an older control
|
|
198
198
|
* plane; callers must tolerate it silently). */
|
|
199
199
|
requestMetaUploadUrl(sessionId: string): Promise<MetaUploadUrlResponse>;
|
|
200
|
-
/** @param bestEffort default true — hosted runner swallows network errors on teardown
|
|
201
|
-
|
|
200
|
+
/** @param bestEffort default true — hosted runner swallows network errors on teardown
|
|
201
|
+
* @param opts.discard F-983 — set true to confirm discarding an ungraded
|
|
202
|
+
* session after catching {@link HostedDiscardRefusedError}. Never implied
|
|
203
|
+
* by `bestEffort`: a refusal is a deliberate server decision, not
|
|
204
|
+
* transport noise. */
|
|
205
|
+
deleteSession(sessionId: string, bestEffort?: boolean, opts?: {
|
|
206
|
+
discard?: boolean;
|
|
207
|
+
}): Promise<void>;
|
|
202
208
|
}
|
|
203
209
|
export declare function createHostedClient(config: HostedClientConfig): HostedClient;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
import { createEvalSessionResponseSchema, createSessionResponseSchema, finalizeResponseSchema, sessionPublicSchema, submitResultResponseSchema, } from "../types/shared.js";
|
|
3
3
|
import { z } from "zod";
|
|
4
|
-
import { HostedAuthError, HostedOrchError, HostedQuotaError, } from "./errors.js";
|
|
4
|
+
import { HostedAuthError, HostedOrchError, HostedQuotaError, HostedDiscardRefusedError, } from "./errors.js";
|
|
5
5
|
// Multi-twin (M3): provenance marker for `per_twin`. A single-twin OLD cloud
|
|
6
6
|
// ships NO `per_twin` key; `createSessionResponseSchema` then SYNTHESIZES one
|
|
7
7
|
// (host-rewrites api.pome.sh→mcp.pome.sh with no `/mcp` suffix). Consumers that
|
|
@@ -98,6 +98,46 @@ class RetryableFinalizeStatusError extends HostedOrchError {
|
|
|
98
98
|
this.name = "RetryableFinalizeStatusError";
|
|
99
99
|
}
|
|
100
100
|
}
|
|
101
|
+
/** Read a 409 body as an F-983 discard refusal. Only ever called for status
|
|
102
|
+
* 409 — a non-409 that happens to echo `details.reason` is a server error,
|
|
103
|
+
* not a refusal, and must keep its own status-based handling. */
|
|
104
|
+
async function readDiscardRefusal(res) {
|
|
105
|
+
let body;
|
|
106
|
+
try {
|
|
107
|
+
body = await res.clone().json();
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
return { kind: "none" };
|
|
111
|
+
}
|
|
112
|
+
const error = body?.error;
|
|
113
|
+
const details = error?.details;
|
|
114
|
+
if (!details || details.reason !== "ungraded_session")
|
|
115
|
+
return { kind: "none" };
|
|
116
|
+
const discardToken = details.discard_token;
|
|
117
|
+
if (typeof discardToken !== "string" || discardToken.length === 0) {
|
|
118
|
+
return { kind: "unusable" };
|
|
119
|
+
}
|
|
120
|
+
return {
|
|
121
|
+
kind: "refusal",
|
|
122
|
+
refusal: {
|
|
123
|
+
message: typeof error?.message === "string" ? error.message : "",
|
|
124
|
+
sessionId: typeof details.session_id === "string" ? details.session_id : "",
|
|
125
|
+
state: typeof details.state === "string" ? details.state : "open",
|
|
126
|
+
taskName: typeof details.task_name === "string" ? details.task_name : null,
|
|
127
|
+
openSeconds: typeof details.open_seconds === "number" ? details.open_seconds : 0,
|
|
128
|
+
discardToken,
|
|
129
|
+
},
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
/** The delete was refused but the refusal is unreplayable. Say plainly that
|
|
133
|
+
* the session is still running: a best-effort caller would otherwise read
|
|
134
|
+
* silence as success. NOT HostedDiscardRefusedError — with no token to
|
|
135
|
+
* replay, that type would be a lie. */
|
|
136
|
+
function unusableRefusalError(sessionId) {
|
|
137
|
+
return new HostedOrchError(`DELETE /v1/sessions/${sessionId} → 409: the server refused to delete this ` +
|
|
138
|
+
`session but sent no usable discard_token, so the session was NOT ` +
|
|
139
|
+
`stopped. Retry, or stop it from the dashboard.`, undefined, 409);
|
|
140
|
+
}
|
|
101
141
|
export function createHostedClient(config) {
|
|
102
142
|
const timeoutMs = config.timeoutMs ?? 30_000;
|
|
103
143
|
const finalizeTimeoutMs = config.finalizeTimeoutMs ?? 5 * 60_000;
|
|
@@ -590,33 +630,75 @@ export function createHostedClient(config) {
|
|
|
590
630
|
state_final_json_b64: Buffer.from(input.stateFinalJson, "utf8").toString("base64"),
|
|
591
631
|
}, (raw) => submitResultResponseSchema.parse(raw));
|
|
592
632
|
},
|
|
593
|
-
async deleteSession(sessionId, bestEffort = true) {
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
633
|
+
async deleteSession(sessionId, bestEffort = true, opts = {}) {
|
|
634
|
+
// One DELETE attempt, including the read of a 409 body. `confirmDiscard`
|
|
635
|
+
// replays the token the control plane hands back with an F-983 refusal.
|
|
636
|
+
const attempt = async (confirmDiscard) => {
|
|
637
|
+
const ctrl = new AbortController();
|
|
638
|
+
const timer = setTimeout(() => ctrl.abort(), timeoutMs);
|
|
639
|
+
const qs = confirmDiscard
|
|
640
|
+
? `?confirm_discard=${encodeURIComponent(confirmDiscard)}`
|
|
641
|
+
: "";
|
|
642
|
+
try {
|
|
643
|
+
const res = await fetch(`${config.baseUrl}/v1/sessions/${encodeURIComponent(sessionId)}${qs}`, {
|
|
644
|
+
method: "DELETE",
|
|
645
|
+
// authHeaders, not a hardcoded x-api-key: demo teardown carries a
|
|
646
|
+
// bearer demo_token (FDRS-643 live-run finding — the hardcoded
|
|
647
|
+
// header made every demo DELETE an opaque 404, silently swallowed
|
|
648
|
+
// by best-effort).
|
|
649
|
+
headers: authHeaders,
|
|
650
|
+
signal: ctrl.signal,
|
|
651
|
+
});
|
|
652
|
+
// Keep the timeout active while consuming a 409 body — fetch()
|
|
653
|
+
// resolves after headers, before the body finishes (same hazard,
|
|
654
|
+
// same fix, as postJson's readResponse above).
|
|
655
|
+
const read = res.status === 409
|
|
656
|
+
? await readDiscardRefusal(res)
|
|
657
|
+
: { kind: "none" };
|
|
658
|
+
return { res, read };
|
|
659
|
+
}
|
|
660
|
+
catch (err) {
|
|
661
|
+
if (bestEffort)
|
|
662
|
+
return null;
|
|
663
|
+
throw new HostedOrchError(err instanceof Error ? err.message : "network error");
|
|
664
|
+
}
|
|
665
|
+
finally {
|
|
666
|
+
clearTimeout(timer);
|
|
667
|
+
}
|
|
668
|
+
};
|
|
669
|
+
let first = await attempt();
|
|
670
|
+
if (!first)
|
|
671
|
+
return; // bestEffort transport failure
|
|
672
|
+
let res = first.res;
|
|
673
|
+
// F-983: a 409 carrying reason=ungraded_session is a REFUSAL, not the
|
|
674
|
+
// already-closed race. Never fold it into the idempotent-success branch
|
|
675
|
+
// below — that swallow is exactly what made the CLI lie about stopping.
|
|
676
|
+
// Scoped to 409: a 5xx that echoes the same `details` is a server
|
|
677
|
+
// error and keeps its status-based handling.
|
|
678
|
+
if (first.read.kind === "unusable")
|
|
679
|
+
throw unusableRefusalError(sessionId);
|
|
680
|
+
if (first.read.kind === "refusal") {
|
|
681
|
+
const { refusal } = first.read;
|
|
682
|
+
if (!opts.discard) {
|
|
683
|
+
throw new HostedDiscardRefusedError(refusal.message, refusal.sessionId || sessionId, refusal.state, refusal.taskName, refusal.openSeconds, refusal.discardToken);
|
|
684
|
+
}
|
|
685
|
+
const confirmed = await attempt(refusal.discardToken);
|
|
686
|
+
if (!confirmed)
|
|
610
687
|
return;
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
688
|
+
res = confirmed.res;
|
|
689
|
+
// No third attempt either way: the token was already spent.
|
|
690
|
+
if (confirmed.read.kind === "unusable") {
|
|
691
|
+
throw unusableRefusalError(sessionId);
|
|
692
|
+
}
|
|
693
|
+
if (confirmed.read.kind === "refusal") {
|
|
694
|
+
const stillRefused = confirmed.read.refusal;
|
|
695
|
+
throw new HostedDiscardRefusedError(stillRefused.message, stillRefused.sessionId || sessionId, stillRefused.state, stillRefused.taskName, stillRefused.openSeconds, stillRefused.discardToken);
|
|
696
|
+
}
|
|
615
697
|
}
|
|
616
698
|
// Cloud spec (pome-cloud docs/05-api-spec.md): 204 on success. Accept
|
|
617
|
-
// 200 too in case a future control-plane returns a body. 409
|
|
618
|
-
// best-effort teardown idempotent when a
|
|
619
|
-
// closed the row.
|
|
699
|
+
// 200 too in case a future control-plane returns a body. A 409 that is
|
|
700
|
+
// NOT an F-983 refusal keeps best-effort teardown idempotent when a
|
|
701
|
+
// concurrent reaper already closed the row.
|
|
620
702
|
if (res.status === 204 || res.status === 200 || res.status === 409)
|
|
621
703
|
return;
|
|
622
704
|
if (res.status === 404) {
|
|
@@ -627,7 +709,7 @@ export function createHostedClient(config) {
|
|
|
627
709
|
if (res.status === 401 || res.status === 403) {
|
|
628
710
|
throw new HostedAuthError(`DELETE /v1/sessions/${sessionId} → ${res.status}`);
|
|
629
711
|
}
|
|
630
|
-
//
|
|
712
|
+
// 5xx — thrown, but caller can swallow if mid-teardown.
|
|
631
713
|
throw new HostedOrchError(`DELETE /v1/sessions/${sessionId} → ${res.status}`);
|
|
632
714
|
},
|
|
633
715
|
};
|
|
@@ -43,4 +43,18 @@ export declare class HostedTrialError extends Error {
|
|
|
43
43
|
readonly errorCode: string;
|
|
44
44
|
constructor(message: string, errorCode: string);
|
|
45
45
|
}
|
|
46
|
+
/** F-983 — `DELETE /v1/sessions/:id` refused to destroy a session whose run
|
|
47
|
+
* has not been graded. Pome creates the `runs` row at finalize, so an open
|
|
48
|
+
* session holds an ungraded run and deleting it discards the evidence. The
|
|
49
|
+
* control plane issues `discardToken`; replaying it confirms the discard.
|
|
50
|
+
* Deliberately NOT swallowed by `bestEffort` — that flag covers transport
|
|
51
|
+
* noise and already-closed races, not a deliberate server refusal. */
|
|
52
|
+
export declare class HostedDiscardRefusedError extends Error {
|
|
53
|
+
readonly sessionId: string;
|
|
54
|
+
readonly state: string;
|
|
55
|
+
readonly taskName: string | null;
|
|
56
|
+
readonly openSeconds: number;
|
|
57
|
+
readonly discardToken: string;
|
|
58
|
+
constructor(message: string, sessionId: string, state: string, taskName: string | null, openSeconds: number, discardToken: string);
|
|
59
|
+
}
|
|
46
60
|
export declare function exitCodeFor(err: unknown): number;
|
|
@@ -87,6 +87,28 @@ export class HostedTrialError extends Error {
|
|
|
87
87
|
this.name = "HostedTrialError";
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
|
+
/** F-983 — `DELETE /v1/sessions/:id` refused to destroy a session whose run
|
|
91
|
+
* has not been graded. Pome creates the `runs` row at finalize, so an open
|
|
92
|
+
* session holds an ungraded run and deleting it discards the evidence. The
|
|
93
|
+
* control plane issues `discardToken`; replaying it confirms the discard.
|
|
94
|
+
* Deliberately NOT swallowed by `bestEffort` — that flag covers transport
|
|
95
|
+
* noise and already-closed races, not a deliberate server refusal. */
|
|
96
|
+
export class HostedDiscardRefusedError extends Error {
|
|
97
|
+
sessionId;
|
|
98
|
+
state;
|
|
99
|
+
taskName;
|
|
100
|
+
openSeconds;
|
|
101
|
+
discardToken;
|
|
102
|
+
constructor(message, sessionId, state, taskName, openSeconds, discardToken) {
|
|
103
|
+
super(message);
|
|
104
|
+
this.sessionId = sessionId;
|
|
105
|
+
this.state = state;
|
|
106
|
+
this.taskName = taskName;
|
|
107
|
+
this.openSeconds = openSeconds;
|
|
108
|
+
this.discardToken = discardToken;
|
|
109
|
+
this.name = "HostedDiscardRefusedError";
|
|
110
|
+
}
|
|
111
|
+
}
|
|
90
112
|
export function exitCodeFor(err) {
|
|
91
113
|
if (err instanceof HostedAuthError)
|
|
92
114
|
return 3;
|