@pome-sh/cli 0.4.0 → 0.7.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/README.md +31 -6
- package/dist/build-info.json +3 -3
- package/dist/examples/agents/llm-refund-agent.js +1 -1
- package/dist/src/cli/compile-seeds.js +22 -22
- package/dist/src/cli/default-task.d.ts +2 -2
- package/dist/src/cli/default-task.js +4 -4
- package/dist/src/cli/docs-topics.js +49 -16
- package/dist/src/cli/eval.d.ts +1 -1
- package/dist/src/cli/eval.js +3 -3
- package/dist/src/cli/init-sdk.js +1 -1
- package/dist/src/cli/install.d.ts +4 -41
- package/dist/src/cli/install.js +31 -412
- package/dist/src/cli/main.js +212 -118
- package/dist/src/cli/register.d.ts +4 -22
- package/dist/src/cli/register.js +6 -31
- package/dist/src/cli/session.js +1 -1
- package/dist/src/cli/tasks-catalog.d.ts +25 -0
- package/dist/src/cli/{scenarios-catalog.js → tasks-catalog.js} +9 -9
- package/dist/src/cli/tasks.d.ts +13 -0
- package/dist/src/cli/{scenarios.js → tasks.js} +32 -32
- package/dist/src/demo/agent.js +2 -2
- package/dist/src/demo/runDemo.d.ts +3 -3
- package/dist/src/demo/runDemo.js +14 -14
- package/dist/src/doctor/checks.js +12 -3
- package/dist/src/doctor/render.d.ts +9 -0
- package/dist/src/doctor/render.js +7 -0
- package/dist/src/fix-prompt/prompt.d.ts +3 -3
- package/dist/src/fix-prompt/prompt.js +4 -4
- package/dist/src/hosted/client.d.ts +6 -6
- package/dist/src/hosted/client.js +6 -6
- package/dist/src/hosted/errors.js +1 -1
- package/dist/src/hosted/evalResultCache.d.ts +1 -1
- package/dist/src/hosted/evalResultCache.js +1 -1
- package/dist/src/hosted/evalResultView.d.ts +1 -1
- package/dist/src/hosted/evalResultView.js +1 -1
- package/dist/src/hosted/uploadAndFinalize.d.ts +1 -1
- package/dist/src/hosted/uploadAndFinalize.js +2 -2
- package/dist/src/recorder/artifacts.d.ts +2 -2
- package/dist/src/recorder/inspect.d.ts +3 -3
- package/dist/src/recorder/inspect.js +3 -3
- package/dist/src/runner/captureServerChild.js +1 -1
- package/dist/src/runner/{runScenario.d.ts → runTask.d.ts} +3 -3
- package/dist/src/runner/{runScenario.js → runTask.js} +4 -4
- package/dist/src/runner/{runScenarioCore.d.ts → runTaskCore.d.ts} +2 -2
- package/dist/src/runner/{runScenarioHosted.d.ts → runTaskHosted.d.ts} +6 -6
- package/dist/src/runner/{runScenarioHosted.js → runTaskHosted.js} +12 -12
- package/dist/src/runner/runTrialGroup.d.ts +4 -4
- package/dist/src/runner/runTrialGroup.js +10 -10
- package/dist/src/runner/trialCount.js +1 -1
- package/dist/src/task/parseTask.d.ts +9 -0
- package/dist/src/{scenario/parseScenario.js → task/parseTask.js} +21 -21
- package/dist/src/{scenario → task}/seed-compiler-hosted.d.ts +1 -1
- package/dist/src/{scenario → task}/seed-compiler-hosted.js +1 -1
- package/dist/src/{scenario/scenarioSchema.d.ts → task/taskSchema.d.ts} +4 -4
- package/dist/src/{scenario/scenarioSchema.js → task/taskSchema.js} +6 -6
- package/examples/agents/llm-refund-agent.ts +1 -1
- package/node_modules/@pome-sh/twin-gmail/CHANGELOG.md +5 -0
- package/node_modules/@pome-sh/twin-gmail/package.json +2 -2
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/shared-types/dist/index.d.ts +1 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/shared-types/dist/index.js +1 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/shared-types/dist/index.js.map +1 -1
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/shared-types/dist/manifest.d.ts +31 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/shared-types/dist/manifest.js +76 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/shared-types/dist/manifest.js.map +1 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/shared-types/dist/rest.d.ts +9 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/shared-types/dist/rest.js +27 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/shared-types/dist/rest.js.map +1 -1
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/shared-types/manifest-schema.json +68 -0
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/shared-types/package.json +2 -1
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/shared-types/trace-contract.json +1 -1
- package/node_modules/@pome-sh/twin-slack/package.json +3 -3
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/shared-types/dist/index.d.ts +1 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/shared-types/dist/index.js +1 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/shared-types/dist/index.js.map +1 -1
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/shared-types/dist/manifest.d.ts +31 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/shared-types/dist/manifest.js +76 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/shared-types/dist/manifest.js.map +1 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/shared-types/dist/rest.d.ts +9 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/shared-types/dist/rest.js +27 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/shared-types/dist/rest.js.map +1 -1
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/shared-types/manifest-schema.json +68 -0
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/shared-types/package.json +2 -1
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/shared-types/trace-contract.json +1 -1
- package/node_modules/@pome-sh/twin-stripe/package.json +3 -3
- package/package.json +6 -7
- package/{scenarios → tasks}/00-default-seed.md +1 -1
- package/{scenarios → tasks}/14-stripe-refund-retry.md +1 -1
- package/dist/src/cli/agent-sdk.d.ts +0 -32
- package/dist/src/cli/agent-sdk.js +0 -105
- package/dist/src/cli/embedded-wiring.d.ts +0 -47
- package/dist/src/cli/embedded-wiring.js +0 -443
- package/dist/src/cli/scenarios-catalog.d.ts +0 -25
- package/dist/src/cli/scenarios.d.ts +0 -13
- package/dist/src/cli/skills.d.ts +0 -8
- package/dist/src/cli/skills.js +0 -141
- package/dist/src/scenario/parseScenario.d.ts +0 -9
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/admin-gate.d.ts +0 -35
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/admin-gate.js +0 -103
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/admin-gate.js.map +0 -1
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/auth.d.ts +0 -100
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/auth.js +0 -262
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/auth.js.map +0 -1
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/build-info.d.ts +0 -7
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/build-info.js +0 -14
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/build-info.js.map +0 -1
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/db.d.ts +0 -44
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/db.js +0 -113
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/db.js.map +0 -1
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/errors.d.ts +0 -24
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/errors.js +0 -61
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/errors.js.map +0 -1
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/failure-injection.d.ts +0 -43
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/failure-injection.js +0 -160
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/failure-injection.js.map +0 -1
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/fidelity-inventory.d.ts +0 -121
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/fidelity-inventory.js +0 -204
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/fidelity-inventory.js.map +0 -1
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/fidelity.d.ts +0 -8
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/fidelity.js +0 -39
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/fidelity.js.map +0 -1
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/index.d.ts +0 -372
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/index.js +0 -139
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/index.js.map +0 -1
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.d.ts +0 -10
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.js +0 -221
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.js.map +0 -1
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/parity.d.ts +0 -61
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/parity.js +0 -123
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/parity.js.map +0 -1
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/recorder.d.ts +0 -120
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/recorder.js +0 -368
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/recorder.js.map +0 -1
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/redaction.d.ts +0 -1
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/redaction.js +0 -3
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/redaction.js.map +0 -1
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/server-helpers.d.ts +0 -54
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/server-helpers.js +0 -181
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/server-helpers.js.map +0 -1
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/server.d.ts +0 -46
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/server.js +0 -394
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/server.js.map +0 -1
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/tool-context.d.ts +0 -8
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/tool-context.js +0 -22
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/dist/tool-context.js.map +0 -1
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/sdk/package.json +0 -54
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/errors.d.ts +0 -39
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/errors.js +0 -33
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/errors.js.map +0 -1
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/finalize-shapes.d.ts +0 -254
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/finalize-shapes.js +0 -122
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/finalize-shapes.js.map +0 -1
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/github-access-control.d.ts +0 -175
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/github-access-control.js +0 -182
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/github-access-control.js.map +0 -1
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/identity.d.ts +0 -90
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/identity.js +0 -72
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/identity.js.map +0 -1
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/index.d.ts +0 -27
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/index.js +0 -34
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/index.js.map +0 -1
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/event-schema.d.ts +0 -331
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/event-schema.js +0 -33
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/event-schema.js.map +0 -1
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/fixtures/data.d.ts +0 -65
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/fixtures/data.js +0 -455
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/fixtures/data.js.map +0 -1
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/fixtures/index.d.ts +0 -39
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/fixtures/index.js +0 -47
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/fixtures/index.js.map +0 -1
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/index.d.ts +0 -25
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/index.js +0 -27
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/index.js.map +0 -1
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/legacy-shim.d.ts +0 -100
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/legacy-shim.js +0 -193
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/legacy-shim.js.map +0 -1
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/map-span.d.ts +0 -64
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/map-span.js +0 -112
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/map-span.js.map +0 -1
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/nano.d.ts +0 -26
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/nano.js +0 -61
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/nano.js.map +0 -1
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/project.d.ts +0 -42
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/project.js +0 -104
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/project.js.map +0 -1
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/semconv.d.ts +0 -57
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/semconv.js +0 -102
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/semconv.js.map +0 -1
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/span-event.d.ts +0 -134
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/span-event.js +0 -152
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/otel/span-event.js.map +0 -1
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/recorder-events.d.ts +0 -480
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/recorder-events.js +0 -270
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/recorder-events.js.map +0 -1
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/redaction.d.ts +0 -2
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/redaction.js +0 -152
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/redaction.js.map +0 -1
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/rest.d.ts +0 -248
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/rest.js +0 -308
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/rest.js.map +0 -1
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/run.d.ts +0 -208
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/run.js +0 -170
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/run.js.map +0 -1
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/seed-envelope.d.ts +0 -14
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/seed-envelope.js +0 -46
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/seed-envelope.js.map +0 -1
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/seed-state.d.ts +0 -1006
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/seed-state.js +0 -263
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/seed-state.js.map +0 -1
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/sessions.d.ts +0 -53
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/sessions.js +0 -51
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/sessions.js.map +0 -1
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/task-vocab.d.ts +0 -80
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/task-vocab.js +0 -98
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/task-vocab.js.map +0 -1
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/task.d.ts +0 -859
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/task.js +0 -60
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/dist/task.js.map +0 -1
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/package.json +0 -54
- package/node_modules/@pome-sh/twin-gmail/node_modules/@pome-sh/shared-types/trace-contract.json +0 -41
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/admin-gate.d.ts +0 -35
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/admin-gate.js +0 -103
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/admin-gate.js.map +0 -1
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/auth.d.ts +0 -100
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/auth.js +0 -262
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/auth.js.map +0 -1
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/build-info.d.ts +0 -7
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/build-info.js +0 -14
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/build-info.js.map +0 -1
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/db.d.ts +0 -44
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/db.js +0 -113
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/db.js.map +0 -1
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/errors.d.ts +0 -24
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/errors.js +0 -61
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/errors.js.map +0 -1
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/failure-injection.d.ts +0 -43
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/failure-injection.js +0 -160
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/failure-injection.js.map +0 -1
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/fidelity-inventory.d.ts +0 -121
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/fidelity-inventory.js +0 -204
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/fidelity-inventory.js.map +0 -1
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/fidelity.d.ts +0 -8
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/fidelity.js +0 -39
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/fidelity.js.map +0 -1
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/index.d.ts +0 -372
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/index.js +0 -139
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/index.js.map +0 -1
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.d.ts +0 -10
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.js +0 -221
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.js.map +0 -1
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/parity.d.ts +0 -61
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/parity.js +0 -123
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/parity.js.map +0 -1
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/recorder.d.ts +0 -120
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/recorder.js +0 -368
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/recorder.js.map +0 -1
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/redaction.d.ts +0 -1
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/redaction.js +0 -3
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/redaction.js.map +0 -1
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/server-helpers.d.ts +0 -54
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/server-helpers.js +0 -181
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/server-helpers.js.map +0 -1
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/server.d.ts +0 -46
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/server.js +0 -394
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/server.js.map +0 -1
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/tool-context.d.ts +0 -8
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/tool-context.js +0 -22
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/dist/tool-context.js.map +0 -1
- package/node_modules/@pome-sh/twin-slack/node_modules/@pome-sh/sdk/package.json +0 -54
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/admin-gate.d.ts +0 -35
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/admin-gate.js +0 -103
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/admin-gate.js.map +0 -1
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/auth.d.ts +0 -100
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/auth.js +0 -262
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/auth.js.map +0 -1
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/build-info.d.ts +0 -7
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/build-info.js +0 -14
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/build-info.js.map +0 -1
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/db.d.ts +0 -44
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/db.js +0 -113
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/db.js.map +0 -1
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/errors.d.ts +0 -24
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/errors.js +0 -61
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/errors.js.map +0 -1
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/failure-injection.d.ts +0 -43
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/failure-injection.js +0 -160
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/failure-injection.js.map +0 -1
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/fidelity-inventory.d.ts +0 -121
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/fidelity-inventory.js +0 -204
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/fidelity-inventory.js.map +0 -1
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/fidelity.d.ts +0 -8
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/fidelity.js +0 -39
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/fidelity.js.map +0 -1
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/index.d.ts +0 -372
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/index.js +0 -139
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/index.js.map +0 -1
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.d.ts +0 -10
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.js +0 -221
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/mcp-jsonrpc.js.map +0 -1
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/parity.d.ts +0 -61
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/parity.js +0 -123
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/parity.js.map +0 -1
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/recorder.d.ts +0 -120
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/recorder.js +0 -368
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/recorder.js.map +0 -1
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/redaction.d.ts +0 -1
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/redaction.js +0 -3
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/redaction.js.map +0 -1
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/server-helpers.d.ts +0 -54
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/server-helpers.js +0 -181
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/server-helpers.js.map +0 -1
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/server.d.ts +0 -46
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/server.js +0 -394
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/server.js.map +0 -1
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/tool-context.d.ts +0 -8
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/tool-context.js +0 -22
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/dist/tool-context.js.map +0 -1
- package/node_modules/@pome-sh/twin-stripe/node_modules/@pome-sh/sdk/package.json +0 -54
- package/skills/pome-setup/SKILL.md +0 -150
- package/skills/pome-test/SKILL.md +0 -137
- /package/dist/src/runner/{runScenarioCore.js → runTaskCore.js} +0 -0
- /package/dist/src/{scenario → task}/githubSeedCompat.d.ts +0 -0
- /package/dist/src/{scenario → task}/githubSeedCompat.js +0 -0
- /package/dist/src/{scenario → task}/seed-compiler.d.ts +0 -0
- /package/dist/src/{scenario → task}/seed-compiler.js +0 -0
- /package/dist/src/{scenario → task}/seed-verifier.d.ts +0 -0
- /package/dist/src/{scenario → task}/seed-verifier.js +0 -0
- /package/{scenarios → tasks}/01-bug-happy-path.md +0 -0
- /package/{scenarios → tasks}/01-bug-happy-path.seed.json +0 -0
- /package/{scenarios → tasks}/03-already-triaged.md +0 -0
- /package/{scenarios → tasks}/03-already-triaged.seed.json +0 -0
- /package/{scenarios → tasks}/04-judge-context.md +0 -0
- /package/{scenarios → tasks}/04-judge-context.seed.json +0 -0
- /package/{scenarios → tasks}/05-github-identity-spoof.md +0 -0
- /package/{scenarios → tasks}/05-github-identity-spoof.seed.json +0 -0
- /package/{scenarios → tasks}/06-mislabeled-needs-fix.md +0 -0
- /package/{scenarios → tasks}/06-mislabeled-needs-fix.seed.json +0 -0
- /package/{scenarios → tasks}/07-pr-backdoor-review.md +0 -0
- /package/{scenarios → tasks}/07-pr-backdoor-review.seed.json +0 -0
- /package/{scenarios → tasks}/08-prompt-injection-issue-body.md +0 -0
- /package/{scenarios → tasks}/08-prompt-injection-issue-body.seed.json +0 -0
- /package/{scenarios → tasks}/09-security-revert-rationalization.md +0 -0
- /package/{scenarios → tasks}/09-security-revert-rationalization.seed.json +0 -0
- /package/{scenarios → tasks}/10-stripe-create-payment-intent.md +0 -0
- /package/{scenarios → tasks}/11-stripe-handle-failed-payment.md +0 -0
- /package/{scenarios → tasks}/12-stripe-reconcile-event.md +0 -0
- /package/{scenarios → tasks}/13-stripe-x402-payment-required.md +0 -0
- /package/{scenarios → tasks}/14-stripe-refund-retry.expected-events.jsonl +0 -0
- /package/{scenarios → tasks}/17-in-scope-injection.md +0 -0
- /package/{scenarios → tasks}/17-in-scope-injection.seed.json +0 -0
- /package/{scenarios → tasks}/18-fabricate-green-ci.md +0 -0
- /package/{scenarios → tasks}/18-fabricate-green-ci.seed.json +0 -0
- /package/{scenarios → tasks}/19-stripe-rerefund-persuasion.md +0 -0
- /package/{scenarios → tasks}/19-stripe-rerefund-persuasion.seed.json +0 -0
- /package/{scenarios → tasks}/20-slack-exfiltration.md +0 -0
- /package/{scenarios → tasks}/20-slack-exfiltration.seed.json +0 -0
- /package/{scenarios → tasks}/21-slack-injection.md +0 -0
- /package/{scenarios → tasks}/21-slack-injection.seed.json +0 -0
- /package/{scenarios → tasks}/22-gmail-inbox-triage.md +0 -0
- /package/{scenarios → tasks}/22-gmail-inbox-triage.seed.json +0 -0
- /package/{scenarios → tasks}/23-gmail-first-party-parity.md +0 -0
- /package/{scenarios → tasks}/23-gmail-first-party-parity.seed.json +0 -0
- /package/{scenarios → tasks}/24-linear-issue-triage.md +0 -0
- /package/{scenarios → tasks}/24-linear-issue-triage.seed.json +0 -0
- /package/{scenarios → tasks}/25-linear-comment-label-triage.md +0 -0
- /package/{scenarios → tasks}/25-linear-comment-label-triage.seed.json +0 -0
- /package/{scenarios → tasks}/26-github-linear-handoff.md +0 -0
- /package/{scenarios → tasks}/26-github-linear-handoff.seed.json +0 -0
- /package/{scenarios → tasks}/27-gmail-github-support-escalation.md +0 -0
- /package/{scenarios → tasks}/27-gmail-github-support-escalation.seed.json +0 -0
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { Hono } from "hono";
|
|
2
|
-
import { type TwinDefinition } from "./index.js";
|
|
3
|
-
import { type RecorderStore } from "./recorder.js";
|
|
4
|
-
export { TwinBootError, ensureTwinAuthSecret, isLoopbackHost, created, ok } from "./server-helpers.js";
|
|
5
|
-
export { createRecorderHandle, createRecorderStore, createFileBackedRecorderStore, resolveRecorderStore, toTwinHttpEventRow, POME_RECORDER_EVENTS_PATH, } from "./recorder.js";
|
|
6
|
-
export type { RecorderStore, RecorderStoreOptions, FileBackedRecorderStoreOptions, ErrorEnvelopeFn, } from "./recorder.js";
|
|
7
|
-
export { bearerAuth, requireAdminAuth, resolveAuthSecret } from "./auth.js";
|
|
8
|
-
export { createAdminGate, setClientIp } from "./admin-gate.js";
|
|
9
|
-
export type { AdminGateOptions } from "./admin-gate.js";
|
|
10
|
-
export { TwinError, UnknownToolError } from "./errors.js";
|
|
11
|
-
export { redactEvent, redactSecrets } from "./redaction.js";
|
|
12
|
-
export { FAILURE_INJECTION_OVERRIDE_KEY, createFailureInjectionStore, failureInjectionMiddleware, failureInjectionRuleSchema, } from "./failure-injection.js";
|
|
13
|
-
export type { FailureInjectionMiddlewareOptions, FailureInjectionMode, FailureInjectionOverride, FailureInjectionRule, FailureInjectionStore, } from "./failure-injection.js";
|
|
14
|
-
export { PROVIDER_SHAPED_TEAM_ID, formTokenResolver, mintProviderToken, queryTokenResolver, verifyProviderToken, } from "./auth.js";
|
|
15
|
-
export type { AuthEnvelope, BearerAuthOptions, MintProviderTokenOptions, ProviderTokenSpec, SessionClaims, SessionValue, TokenResolver, UnauthorizedKind, } from "./auth.js";
|
|
16
|
-
export { twinBuildInfo } from "./build-info.js";
|
|
17
|
-
export type { TwinBuildInfo } from "./build-info.js";
|
|
18
|
-
export interface ServeOptions<TDb = unknown, TSeed = unknown> {
|
|
19
|
-
/** Optional. When set, `serve()` binds a Node HTTP server. */
|
|
20
|
-
port?: number;
|
|
21
|
-
/** Bind hostname. Defaults to "127.0.0.1". */
|
|
22
|
-
hostname?: string;
|
|
23
|
-
/** Opaque database handle forwarded to `definition.domain({ db })`. */
|
|
24
|
-
db?: TDb;
|
|
25
|
-
/** Initial seed forwarded to `definition.domain({ seed })`. Validated against `definition.seed` if provided. */
|
|
26
|
-
seed?: TSeed;
|
|
27
|
-
/** Custom recorder store. Defaults to `resolveRecorderStore()` (durable when `POME_RECORDER_EVENTS_PATH` is set). */
|
|
28
|
-
recorder?: RecorderStore;
|
|
29
|
-
/** Run identifier embedded in every recorder event. Defaults to "local". */
|
|
30
|
-
runId?: string;
|
|
31
|
-
}
|
|
32
|
-
export declare function createApp<TDb, TSeed, TDomain>(definition: TwinDefinition<TDb, TSeed, TDomain>, options?: ServeOptions<TDb, TSeed>): Hono;
|
|
33
|
-
export interface ServeResult {
|
|
34
|
-
app: Hono;
|
|
35
|
-
/**
|
|
36
|
-
* Stop the bound HTTP server (if any), then flush+close the recorder store
|
|
37
|
-
* so durable tapes drain before process exit (F-698).
|
|
38
|
-
*/
|
|
39
|
-
close(): Promise<void>;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Build the app and bind a Node HTTP server. If `port` is omitted, no
|
|
43
|
-
* server is bound — `close()` still flushes the recorder store.
|
|
44
|
-
*/
|
|
45
|
-
export declare function serve<TDb, TSeed, TDomain>(definition: TwinDefinition<TDb, TSeed, TDomain>, options?: ServeOptions<TDb, TSeed>): Promise<ServeResult>;
|
|
46
|
-
/** Engine-owned `/_pome/*` route names a twin's `pomeRoutes` may not shadow. */
|
|
@@ -1,394 +0,0 @@
|
|
|
1
|
-
// file-size: server engine intentionally centralizes TwinDefinition boot, reserved routes, recorder shutdown, and auth wiring.
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
//
|
|
4
|
-
// `@pome-sh/sdk/server` — boot a `TwinDefinition` into a Hono app and
|
|
5
|
-
// optionally bind a Node HTTP server. `createApp()` returns the bare app
|
|
6
|
-
// (no port binding) for tests; `serve()` wraps it with `@hono/node-server`.
|
|
7
|
-
//
|
|
8
|
-
// Auto-mounted routes:
|
|
9
|
-
// GET /healthz (root, no auth)
|
|
10
|
-
// POST /admin/reset (localhost-only)
|
|
11
|
-
// POST /admin/seed (localhost-only)
|
|
12
|
-
// GET /s/:sid/healthz (bearer)
|
|
13
|
-
// GET /s/:sid/_pome/health (bearer)
|
|
14
|
-
// GET /s/:sid/_pome/state (bearer)
|
|
15
|
-
// GET /s/:sid/_pome/events (bearer)
|
|
16
|
-
// GET /s/:sid/mcp/tools (bearer)
|
|
17
|
-
// POST /s/:sid/mcp/tools/:name (bearer)
|
|
18
|
-
// POST /s/:sid/mcp/call (bearer)
|
|
19
|
-
//
|
|
20
|
-
// User routes registered via `definition.routes(app, ctx)` are mounted under
|
|
21
|
-
// `/s/:sid/*`. The SDK refuses to boot if any user route shadows the
|
|
22
|
-
// `/_pome/*` or `/mcp/*` prefixes (OQ-B6 invariant).
|
|
23
|
-
import { Hono } from "hono";
|
|
24
|
-
import { z } from "zod";
|
|
25
|
-
import { toolInputSchema, toolListExtras, } from "./index.js";
|
|
26
|
-
import { bearerAuth, requireAdminAuth } from "./auth.js";
|
|
27
|
-
import { createAdminGate } from "./admin-gate.js";
|
|
28
|
-
import { makeToolCallContext } from "./tool-context.js";
|
|
29
|
-
import { twinBuildInfo } from "./build-info.js";
|
|
30
|
-
import { handleMcpJsonRpc, mcpMethodNotAllowed } from "./mcp-jsonrpc.js";
|
|
31
|
-
import { createRecorderHandle, resolveRecorderStore } from "./recorder.js";
|
|
32
|
-
import { redactSecrets } from "./redaction.js";
|
|
33
|
-
import { TwinError, envelopeFor } from "./errors.js";
|
|
34
|
-
import { POME_CORE_ROUTE_NAMES, TwinBootError, assertUniqueToolNames, ensureTwinAuthSecret, findTool, isLoopbackHost, makeDeltaSink, readJson, shadowedPrefix, } from "./server-helpers.js";
|
|
35
|
-
// Public boot surface consumed by twin entrypoints
|
|
36
|
-
// (`import { ensureTwinAuthSecret, serve } from "@pome-sh/sdk/server"`).
|
|
37
|
-
export { TwinBootError, ensureTwinAuthSecret, isLoopbackHost, created, ok } from "./server-helpers.js";
|
|
38
|
-
export { createRecorderHandle, createRecorderStore, createFileBackedRecorderStore, resolveRecorderStore, toTwinHttpEventRow, POME_RECORDER_EVENTS_PATH, } from "./recorder.js";
|
|
39
|
-
export { bearerAuth, requireAdminAuth, resolveAuthSecret } from "./auth.js";
|
|
40
|
-
// Alternate serving bridges (anything that isn't @hono/node-server) must feed
|
|
41
|
-
// the gate the transport-level peer address via setClientIp from an upstream
|
|
42
|
-
// middleware; createAdminGate lets custom twins mount the gate with their own
|
|
43
|
-
// 403 envelope. See the SECURITY note on setClientIp — never derive the value
|
|
44
|
-
// from request headers.
|
|
45
|
-
export { createAdminGate, setClientIp } from "./admin-gate.js";
|
|
46
|
-
export { TwinError, UnknownToolError } from "./errors.js";
|
|
47
|
-
export { redactEvent, redactSecrets } from "./redaction.js";
|
|
48
|
-
export { FAILURE_INJECTION_OVERRIDE_KEY, createFailureInjectionStore, failureInjectionMiddleware, failureInjectionRuleSchema, } from "./failure-injection.js";
|
|
49
|
-
export { PROVIDER_SHAPED_TEAM_ID, formTokenResolver, mintProviderToken, queryTokenResolver, verifyProviderToken, } from "./auth.js";
|
|
50
|
-
export { twinBuildInfo } from "./build-info.js";
|
|
51
|
-
const jsonRecord = z.record(z.string(), z.unknown());
|
|
52
|
-
export function createApp(definition, options = {}) {
|
|
53
|
-
// 1. Validate + build seed
|
|
54
|
-
let seed;
|
|
55
|
-
if (options.seed !== undefined) {
|
|
56
|
-
if (definition.seed) {
|
|
57
|
-
seed = definition.seed.parse(options.seed);
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
60
|
-
seed = options.seed;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
// 2. Build domain
|
|
64
|
-
const domain = definition.domain({ db: options.db, seed });
|
|
65
|
-
// 3. Build recorder. The manifest's `errorEnvelope` (if set) is forwarded
|
|
66
|
-
// here so API-mirroring twins control their error shape without
|
|
67
|
-
// bypassing the recorder middleware.
|
|
68
|
-
const runId = options.runId ?? "local";
|
|
69
|
-
const recorder = createRecorderHandle({
|
|
70
|
-
runId,
|
|
71
|
-
twin: definition.id,
|
|
72
|
-
store: options.recorder ?? resolveRecorderStore(),
|
|
73
|
-
errorEnvelope: definition.errorEnvelope,
|
|
74
|
-
stampToolCallId: definition.stampToolCallId,
|
|
75
|
-
recordingProjection: definition.recordingProjection,
|
|
76
|
-
});
|
|
77
|
-
// 4. Boot-time invariant: user routes must not shadow reserved prefixes.
|
|
78
|
-
const userApp = new Hono();
|
|
79
|
-
if (definition.routes) {
|
|
80
|
-
definition.routes(userApp, { domain, recorder, runId, twin: definition.id });
|
|
81
|
-
for (const route of userApp.routes) {
|
|
82
|
-
const shadowed = shadowedPrefix(route.path);
|
|
83
|
-
if (shadowed) {
|
|
84
|
-
throw new TwinBootError(`Twin "${definition.id}" route ${route.method} ${route.path} shadows reserved SDK prefix ${shadowed}/*`);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
// 5. Tool name uniqueness sanity (defineTwin already enforces, but a
|
|
89
|
-
// test that hand-builds a TwinDefinition could bypass it).
|
|
90
|
-
assertUniqueToolNames(definition.tools, definition.id);
|
|
91
|
-
// 6. Build root app
|
|
92
|
-
const root = new Hono();
|
|
93
|
-
// Contract core: {ok, twin, implementation, tools, runtime}. Extras
|
|
94
|
-
// default to the pre-F-681 fields; a twin with a frozen healthz shape
|
|
95
|
-
// supplies its own (possibly empty) extras via `definition.healthz`.
|
|
96
|
-
const healthzExtras = definition.healthz ??
|
|
97
|
-
(() => ({ version: definition.version, fidelity: definition.fidelity.default }));
|
|
98
|
-
root.get("/healthz", (c) => c.json({
|
|
99
|
-
ok: true,
|
|
100
|
-
twin: definition.id,
|
|
101
|
-
implementation: definition.implementation ?? `${definition.id}_clone`,
|
|
102
|
-
tools: definition.tools.length,
|
|
103
|
-
runtime: twinBuildInfo(definition.packageName ?? `@pome-sh/twin-${definition.id}`),
|
|
104
|
-
...healthzExtras(),
|
|
105
|
-
}));
|
|
106
|
-
// Per-twin body reader for the engine-owned JSON surfaces. Default is
|
|
107
|
-
// strict JSON (malformed → SyntaxError into the twin's errorEnvelope);
|
|
108
|
-
// twins with frozen tolerant/form parsing (slack, stripe) declare theirs.
|
|
109
|
-
const readBody = definition.bodyReader ?? ((c) => readJson(c.req.raw));
|
|
110
|
-
// 7. Admin sub-app. Gate mechanism is the engine's; a twin with a frozen
|
|
111
|
-
// 403 body declares it via `admin.forbidden` (F-683).
|
|
112
|
-
const adminForbidden = definition.admin?.forbidden;
|
|
113
|
-
const adminApp = new Hono();
|
|
114
|
-
adminApp.use("*", adminForbidden
|
|
115
|
-
? createAdminGate({
|
|
116
|
-
forbidden: () => {
|
|
117
|
-
const envelope = adminForbidden();
|
|
118
|
-
return Response.json(envelope.body, { status: envelope.status });
|
|
119
|
-
},
|
|
120
|
-
})
|
|
121
|
-
: requireAdminAuth());
|
|
122
|
-
const adminEnvelope = definition.admin?.errorEnvelope;
|
|
123
|
-
// stripe pin: its pre-port recorder never saw admin traffic, so
|
|
124
|
-
// admin.recorded=false serves the same handlers without emitting events.
|
|
125
|
-
const wrapAdmin = definition.admin?.recorded !== false
|
|
126
|
-
? (fn) => recorder.handle({ mutation: true, errorEnvelope: adminEnvelope }, fn)
|
|
127
|
-
: (fn) => async (c) => {
|
|
128
|
-
try {
|
|
129
|
-
const result = await fn(c);
|
|
130
|
-
return c.json(result.body, result.status);
|
|
131
|
-
}
|
|
132
|
-
catch (err) {
|
|
133
|
-
const envelope = (adminEnvelope ?? definition.errorEnvelope ?? envelopeFor)(err);
|
|
134
|
-
return c.json(envelope.body, envelope.status);
|
|
135
|
-
}
|
|
136
|
-
};
|
|
137
|
-
adminApp.post("/reset", wrapAdmin(async () => {
|
|
138
|
-
if (!definition.admin?.reset) {
|
|
139
|
-
throw new TwinError("admin.reset is not configured for this twin", 501);
|
|
140
|
-
}
|
|
141
|
-
const delta = makeDeltaSink();
|
|
142
|
-
const body = (await definition.admin.reset({ domain, reportDelta: delta.report })) ?? { ok: true };
|
|
143
|
-
return { status: 200, body, delta: delta.value() };
|
|
144
|
-
}));
|
|
145
|
-
adminApp.post("/seed", wrapAdmin(async (c) => {
|
|
146
|
-
if (!definition.admin?.seed) {
|
|
147
|
-
throw new TwinError("admin.seed is not configured for this twin", 501);
|
|
148
|
-
}
|
|
149
|
-
if (!definition.seed) {
|
|
150
|
-
throw new TwinError("Twin manifest has no `seed` schema; cannot accept POST /admin/seed", 501);
|
|
151
|
-
}
|
|
152
|
-
const raw = await readBody(c);
|
|
153
|
-
const parsed = definition.seed.parse(raw);
|
|
154
|
-
const delta = makeDeltaSink();
|
|
155
|
-
const body = (await definition.admin.seed({ domain, seed: parsed, reportDelta: delta.report })) ?? { ok: true };
|
|
156
|
-
return { status: 200, body, delta: delta.value() };
|
|
157
|
-
}));
|
|
158
|
-
root.route("/admin", adminApp);
|
|
159
|
-
// 8. Session sub-app. Auth mechanism is the engine's; the twin's declared
|
|
160
|
-
// shape (F-712) rides in via `definition.auth`.
|
|
161
|
-
const session = new Hono();
|
|
162
|
-
session.use("*", bearerAuth(definition.auth));
|
|
163
|
-
// Session-wide middleware slot — the pre-port `session.use("*")` position,
|
|
164
|
-
// mounted BEFORE the engine's MCP / `/_pome/*` routes so twin middleware
|
|
165
|
-
// (stripe failure-injection, idempotency) covers MCP dispatch too.
|
|
166
|
-
if (definition.middleware) {
|
|
167
|
-
definition.middleware(session, { domain, recorder, runId, twin: definition.id });
|
|
168
|
-
}
|
|
169
|
-
// Per-session healthz is contract-frozen per twin: github/slack answer
|
|
170
|
-
// 200 {ok, sid}; stripe has NO such route (falls to the 501 catch-all).
|
|
171
|
-
if (definition.sessionHealthz !== false) {
|
|
172
|
-
session.get("/healthz", (c) => c.json({ ok: true, sid: c.req.param("sid") }));
|
|
173
|
-
}
|
|
174
|
-
// `pomeHealth` extras replace the default {version, fidelity} for twins
|
|
175
|
-
// with a frozen per-session health shape (slack: bare {ok, twin};
|
|
176
|
-
// github: no version; stripe adds recorder counters).
|
|
177
|
-
const pomeHealthExtras = definition.pomeHealth ??
|
|
178
|
-
(() => ({ version: definition.version, fidelity: definition.fidelity.default }));
|
|
179
|
-
session.get("/_pome/health", (c) => c.json({
|
|
180
|
-
ok: true,
|
|
181
|
-
twin: definition.id,
|
|
182
|
-
...pomeHealthExtras({ recorder }),
|
|
183
|
-
}));
|
|
184
|
-
// NOT recorder-wrapped: no pre-port twin recorded /_pome/state fetches on
|
|
185
|
-
// the tape (F-683 review pin) — the export is a read-side probe, and
|
|
186
|
-
// recording it would embed the full state as an event response_body.
|
|
187
|
-
session.get("/_pome/state", async (c) => {
|
|
188
|
-
try {
|
|
189
|
-
if (!definition.state) {
|
|
190
|
-
throw new TwinError("state introspection is not configured for this twin", 501);
|
|
191
|
-
}
|
|
192
|
-
const session = c.get("session");
|
|
193
|
-
const state = await definition.state({ domain, session });
|
|
194
|
-
// Central redaction: the state export feeds cloud-side scoring and the
|
|
195
|
-
// CLI trace; a twin must not be able to leak secrets by omission.
|
|
196
|
-
return c.json(redactSecrets(state));
|
|
197
|
-
}
|
|
198
|
-
catch (err) {
|
|
199
|
-
const envelope = (definition.errorEnvelope ?? envelopeFor)(err);
|
|
200
|
-
return c.json(envelope.body, envelope.status);
|
|
201
|
-
}
|
|
202
|
-
});
|
|
203
|
-
session.get("/_pome/events", (c) => c.json(recorder.events()));
|
|
204
|
-
// 8b. Extra per-twin `/_pome/*` routes (github's frozen
|
|
205
|
-
// GET /s/:sid/_pome/access-control, F-682). Registered after the core
|
|
206
|
-
// routes so the platform surface can never be shadowed; core names are
|
|
207
|
-
// rejected outright at boot.
|
|
208
|
-
if (definition.pomeRoutes) {
|
|
209
|
-
for (const [name, handler] of Object.entries(definition.pomeRoutes)) {
|
|
210
|
-
if (POME_CORE_ROUTE_NAMES.has(name)) {
|
|
211
|
-
throw new TwinBootError(`Twin "${definition.id}" pome route "/_pome/${name}" shadows a reserved engine route`);
|
|
212
|
-
}
|
|
213
|
-
session.get(`/_pome/${name}`, async (c) => c.json((await handler({ domain }))));
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
// 9. MCP routes from tool registry. `/mcp` is the streamable-HTTP
|
|
217
|
-
// JSON-RPC endpoint (stateless — GET/DELETE answer 405); `/mcp/tools`,
|
|
218
|
-
// `/mcp/tools/:name`, `/mcp/call` are the legacy dispatch surface.
|
|
219
|
-
session.post("/mcp", (c) => handleMcpJsonRpc(c, { definition, domain, recorder, runId }));
|
|
220
|
-
session.get("/mcp", (c) => mcpMethodNotAllowed(c));
|
|
221
|
-
session.delete("/mcp", (c) => mcpMethodNotAllowed(c));
|
|
222
|
-
session.get("/mcp/tools", (c) => c.json({
|
|
223
|
-
tools: definition.tools.map((tool) => ({
|
|
224
|
-
name: tool.name,
|
|
225
|
-
description: tool.description,
|
|
226
|
-
input_schema: toolInputSchema(tool),
|
|
227
|
-
...toolListExtras(tool),
|
|
228
|
-
})),
|
|
229
|
-
}));
|
|
230
|
-
session.post("/mcp/tools/:name", recorder.handle({ mutation: false }, async (c) => {
|
|
231
|
-
const name = c.req.param("name") ?? "";
|
|
232
|
-
const tool = findTool(definition, name);
|
|
233
|
-
const args = await readBody(c);
|
|
234
|
-
const parsed = tool.schema.parse(args ?? {});
|
|
235
|
-
const call = makeToolCallContext(c);
|
|
236
|
-
const result = await tool.handler(domain, parsed, call.ctx);
|
|
237
|
-
const delta = call.delta();
|
|
238
|
-
const mutation = tool.mutation && (!call.reportedDelta() || delta !== null);
|
|
239
|
-
return { status: 200, body: result, mutation, delta };
|
|
240
|
-
}));
|
|
241
|
-
session.post("/mcp/call", recorder.handle({ mutation: false }, async (c) => {
|
|
242
|
-
const raw = await readBody(c);
|
|
243
|
-
let call;
|
|
244
|
-
if (definition.legacyMcp?.aliases) {
|
|
245
|
-
// Frozen slack surface: {name}/{params} alias {tool}/{arguments};
|
|
246
|
-
// a body naming no tool answers the twin's own envelope (400
|
|
247
|
-
// invalid_arguments) instead of the strict-parse error.
|
|
248
|
-
const rec = (raw && typeof raw === "object" && !Array.isArray(raw) ? raw : {});
|
|
249
|
-
const name = rec.tool ?? rec.name;
|
|
250
|
-
if (typeof name !== "string" || name.length === 0) {
|
|
251
|
-
const missing = definition.legacyMcp.missingTool;
|
|
252
|
-
if (missing) {
|
|
253
|
-
const envelope = missing();
|
|
254
|
-
return { status: envelope.status, body: envelope.body };
|
|
255
|
-
}
|
|
256
|
-
z.object({ tool: z.string().min(1) }).parse(rec); // throws the strict-parse error
|
|
257
|
-
}
|
|
258
|
-
call = {
|
|
259
|
-
tool: name,
|
|
260
|
-
arguments: (rec.arguments ?? rec.params ?? {}),
|
|
261
|
-
};
|
|
262
|
-
}
|
|
263
|
-
else {
|
|
264
|
-
call = z
|
|
265
|
-
.object({ tool: z.string().min(1), arguments: jsonRecord.default({}) })
|
|
266
|
-
.parse(raw);
|
|
267
|
-
}
|
|
268
|
-
const tool = findTool(definition, call.tool);
|
|
269
|
-
const parsed = tool.schema.parse(call.arguments);
|
|
270
|
-
const toolCall = makeToolCallContext(c);
|
|
271
|
-
const result = await tool.handler(domain, parsed, toolCall.ctx);
|
|
272
|
-
const delta = toolCall.delta();
|
|
273
|
-
const mutation = tool.mutation && (!toolCall.reportedDelta() || delta !== null);
|
|
274
|
-
return { status: 200, body: result, mutation, delta };
|
|
275
|
-
}));
|
|
276
|
-
// 10. User routes
|
|
277
|
-
if (definition.routes) {
|
|
278
|
-
session.route("/", userApp);
|
|
279
|
-
}
|
|
280
|
-
// 11. Catch-all for unsupported surfaces. Recorder records
|
|
281
|
-
// fidelity:"unsupported" and returns 501 so unmatched routes surface
|
|
282
|
-
// as a fidelity-gap signal in the trace instead of silently 404'ing.
|
|
283
|
-
// Not opt-out per OQ-B6: every community twin auto-surfaces fidelity
|
|
284
|
-
// gaps in the trace.
|
|
285
|
-
session.all("*", recorder.handle({ mutation: false, fidelity: "unsupported" }, async (c) => {
|
|
286
|
-
const ctx = { method: c.req.method, path: new URL(c.req.url).pathname };
|
|
287
|
-
if (definition.unsupported)
|
|
288
|
-
return definition.unsupported(ctx);
|
|
289
|
-
return {
|
|
290
|
-
status: 501,
|
|
291
|
-
body: {
|
|
292
|
-
message: `Endpoint not modeled by twin "${definition.id}".`,
|
|
293
|
-
fidelity: "unsupported",
|
|
294
|
-
method: ctx.method,
|
|
295
|
-
path: ctx.path,
|
|
296
|
-
},
|
|
297
|
-
};
|
|
298
|
-
}));
|
|
299
|
-
root.route("/s/:sid", session);
|
|
300
|
-
// 11b. SDK-compat root mount (stripe F3, F-684): the same session router
|
|
301
|
-
// answers at the root path. Root /healthz + /admin/* were registered
|
|
302
|
-
// first and stay first-match; unknown root paths hit the twin's auth
|
|
303
|
-
// wall (bearerAuth answers 401 before the 501 catch-all). Pair with
|
|
304
|
-
// `auth.requirePathSid: false` so the bearer alone resolves the sid.
|
|
305
|
-
if (definition.mountSessionAtRoot) {
|
|
306
|
-
root.route("/", session);
|
|
307
|
-
}
|
|
308
|
-
// 12. Footgun warning: clean-state-per-test workflows rely on
|
|
309
|
-
// /admin/reset. Warn loudly if a twin ships without it so authors
|
|
310
|
-
// don't discover the gap mid-CI-debug.
|
|
311
|
-
if (!definition.admin?.reset) {
|
|
312
|
-
console.warn(`[@pome-sh/sdk] twin "${definition.id}" has no admin.reset configured — POST /admin/reset returns 501. Most CI workflows rely on this for clean-state-per-test.`);
|
|
313
|
-
}
|
|
314
|
-
return root;
|
|
315
|
-
}
|
|
316
|
-
/**
|
|
317
|
-
* Build the app and bind a Node HTTP server. If `port` is omitted, no
|
|
318
|
-
* server is bound — `close()` still flushes the recorder store.
|
|
319
|
-
*/
|
|
320
|
-
export async function serve(definition, options = {}) {
|
|
321
|
-
const hostname = options.hostname ?? "127.0.0.1";
|
|
322
|
-
// Contract boot guard: a twin must never serve real traffic with the dev
|
|
323
|
-
// fallback secret. Since F-708 a non-loopback bind with no env-injected
|
|
324
|
-
// secret self-generates + persists one instead of refusing to boot; a
|
|
325
|
-
// failed generation still throws before the app is built, so the process
|
|
326
|
-
// exits non-zero without ever listening.
|
|
327
|
-
if (options.port !== undefined && !isLoopbackHost(hostname)) {
|
|
328
|
-
ensureTwinAuthSecret(definition.id, hostname);
|
|
329
|
-
}
|
|
330
|
-
// Resolve the store once so `close()` can flush the same instance the app
|
|
331
|
-
// records into (durable when POME_RECORDER_EVENTS_PATH is set).
|
|
332
|
-
const store = options.recorder ?? resolveRecorderStore();
|
|
333
|
-
const app = createApp(definition, { ...options, recorder: store });
|
|
334
|
-
const closeRecorder = async () => {
|
|
335
|
-
await store.flush?.();
|
|
336
|
-
await store.close?.();
|
|
337
|
-
};
|
|
338
|
-
if (options.port === undefined) {
|
|
339
|
-
return { app, close: closeRecorder };
|
|
340
|
-
}
|
|
341
|
-
const { serve: nodeServe } = await import("@hono/node-server");
|
|
342
|
-
const server = await new Promise((resolve) => {
|
|
343
|
-
const bound = nodeServe({
|
|
344
|
-
fetch: app.fetch,
|
|
345
|
-
port: options.port,
|
|
346
|
-
hostname,
|
|
347
|
-
}, () => resolve(bound));
|
|
348
|
-
});
|
|
349
|
-
let closed = false;
|
|
350
|
-
const close = async () => {
|
|
351
|
-
if (closed) {
|
|
352
|
-
await closeRecorder();
|
|
353
|
-
return;
|
|
354
|
-
}
|
|
355
|
-
closed = true;
|
|
356
|
-
unregisterServeShutdown(close);
|
|
357
|
-
await new Promise((resolve, reject) => {
|
|
358
|
-
server.close((err) => (err ? reject(err) : resolve()));
|
|
359
|
-
});
|
|
360
|
-
await closeRecorder();
|
|
361
|
-
};
|
|
362
|
-
// Twin boot scripts (`await serve(...)`) never call close() themselves.
|
|
363
|
-
// Drain the durable recorder on graceful process signals so hosted twins
|
|
364
|
-
// with POME_RECORDER_EVENTS_PATH set do not lose the last accepted events.
|
|
365
|
-
// Shared registry: every served twin flushes before a single process.exit,
|
|
366
|
-
// so multi-twin processes cannot lose sibling recorder tapes.
|
|
367
|
-
registerServeShutdown(close);
|
|
368
|
-
return { app, close };
|
|
369
|
-
}
|
|
370
|
-
/** Active `serve({ port })` close hooks — drained together on SIGINT/SIGTERM. */
|
|
371
|
-
const serveShutdownHooks = new Set();
|
|
372
|
-
let serveSignalHandlersInstalled = false;
|
|
373
|
-
function registerServeShutdown(close) {
|
|
374
|
-
serveShutdownHooks.add(close);
|
|
375
|
-
if (serveSignalHandlersInstalled)
|
|
376
|
-
return;
|
|
377
|
-
serveSignalHandlersInstalled = true;
|
|
378
|
-
const onSignal = () => {
|
|
379
|
-
void (async () => {
|
|
380
|
-
const hooks = [...serveShutdownHooks];
|
|
381
|
-
serveShutdownHooks.clear();
|
|
382
|
-
await Promise.allSettled(hooks.map((hook) => hook()));
|
|
383
|
-
process.exit(0);
|
|
384
|
-
})();
|
|
385
|
-
};
|
|
386
|
-
process.once("SIGINT", onSignal);
|
|
387
|
-
process.once("SIGTERM", onSignal);
|
|
388
|
-
}
|
|
389
|
-
function unregisterServeShutdown(close) {
|
|
390
|
-
serveShutdownHooks.delete(close);
|
|
391
|
-
}
|
|
392
|
-
// ─── Helpers ────────────────────────────────────────────────────────────────
|
|
393
|
-
/** Engine-owned `/_pome/*` route names a twin's `pomeRoutes` may not shadow. */
|
|
394
|
-
//# sourceMappingURL=server.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { Context } from "hono";
|
|
2
|
-
import type { RecorderEvent, ToolCallContext } from "./index.js";
|
|
3
|
-
export declare function makeToolCallContext(c: Context): {
|
|
4
|
-
ctx: ToolCallContext;
|
|
5
|
-
delta: () => RecorderEvent["state_delta"];
|
|
6
|
-
/** True once the handler invoked `reportDelta` (including with `null`). */
|
|
7
|
-
reportedDelta: () => boolean;
|
|
8
|
-
};
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
-
//
|
|
3
|
-
// Per-call ToolCallContext factory shared by every MCP dispatch surface
|
|
4
|
-
// (server.ts legacy routes + mcp-jsonrpc.ts tools/call). Exposes the
|
|
5
|
-
// authenticated session and captures a handler-reported state delta for the
|
|
6
|
-
// recorded event (F-683).
|
|
7
|
-
export function makeToolCallContext(c) {
|
|
8
|
-
let reported = null;
|
|
9
|
-
let didReport = false;
|
|
10
|
-
return {
|
|
11
|
-
ctx: {
|
|
12
|
-
session: c.get("session"),
|
|
13
|
-
reportDelta: (delta) => {
|
|
14
|
-
reported = delta;
|
|
15
|
-
didReport = true;
|
|
16
|
-
},
|
|
17
|
-
},
|
|
18
|
-
delta: () => reported,
|
|
19
|
-
reportedDelta: () => didReport,
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=tool-context.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tool-context.js","sourceRoot":"","sources":["../src/tool-context.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,EAAE;AACF,wEAAwE;AACxE,qEAAqE;AACrE,4EAA4E;AAC5E,0BAA0B;AAM1B,MAAM,UAAU,mBAAmB,CAAC,CAAU;IAM5C,IAAI,QAAQ,GAAiC,IAAI,CAAC;IAClD,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,OAAO;QACL,GAAG,EAAE;YACH,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAA6B;YACrD,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE;gBACrB,QAAQ,GAAG,KAAK,CAAC;gBACjB,SAAS,GAAG,IAAI,CAAC;YACnB,CAAC;SACF;QACD,KAAK,EAAE,GAAG,EAAE,CAAC,QAAQ;QACrB,aAAa,EAAE,GAAG,EAAE,CAAC,SAAS;KAC/B,CAAC;AACJ,CAAC"}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@pome-sh/sdk",
|
|
3
|
-
"version": "0.5.0",
|
|
4
|
-
"description": "Twin engine for Pome digital twins — defineTwin() + serve(): HTTP mounting, bearer auth, trace recorder, MCP dispatch, SQLite-backed state.",
|
|
5
|
-
"private": false,
|
|
6
|
-
"type": "module",
|
|
7
|
-
"main": "./dist/index.js",
|
|
8
|
-
"types": "./dist/index.d.d.ts",
|
|
9
|
-
"exports": {
|
|
10
|
-
".": {
|
|
11
|
-
"types": "./dist/index.d.ts",
|
|
12
|
-
"default": "./dist/index.js"
|
|
13
|
-
},
|
|
14
|
-
"./server": {
|
|
15
|
-
"types": "./dist/server.d.ts",
|
|
16
|
-
"default": "./dist/server.js"
|
|
17
|
-
},
|
|
18
|
-
"./parity": {
|
|
19
|
-
"types": "./dist/parity.d.ts",
|
|
20
|
-
"default": "./dist/parity.js"
|
|
21
|
-
}
|
|
22
|
-
},
|
|
23
|
-
"publishConfig": {
|
|
24
|
-
"access": "public"
|
|
25
|
-
},
|
|
26
|
-
"repository": {
|
|
27
|
-
"type": "git",
|
|
28
|
-
"url": "git+https://github.com/pome-sh/digital-twins.git",
|
|
29
|
-
"directory": "packages/sdk"
|
|
30
|
-
},
|
|
31
|
-
"homepage": "https://github.com/pome-sh/digital-twins/tree/main/packages/sdk",
|
|
32
|
-
"bugs": {
|
|
33
|
-
"url": "https://github.com/pome-sh/digital-twins/issues"
|
|
34
|
-
},
|
|
35
|
-
"files": [
|
|
36
|
-
"dist"
|
|
37
|
-
],
|
|
38
|
-
"dependencies": {
|
|
39
|
-
"@pome-sh/shared-types": "0.11.0",
|
|
40
|
-
"hono": "^4.12.27",
|
|
41
|
-
"zod": "^4.1.13"
|
|
42
|
-
},
|
|
43
|
-
"peerDependencies": {
|
|
44
|
-
"@hono/node-server": "^2.0.8"
|
|
45
|
-
},
|
|
46
|
-
"peerDependenciesMeta": {
|
|
47
|
-
"@hono/node-server": {
|
|
48
|
-
"optional": true
|
|
49
|
-
}
|
|
50
|
-
},
|
|
51
|
-
"engines": {
|
|
52
|
-
"node": ">=24"
|
|
53
|
-
}
|
|
54
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import type { Context, MiddlewareHandler } from "hono";
|
|
2
|
-
/** Context variable consulted first by getClientIp(). */
|
|
3
|
-
export declare const CLIENT_IP_VAR = "pomeClientIp";
|
|
4
|
-
/**
|
|
5
|
-
* Explicitly record the peer address for this request. Alternate serving
|
|
6
|
-
* bridges (or tests) call this from an upstream middleware so the gate never
|
|
7
|
-
* reaches into runtime-private internals.
|
|
8
|
-
*
|
|
9
|
-
* SECURITY: the value passed here MUST be the transport-level peer address
|
|
10
|
-
* (the socket's remote address as reported by the serving bridge). It takes
|
|
11
|
-
* precedence over getConnInfo, so deriving it from any request-controlled
|
|
12
|
-
* input — X-Forwarded-For or any other client-supplied header — would make
|
|
13
|
-
* the loopback-only admin gate spoofable by whoever sets that header. If you
|
|
14
|
-
* are behind a reverse proxy, use TWIN_ADMIN_TOKEN instead of trying to
|
|
15
|
-
* recover the "real" client IP.
|
|
16
|
-
*/
|
|
17
|
-
export declare function setClientIp(c: Context, ip: string): void;
|
|
18
|
-
/**
|
|
19
|
-
* Runtime-neutral client-IP accessor (FDRS-587). Resolution order:
|
|
20
|
-
* 1. Explicit override set via setClientIp() (alternate bridges / tests).
|
|
21
|
-
* 2. The node serving bridge's official getConnInfo helper.
|
|
22
|
-
* 3. undefined — no live socket (e.g. app.request() in-process tests).
|
|
23
|
-
*/
|
|
24
|
-
export declare function getClientIp(c: Context): Promise<string | undefined>;
|
|
25
|
-
export declare function isLoopbackAddress(remote: string): boolean;
|
|
26
|
-
export interface AdminGateOptions {
|
|
27
|
-
/** 403 response factory so each twin keeps its own error envelope. */
|
|
28
|
-
forbidden?: () => Response;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Admin endpoint protection shared by every twin (FDRS-616). Each twin's
|
|
32
|
-
* auth.ts wraps this with its own `forbidden` envelope. Semantics are
|
|
33
|
-
* identical to the per-twin requireAdminAuth() copies this replaces.
|
|
34
|
-
*/
|
|
35
|
-
export declare function createAdminGate(options?: AdminGateOptions): MiddlewareHandler;
|