pinecall 0.1.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/LICENSE +202 -0
- package/README.md +134 -0
- package/dist/agent/accepts.d.ts +32 -0
- package/dist/agent/accepts.d.ts.map +1 -0
- package/dist/agent/accepts.js +28 -0
- package/dist/agent/accepts.js.map +1 -0
- package/dist/agent/agent.d.ts +189 -0
- package/dist/agent/agent.d.ts.map +1 -0
- package/dist/agent/agent.js +262 -0
- package/dist/agent/agent.js.map +1 -0
- package/dist/agent/authors.d.ts +12 -0
- package/dist/agent/authors.d.ts.map +1 -0
- package/dist/agent/authors.js +28 -0
- package/dist/agent/authors.js.map +1 -0
- package/dist/agent/decorators.d.ts +22 -0
- package/dist/agent/decorators.d.ts.map +1 -0
- package/dist/agent/decorators.js +49 -0
- package/dist/agent/decorators.js.map +1 -0
- package/dist/agent/docstrings.d.ts +43 -0
- package/dist/agent/docstrings.d.ts.map +1 -0
- package/dist/agent/docstrings.js +311 -0
- package/dist/agent/docstrings.js.map +1 -0
- package/dist/agent/lifecycle.d.ts +29 -0
- package/dist/agent/lifecycle.d.ts.map +1 -0
- package/dist/agent/lifecycle.js +11 -0
- package/dist/agent/lifecycle.js.map +1 -0
- package/dist/agent/stages.d.ts +28 -0
- package/dist/agent/stages.d.ts.map +1 -0
- package/dist/agent/stages.js +32 -0
- package/dist/agent/stages.js.map +1 -0
- package/dist/agent/state.d.ts +43 -0
- package/dist/agent/state.d.ts.map +1 -0
- package/dist/agent/state.js +104 -0
- package/dist/agent/state.js.map +1 -0
- package/dist/agent/tools.d.ts +66 -0
- package/dist/agent/tools.d.ts.map +1 -0
- package/dist/agent/tools.js +148 -0
- package/dist/agent/tools.js.map +1 -0
- package/dist/agent/visibility.d.ts +40 -0
- package/dist/agent/visibility.d.ts.map +1 -0
- package/dist/agent/visibility.js +89 -0
- package/dist/agent/visibility.js.map +1 -0
- package/dist/call/call.d.ts +55 -0
- package/dist/call/call.d.ts.map +1 -0
- package/dist/call/call.js +108 -0
- package/dist/call/call.js.map +1 -0
- package/dist/call/history.d.ts +34 -0
- package/dist/call/history.d.ts.map +1 -0
- package/dist/call/history.js +38 -0
- package/dist/call/history.js.map +1 -0
- package/dist/call/room.d.ts +58 -0
- package/dist/call/room.d.ts.map +1 -0
- package/dist/call/room.js +68 -0
- package/dist/call/room.js.map +1 -0
- package/dist/cli/browser.d.ts +8 -0
- package/dist/cli/browser.d.ts.map +1 -0
- package/dist/cli/browser.js +27 -0
- package/dist/cli/browser.js.map +1 -0
- package/dist/cli/callbacks.d.ts +26 -0
- package/dist/cli/callbacks.d.ts.map +1 -0
- package/dist/cli/callbacks.js +68 -0
- package/dist/cli/callbacks.js.map +1 -0
- package/dist/cli/chat.d.ts +21 -0
- package/dist/cli/chat.d.ts.map +1 -0
- package/dist/cli/chat.js +214 -0
- package/dist/cli/chat.js.map +1 -0
- package/dist/cli/config.d.ts +16 -0
- package/dist/cli/config.d.ts.map +1 -0
- package/dist/cli/config.js +94 -0
- package/dist/cli/config.js.map +1 -0
- package/dist/cli/connected.d.ts +30 -0
- package/dist/cli/connected.d.ts.map +1 -0
- package/dist/cli/connected.js +32 -0
- package/dist/cli/connected.js.map +1 -0
- package/dist/cli/credentials.d.ts +41 -0
- package/dist/cli/credentials.d.ts.map +1 -0
- package/dist/cli/credentials.js +98 -0
- package/dist/cli/credentials.js.map +1 -0
- package/dist/cli/ear.d.ts +3 -0
- package/dist/cli/ear.d.ts.map +1 -0
- package/dist/cli/ear.js +59 -0
- package/dist/cli/ear.js.map +1 -0
- package/dist/cli/env.d.ts +40 -0
- package/dist/cli/env.d.ts.map +1 -0
- package/dist/cli/env.js +45 -0
- package/dist/cli/env.js.map +1 -0
- package/dist/cli/eval.d.ts +37 -0
- package/dist/cli/eval.d.ts.map +1 -0
- package/dist/cli/eval.js +83 -0
- package/dist/cli/eval.js.map +1 -0
- package/dist/cli/groups.d.ts +17 -0
- package/dist/cli/groups.d.ts.map +1 -0
- package/dist/cli/groups.js +38 -0
- package/dist/cli/groups.js.map +1 -0
- package/dist/cli/index.d.ts +16 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +169 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/keys.d.ts +28 -0
- package/dist/cli/keys.d.ts.map +1 -0
- package/dist/cli/keys.js +137 -0
- package/dist/cli/keys.js.map +1 -0
- package/dist/cli/knowledge.d.ts +35 -0
- package/dist/cli/knowledge.d.ts.map +1 -0
- package/dist/cli/knowledge.js +174 -0
- package/dist/cli/knowledge.js.map +1 -0
- package/dist/cli/line.d.ts +33 -0
- package/dist/cli/line.d.ts.map +1 -0
- package/dist/cli/line.js +134 -0
- package/dist/cli/line.js.map +1 -0
- package/dist/cli/listening.d.ts +38 -0
- package/dist/cli/listening.d.ts.map +1 -0
- package/dist/cli/listening.js +124 -0
- package/dist/cli/listening.js.map +1 -0
- package/dist/cli/load.d.ts +38 -0
- package/dist/cli/load.d.ts.map +1 -0
- package/dist/cli/load.js +99 -0
- package/dist/cli/load.js.map +1 -0
- package/dist/cli/login.d.ts +30 -0
- package/dist/cli/login.d.ts.map +1 -0
- package/dist/cli/login.js +158 -0
- package/dist/cli/login.js.map +1 -0
- package/dist/cli/machine.d.ts +8 -0
- package/dist/cli/machine.d.ts.map +1 -0
- package/dist/cli/machine.js +41 -0
- package/dist/cli/machine.js.map +1 -0
- package/dist/cli/memory.d.ts +26 -0
- package/dist/cli/memory.d.ts.map +1 -0
- package/dist/cli/memory.js +148 -0
- package/dist/cli/memory.js.map +1 -0
- package/dist/cli/numbers.d.ts +25 -0
- package/dist/cli/numbers.d.ts.map +1 -0
- package/dist/cli/numbers.js +132 -0
- package/dist/cli/numbers.js.map +1 -0
- package/dist/cli/personas.d.ts +5 -0
- package/dist/cli/personas.d.ts.map +1 -0
- package/dist/cli/personas.js +94 -0
- package/dist/cli/personas.js.map +1 -0
- package/dist/cli/pipeline.d.ts +52 -0
- package/dist/cli/pipeline.d.ts.map +1 -0
- package/dist/cli/pipeline.js +184 -0
- package/dist/cli/pipeline.js.map +1 -0
- package/dist/cli/profiles.d.ts +70 -0
- package/dist/cli/profiles.d.ts.map +1 -0
- package/dist/cli/profiles.js +210 -0
- package/dist/cli/profiles.js.map +1 -0
- package/dist/cli/prompt.d.ts +20 -0
- package/dist/cli/prompt.d.ts.map +1 -0
- package/dist/cli/prompt.js +58 -0
- package/dist/cli/prompt.js.map +1 -0
- package/dist/cli/providers.d.ts +14 -0
- package/dist/cli/providers.d.ts.map +1 -0
- package/dist/cli/providers.js +116 -0
- package/dist/cli/providers.js.map +1 -0
- package/dist/cli/remember.d.ts +29 -0
- package/dist/cli/remember.d.ts.map +1 -0
- package/dist/cli/remember.js +112 -0
- package/dist/cli/remember.js.map +1 -0
- package/dist/cli/run.d.ts +20 -0
- package/dist/cli/run.d.ts.map +1 -0
- package/dist/cli/run.js +347 -0
- package/dist/cli/run.js.map +1 -0
- package/dist/cli/runs/candidate.d.ts +51 -0
- package/dist/cli/runs/candidate.d.ts.map +1 -0
- package/dist/cli/runs/candidate.js +127 -0
- package/dist/cli/runs/candidate.js.map +1 -0
- package/dist/cli/runs/drift.d.ts +75 -0
- package/dist/cli/runs/drift.d.ts.map +1 -0
- package/dist/cli/runs/drift.js +151 -0
- package/dist/cli/runs/drift.js.map +1 -0
- package/dist/cli/runs/index.d.ts +5 -0
- package/dist/cli/runs/index.d.ts.map +1 -0
- package/dist/cli/runs/index.js +99 -0
- package/dist/cli/runs/index.js.map +1 -0
- package/dist/cli/runs/suites.d.ts +16 -0
- package/dist/cli/runs/suites.d.ts.map +1 -0
- package/dist/cli/runs/suites.js +63 -0
- package/dist/cli/runs/suites.js.map +1 -0
- package/dist/cli/secret.d.ts +18 -0
- package/dist/cli/secret.d.ts.map +1 -0
- package/dist/cli/secret.js +41 -0
- package/dist/cli/secret.js.map +1 -0
- package/dist/cli/sessions.d.ts +21 -0
- package/dist/cli/sessions.d.ts.map +1 -0
- package/dist/cli/sessions.js +174 -0
- package/dist/cli/sessions.js.map +1 -0
- package/dist/cli/signup.d.ts +25 -0
- package/dist/cli/signup.d.ts.map +1 -0
- package/dist/cli/signup.js +122 -0
- package/dist/cli/signup.js.map +1 -0
- package/dist/cli/simulate.d.ts +45 -0
- package/dist/cli/simulate.d.ts.map +1 -0
- package/dist/cli/simulate.js +320 -0
- package/dist/cli/simulate.js.map +1 -0
- package/dist/cli/supervise.d.ts +18 -0
- package/dist/cli/supervise.d.ts.map +1 -0
- package/dist/cli/supervise.js +134 -0
- package/dist/cli/supervise.js.map +1 -0
- package/dist/cli/test.d.ts +12 -0
- package/dist/cli/test.d.ts.map +1 -0
- package/dist/cli/test.js +128 -0
- package/dist/cli/test.js.map +1 -0
- package/dist/cli/testing/caller.d.ts +28 -0
- package/dist/cli/testing/caller.d.ts.map +1 -0
- package/dist/cli/testing/caller.js +30 -0
- package/dist/cli/testing/caller.js.map +1 -0
- package/dist/cli/testing/gateway.d.ts +172 -0
- package/dist/cli/testing/gateway.d.ts.map +1 -0
- package/dist/cli/testing/gateway.js +96 -0
- package/dist/cli/testing/gateway.js.map +1 -0
- package/dist/cli/testing/goldens.d.ts +61 -0
- package/dist/cli/testing/goldens.d.ts.map +1 -0
- package/dist/cli/testing/goldens.js +54 -0
- package/dist/cli/testing/goldens.js.map +1 -0
- package/dist/cli/testing/latency.d.ts +15 -0
- package/dist/cli/testing/latency.d.ts.map +1 -0
- package/dist/cli/testing/latency.js +44 -0
- package/dist/cli/testing/latency.js.map +1 -0
- package/dist/cli/testing/matrix.d.ts +12 -0
- package/dist/cli/testing/matrix.d.ts.map +1 -0
- package/dist/cli/testing/matrix.js +103 -0
- package/dist/cli/testing/matrix.js.map +1 -0
- package/dist/cli/testing/progress.d.ts +26 -0
- package/dist/cli/testing/progress.d.ts.map +1 -0
- package/dist/cli/testing/progress.js +185 -0
- package/dist/cli/testing/progress.js.map +1 -0
- package/dist/cli/testing/reproduction.d.ts +19 -0
- package/dist/cli/testing/reproduction.d.ts.map +1 -0
- package/dist/cli/testing/reproduction.js +65 -0
- package/dist/cli/testing/reproduction.js.map +1 -0
- package/dist/cli/testing/score.d.ts +11 -0
- package/dist/cli/testing/score.d.ts.map +1 -0
- package/dist/cli/testing/score.js +54 -0
- package/dist/cli/testing/score.js.map +1 -0
- package/dist/cli/testing/seeding.d.ts +32 -0
- package/dist/cli/testing/seeding.d.ts.map +1 -0
- package/dist/cli/testing/seeding.js +44 -0
- package/dist/cli/testing/seeding.js.map +1 -0
- package/dist/cli/testing/suite.d.ts +40 -0
- package/dist/cli/testing/suite.d.ts.map +1 -0
- package/dist/cli/testing/suite.js +103 -0
- package/dist/cli/testing/suite.js.map +1 -0
- package/dist/cli/testing/voice.d.ts +37 -0
- package/dist/cli/testing/voice.d.ts.map +1 -0
- package/dist/cli/testing/voice.js +53 -0
- package/dist/cli/testing/voice.js.map +1 -0
- package/dist/cli/ui/admin/assets/index-C3WMXdfL.css +1 -0
- package/dist/cli/ui/admin/assets/index-DR1mxoAh.js +58 -0
- package/dist/cli/ui/admin/index.html +20 -0
- package/dist/cli/ui/asked.d.ts +16 -0
- package/dist/cli/ui/asked.d.ts.map +1 -0
- package/dist/cli/ui/asked.js +53 -0
- package/dist/cli/ui/asked.js.map +1 -0
- package/dist/cli/ui/browser.d.ts +10 -0
- package/dist/cli/ui/browser.d.ts.map +1 -0
- package/dist/cli/ui/browser.js +30 -0
- package/dist/cli/ui/browser.js.map +1 -0
- package/dist/cli/ui/chatting.d.ts +62 -0
- package/dist/cli/ui/chatting.d.ts.map +1 -0
- package/dist/cli/ui/chatting.js +171 -0
- package/dist/cli/ui/chatting.js.map +1 -0
- package/dist/cli/ui/console/assets/index-DCTnou52.css +1 -0
- package/dist/cli/ui/console/assets/index-dOcE4usU.js +99 -0
- package/dist/cli/ui/console/index.html +20 -0
- package/dist/cli/ui/console/logo-mark.png +0 -0
- package/dist/cli/ui/doors.d.ts +37 -0
- package/dist/cli/ui/doors.d.ts.map +1 -0
- package/dist/cli/ui/doors.js +70 -0
- package/dist/cli/ui/doors.js.map +1 -0
- package/dist/cli/ui/drifting.d.ts +23 -0
- package/dist/cli/ui/drifting.d.ts.map +1 -0
- package/dist/cli/ui/drifting.js +33 -0
- package/dist/cli/ui/drifting.js.map +1 -0
- package/dist/cli/ui/index.d.ts +15 -0
- package/dist/cli/ui/index.d.ts.map +1 -0
- package/dist/cli/ui/index.js +117 -0
- package/dist/cli/ui/index.js.map +1 -0
- package/dist/cli/ui/knowing.d.ts +36 -0
- package/dist/cli/ui/knowing.d.ts.map +1 -0
- package/dist/cli/ui/knowing.js +86 -0
- package/dist/cli/ui/knowing.js.map +1 -0
- package/dist/cli/ui/promoting.d.ts +26 -0
- package/dist/cli/ui/promoting.d.ts.map +1 -0
- package/dist/cli/ui/promoting.js +44 -0
- package/dist/cli/ui/promoting.js.map +1 -0
- package/dist/cli/ui/refusal.d.ts +18 -0
- package/dist/cli/ui/refusal.d.ts.map +1 -0
- package/dist/cli/ui/refusal.js +26 -0
- package/dist/cli/ui/refusal.js.map +1 -0
- package/dist/cli/ui/refused.d.ts +8 -0
- package/dist/cli/ui/refused.d.ts.map +1 -0
- package/dist/cli/ui/refused.js +11 -0
- package/dist/cli/ui/refused.js.map +1 -0
- package/dist/cli/ui/remembering.d.ts +38 -0
- package/dist/cli/ui/remembering.d.ts.map +1 -0
- package/dist/cli/ui/remembering.js +87 -0
- package/dist/cli/ui/remembering.js.map +1 -0
- package/dist/cli/ui/reproducing.d.ts +23 -0
- package/dist/cli/ui/reproducing.d.ts.map +1 -0
- package/dist/cli/ui/reproducing.js +52 -0
- package/dist/cli/ui/reproducing.js.map +1 -0
- package/dist/cli/ui/server.d.ts +22 -0
- package/dist/cli/ui/server.d.ts.map +1 -0
- package/dist/cli/ui/server.js +211 -0
- package/dist/cli/ui/server.js.map +1 -0
- package/dist/cli/ui/simulating.d.ts +47 -0
- package/dist/cli/ui/simulating.d.ts.map +1 -0
- package/dist/cli/ui/simulating.js +86 -0
- package/dist/cli/ui/simulating.js.map +1 -0
- package/dist/cli/ui/testing.d.ts +49 -0
- package/dist/cli/ui/testing.d.ts.map +1 -0
- package/dist/cli/ui/testing.js +104 -0
- package/dist/cli/ui/testing.js.map +1 -0
- package/dist/cli/view.d.ts +43 -0
- package/dist/cli/view.d.ts.map +1 -0
- package/dist/cli/view.js +137 -0
- package/dist/cli/view.js.map +1 -0
- package/dist/cli/whoami.d.ts +37 -0
- package/dist/cli/whoami.d.ts.map +1 -0
- package/dist/cli/whoami.js +78 -0
- package/dist/cli/whoami.js.map +1 -0
- package/dist/cli/world.d.ts +33 -0
- package/dist/cli/world.d.ts.map +1 -0
- package/dist/cli/world.js +48 -0
- package/dist/cli/world.js.map +1 -0
- package/dist/client/agent.d.ts +87 -0
- package/dist/client/agent.d.ts.map +1 -0
- package/dist/client/agent.js +209 -0
- package/dist/client/agent.js.map +1 -0
- package/dist/client/calls.d.ts +77 -0
- package/dist/client/calls.d.ts.map +1 -0
- package/dist/client/calls.js +153 -0
- package/dist/client/calls.js.map +1 -0
- package/dist/client/client.d.ts +58 -0
- package/dist/client/client.d.ts.map +1 -0
- package/dist/client/client.js +146 -0
- package/dist/client/client.js.map +1 -0
- package/dist/client/connection.d.ts +47 -0
- package/dist/client/connection.d.ts.map +1 -0
- package/dist/client/connection.js +141 -0
- package/dist/client/connection.js.map +1 -0
- package/dist/client/endpoints.d.ts +7 -0
- package/dist/client/endpoints.d.ts.map +1 -0
- package/dist/client/endpoints.js +21 -0
- package/dist/client/endpoints.js.map +1 -0
- package/dist/client/frames.d.ts +24 -0
- package/dist/client/frames.d.ts.map +1 -0
- package/dist/client/frames.js +49 -0
- package/dist/client/frames.js.map +1 -0
- package/dist/client/index.d.ts +15 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +14 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/listeners.d.ts +36 -0
- package/dist/client/listeners.d.ts.map +1 -0
- package/dist/client/listeners.js +61 -0
- package/dist/client/listeners.js.map +1 -0
- package/dist/client/observe.d.ts +44 -0
- package/dist/client/observe.d.ts.map +1 -0
- package/dist/client/observe.js +122 -0
- package/dist/client/observe.js.map +1 -0
- package/dist/client/testing/gateway.d.ts +39 -0
- package/dist/client/testing/gateway.d.ts.map +1 -0
- package/dist/client/testing/gateway.js +129 -0
- package/dist/client/testing/gateway.js.map +1 -0
- package/dist/client/testing/index.d.ts +4 -0
- package/dist/client/testing/index.d.ts.map +1 -0
- package/dist/client/testing/index.js +4 -0
- package/dist/client/testing/index.js.map +1 -0
- package/dist/client/testing/log.d.ts +26 -0
- package/dist/client/testing/log.d.ts.map +1 -0
- package/dist/client/testing/log.js +111 -0
- package/dist/client/testing/log.js.map +1 -0
- package/dist/client/testing/loopback.d.ts +3 -0
- package/dist/client/testing/loopback.d.ts.map +1 -0
- package/dist/client/testing/loopback.js +3 -0
- package/dist/client/testing/loopback.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +35 -0
- package/dist/index.js.map +1 -0
- package/dist/runtime/channels.d.ts +16 -0
- package/dist/runtime/channels.d.ts.map +1 -0
- package/dist/runtime/channels.js +30 -0
- package/dist/runtime/channels.js.map +1 -0
- package/dist/runtime/connect.d.ts +51 -0
- package/dist/runtime/connect.d.ts.map +1 -0
- package/dist/runtime/connect.js +284 -0
- package/dist/runtime/connect.js.map +1 -0
- package/dist/runtime/dispatch.d.ts +37 -0
- package/dist/runtime/dispatch.d.ts.map +1 -0
- package/dist/runtime/dispatch.js +52 -0
- package/dist/runtime/dispatch.js.map +1 -0
- package/dist/runtime/grounding.d.ts +15 -0
- package/dist/runtime/grounding.d.ts.map +1 -0
- package/dist/runtime/grounding.js +72 -0
- package/dist/runtime/grounding.js.map +1 -0
- package/dist/runtime/recall.d.ts +10 -0
- package/dist/runtime/recall.d.ts.map +1 -0
- package/dist/runtime/recall.js +13 -0
- package/dist/runtime/recall.js.map +1 -0
- package/dist/runtime/run-tool.d.ts +26 -0
- package/dist/runtime/run-tool.d.ts.map +1 -0
- package/dist/runtime/run-tool.js +82 -0
- package/dist/runtime/run-tool.js.map +1 -0
- package/dist/views/components.d.ts +17 -0
- package/dist/views/components.d.ts.map +1 -0
- package/dist/views/components.js +33 -0
- package/dist/views/components.js.map +1 -0
- package/dist/views/jsx-dev-runtime.d.ts +3 -0
- package/dist/views/jsx-dev-runtime.d.ts.map +1 -0
- package/dist/views/jsx-dev-runtime.js +5 -0
- package/dist/views/jsx-dev-runtime.js.map +1 -0
- package/dist/views/jsx-runtime.d.ts +49 -0
- package/dist/views/jsx-runtime.d.ts.map +1 -0
- package/dist/views/jsx-runtime.js +67 -0
- package/dist/views/jsx-runtime.js.map +1 -0
- package/dist/views/lang.d.ts +17 -0
- package/dist/views/lang.d.ts.map +1 -0
- package/dist/views/lang.js +46 -0
- package/dist/views/lang.js.map +1 -0
- package/dist/views/layout.d.ts +19 -0
- package/dist/views/layout.d.ts.map +1 -0
- package/dist/views/layout.js +62 -0
- package/dist/views/layout.js.map +1 -0
- package/dist/views/render.d.ts +19 -0
- package/dist/views/render.d.ts.map +1 -0
- package/dist/views/render.js +26 -0
- package/dist/views/render.js.map +1 -0
- package/package.json +76 -0
- package/tsconfig.tenant.json +24 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
|
+
<title>Pinecall console</title>
|
|
7
|
+
<link rel="icon" type="image/png" href="/logo-mark.png" />
|
|
8
|
+
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
9
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
|
10
|
+
<link
|
|
11
|
+
href="https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600&family=IBM+Plex+Mono:wght@400;500&display=swap"
|
|
12
|
+
rel="stylesheet"
|
|
13
|
+
/>
|
|
14
|
+
<script type="module" crossorigin src="/assets/index-dOcE4usU.js"></script>
|
|
15
|
+
<link rel="stylesheet" crossorigin href="/assets/index-DCTnou52.css">
|
|
16
|
+
</head>
|
|
17
|
+
<body>
|
|
18
|
+
<div id="root"></div>
|
|
19
|
+
</body>
|
|
20
|
+
</html>
|
|
Binary file
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/** Every verb this process answers itself: what only the terminal in the agent's directory can do. */
|
|
2
|
+
import type { DevVerb } from "@pinecall/protocol";
|
|
3
|
+
import { type DevHandler } from "../../client/index.js";
|
|
4
|
+
import type { Chatting } from "./chatting.js";
|
|
5
|
+
import type { Drifting } from "./drifting.js";
|
|
6
|
+
import type { Knowing } from "./knowing.js";
|
|
7
|
+
import type { Promoting } from "./promoting.js";
|
|
8
|
+
import type { Remembering } from "./remembering.js";
|
|
9
|
+
import type { Reproducing } from "./reproducing.js";
|
|
10
|
+
import type { Simulating } from "./simulating.js";
|
|
11
|
+
import type { Testing } from "./testing.js";
|
|
12
|
+
/** What `pinecall run` hands in. Every field is what one screen of the console needs from this process. */
|
|
13
|
+
export interface Own {
|
|
14
|
+
simulating?: Simulating | undefined;
|
|
15
|
+
testing?: Testing | undefined;
|
|
16
|
+
chatting?: Chatting | undefined;
|
|
17
|
+
knowing?: Knowing | undefined;
|
|
18
|
+
remembering?: Remembering | undefined;
|
|
19
|
+
promoting?: Promoting | undefined;
|
|
20
|
+
drifting?: Drifting | undefined;
|
|
21
|
+
reproducing?: Reproducing | undefined;
|
|
22
|
+
}
|
|
23
|
+
/** One verb of this process, as the wire names it and as the console's body reaches it. */
|
|
24
|
+
export type Verbs = Partial<Record<DevVerb, (asked: unknown) => Promise<unknown>>>;
|
|
25
|
+
/**
|
|
26
|
+
* The table, keyed by the wire's verb. A screen that needs something only this process can do —
|
|
27
|
+
* the class of this directory, its personas, its goldens, its files — adds ONE module and ONE
|
|
28
|
+
* row here; `pinecall run` answers the gateway's dev.request off it and knows nothing else.
|
|
29
|
+
*/
|
|
30
|
+
export declare function ownVerbs(own: Own): Verbs;
|
|
31
|
+
/**
|
|
32
|
+
* The table as the client's Agent takes it. A refusal keeps its status and its sentence — the
|
|
33
|
+
* module's own, or the gateway's when the module was refused by the gateway — through the one
|
|
34
|
+
* place the three shapes become one (`refusedAs`); the console shows exactly that.
|
|
35
|
+
*/
|
|
36
|
+
export declare function devHandler(verbs: Verbs): DevHandler;
|
|
37
|
+
//# sourceMappingURL=doors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doors.d.ts","sourceRoot":"","sources":["../../../src/cli/ui/doors.ts"],"names":[],"mappings":"AAAA,sGAAsG;AAEtG,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAc,KAAK,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,2GAA2G;AAC3G,MAAM,WAAW,GAAG;IAClB,UAAU,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IACpC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAChC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,WAAW,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IACtC,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAChC,WAAW,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;CACvC;AAED,2FAA2F;AAC3F,MAAM,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAEnF;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,KAAK,CAuCxC;AAKD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,UAAU,CAWnD"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/** Every verb this process answers itself: what only the terminal in the agent's directory can do. */
|
|
2
|
+
import { DevRefused } from "../../client/index.js";
|
|
3
|
+
import { refusedAs } from "./refusal.js";
|
|
4
|
+
/**
|
|
5
|
+
* The table, keyed by the wire's verb. A screen that needs something only this process can do —
|
|
6
|
+
* the class of this directory, its personas, its goldens, its files — adds ONE module and ONE
|
|
7
|
+
* row here; `pinecall run` answers the gateway's dev.request off it and knows nothing else.
|
|
8
|
+
*/
|
|
9
|
+
export function ownVerbs(own) {
|
|
10
|
+
const verbs = {};
|
|
11
|
+
const { simulating, testing, chatting, knowing, remembering, promoting, drifting, reproducing } = own;
|
|
12
|
+
if (simulating !== undefined) {
|
|
13
|
+
verbs["simulate.roster"] = () => simulating.roster();
|
|
14
|
+
verbs["simulate.start"] = (asked) => simulating.start(asked);
|
|
15
|
+
}
|
|
16
|
+
if (testing !== undefined) {
|
|
17
|
+
verbs["goldens.roster"] = () => testing.roster();
|
|
18
|
+
verbs["goldens.run"] = (asked) => testing.start(asked);
|
|
19
|
+
}
|
|
20
|
+
if (chatting !== undefined) {
|
|
21
|
+
verbs["chat.roster"] = () => chatting.roster();
|
|
22
|
+
verbs["chat.start"] = (asked) => chatting.start(asked);
|
|
23
|
+
verbs["chat.say"] = (asked) => chatting.say(asked);
|
|
24
|
+
verbs["chat.end"] = (asked) => chatting.end(asked);
|
|
25
|
+
}
|
|
26
|
+
if (knowing !== undefined) {
|
|
27
|
+
verbs["knowledge.roster"] = () => knowing.roster();
|
|
28
|
+
verbs["knowledge.push"] = (asked) => knowing.push(asked);
|
|
29
|
+
verbs["knowledge.eval"] = (asked) => knowing.measure(asked);
|
|
30
|
+
}
|
|
31
|
+
if (remembering !== undefined) {
|
|
32
|
+
verbs["memory.roster"] = () => remembering.roster();
|
|
33
|
+
verbs["memory.eval"] = (asked) => remembering.recall(asked);
|
|
34
|
+
verbs["memory.extraction"] = (asked) => remembering.extract(asked);
|
|
35
|
+
}
|
|
36
|
+
if (promoting !== undefined) {
|
|
37
|
+
verbs["promote.roster"] = () => promoting.roster();
|
|
38
|
+
verbs["promote.write"] = (asked) => promoting.promote(asked);
|
|
39
|
+
}
|
|
40
|
+
if (drifting !== undefined) {
|
|
41
|
+
verbs["drift.read"] = (asked) => drifting.read(asked);
|
|
42
|
+
}
|
|
43
|
+
if (reproducing !== undefined) {
|
|
44
|
+
verbs["reproductions.roster"] = (asked) => reproducing.roster(asked);
|
|
45
|
+
verbs["reproductions.read"] = (asked) => reproducing.read(asked);
|
|
46
|
+
}
|
|
47
|
+
return verbs;
|
|
48
|
+
}
|
|
49
|
+
// A verb nobody registered — a `pinecall run` in a directory with no personas, asked to simulate.
|
|
50
|
+
const NOT_HERE = (verb) => `this process answers no ${verb}: nothing of it is in this directory`;
|
|
51
|
+
/**
|
|
52
|
+
* The table as the client's Agent takes it. A refusal keeps its status and its sentence — the
|
|
53
|
+
* module's own, or the gateway's when the module was refused by the gateway — through the one
|
|
54
|
+
* place the three shapes become one (`refusedAs`); the console shows exactly that.
|
|
55
|
+
*/
|
|
56
|
+
export function devHandler(verbs) {
|
|
57
|
+
return async (verb, data) => {
|
|
58
|
+
const answer = verbs[verb];
|
|
59
|
+
if (answer === undefined)
|
|
60
|
+
throw new DevRefused(404, NOT_HERE(verb));
|
|
61
|
+
try {
|
|
62
|
+
return (await answer(data));
|
|
63
|
+
}
|
|
64
|
+
catch (failed) {
|
|
65
|
+
const said = refusedAs(failed);
|
|
66
|
+
throw new DevRefused(said.status, said.detail);
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=doors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doors.js","sourceRoot":"","sources":["../../../src/cli/ui/doors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/** The console's own door to `runs drift`: each judge's held-rate over two windows, counted here. */
|
|
2
|
+
import { type Drift } from "../runs/drift.js";
|
|
3
|
+
import type { Door } from "../testing/gateway.js";
|
|
4
|
+
/** The two windows, in seconds, as the page asks for them, and what came of them. */
|
|
5
|
+
export interface Drifted {
|
|
6
|
+
agent: string;
|
|
7
|
+
window: number;
|
|
8
|
+
baseline: number;
|
|
9
|
+
threshold: number;
|
|
10
|
+
drift: Drift;
|
|
11
|
+
}
|
|
12
|
+
/** What the server needs from the drift door. */
|
|
13
|
+
export interface Drifting {
|
|
14
|
+
read(asked: unknown): Promise<Drifted>;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* One `Drifting` for the life of a `pinecall run`. Nothing here is the console's own work: it is
|
|
18
|
+
* the very `theDrift` the verb runs, in the process that already holds the key, because reading
|
|
19
|
+
* two hundred calls and their scores is two hundred round trips and a browser should make none of
|
|
20
|
+
* them. A held-rate is a count of the verdicts the log already carries — nothing is judged again.
|
|
21
|
+
*/
|
|
22
|
+
export declare function driftingFrom(door: Door, now?: () => number): Drifting;
|
|
23
|
+
//# sourceMappingURL=drifting.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drifting.d.ts","sourceRoot":"","sources":["../../../src/cli/ui/drifting.ts"],"names":[],"mappings":"AAAA,qGAAqG;AAErG,OAAO,EAA0C,KAAK,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACtF,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAGlD,qFAAqF;AACrF,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,KAAK,CAAC;CACd;AAED,iDAAiD;AACjD,MAAM,WAAW,QAAQ;IACvB,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACxC;AAMD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,GAAE,MAAM,MAAgC,GAAG,QAAQ,CAmB9F"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/** The console's own door to `runs drift`: each judge's held-rate over two windows, counted here. */
|
|
2
|
+
import { A_WINDOW_OF_CALLS, THRESHOLD, theDrift } from "../runs/drift.js";
|
|
3
|
+
import { anObject, aString, maybeNumber } from "./asked.js";
|
|
4
|
+
/** A week against a month: the windows `pinecall runs drift` has when nobody names one. */
|
|
5
|
+
const A_WEEK = 7 * 24 * 60 * 60;
|
|
6
|
+
const A_MONTH = 30 * 24 * 60 * 60;
|
|
7
|
+
/**
|
|
8
|
+
* One `Drifting` for the life of a `pinecall run`. Nothing here is the console's own work: it is
|
|
9
|
+
* the very `theDrift` the verb runs, in the process that already holds the key, because reading
|
|
10
|
+
* two hundred calls and their scores is two hundred round trips and a browser should make none of
|
|
11
|
+
* them. A held-rate is a count of the verdicts the log already carries — nothing is judged again.
|
|
12
|
+
*/
|
|
13
|
+
export function driftingFrom(door, now = () => Date.now() / 1000) {
|
|
14
|
+
return {
|
|
15
|
+
async read(asked) {
|
|
16
|
+
const given = anObject(asked, "a drift");
|
|
17
|
+
const agent = aString(given, "agent");
|
|
18
|
+
const window = maybeNumber(given, "window", 60, A_MONTH * 12) ?? A_WEEK;
|
|
19
|
+
const baseline = maybeNumber(given, "baseline", 60, A_MONTH * 12) ?? A_MONTH;
|
|
20
|
+
const threshold = maybeNumber(given, "threshold", 0, 100) ?? THRESHOLD;
|
|
21
|
+
const drift = await theDrift(door, {
|
|
22
|
+
agent,
|
|
23
|
+
window,
|
|
24
|
+
baseline,
|
|
25
|
+
threshold,
|
|
26
|
+
limit: A_WINDOW_OF_CALLS,
|
|
27
|
+
now: now(),
|
|
28
|
+
});
|
|
29
|
+
return { agent, window, baseline, threshold, drift };
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=drifting.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drifting.js","sourceRoot":"","sources":["../../../src/cli/ui/drifting.ts"],"names":[],"mappings":"AAAA,qGAAqG;AAErG,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,QAAQ,EAAc,MAAM,kBAAkB,CAAC;AAEtF,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAgB5D,2FAA2F;AAC3F,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAChC,MAAM,OAAO,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAElC;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,IAAU,EAAE,GAAG,GAAiB,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI;IAClF,OAAO;QACL,KAAK,CAAC,IAAI,CAAC,KAAc;YACvB,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YACzC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACtC,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,GAAG,EAAE,CAAC,IAAI,MAAM,CAAC;YACxE,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,GAAG,EAAE,CAAC,IAAI,OAAO,CAAC;YAC7E,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,SAAS,CAAC;YACvE,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;gBACjC,KAAK;gBACL,MAAM;gBACN,QAAQ;gBACR,SAAS;gBACT,KAAK,EAAE,iBAAiB;gBACxB,GAAG,EAAE,GAAG,EAAE;aACX,CAAC,CAAC;YACH,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QACvD,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** `pinecall ui [agent]`: the console on 127.0.0.1 for the life of the command, opened in this machine's browser. */
|
|
2
|
+
import type { Group } from "../groups.js";
|
|
3
|
+
export declare const group: Group;
|
|
4
|
+
/** What ui can be told besides the argv: where to print, and which browser to open. Tests only. */
|
|
5
|
+
export interface Opening {
|
|
6
|
+
out?: NodeJS.WritableStream;
|
|
7
|
+
err?: NodeJS.WritableStream;
|
|
8
|
+
open?: (url: string) => void;
|
|
9
|
+
env?: NodeJS.ProcessEnv;
|
|
10
|
+
files?: string;
|
|
11
|
+
}
|
|
12
|
+
/** Serve, open, wait, close. The org key is read once and spent only by the server, never printed. */
|
|
13
|
+
export declare function ui(argv: string[], how?: Opening): Promise<number>;
|
|
14
|
+
export declare function consoleFiles(): string;
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/ui/index.ts"],"names":[],"mappings":"AAAA,qHAAqH;AAOrH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAoB1C,eAAO,MAAM,KAAK,EAAE,KAcnB,CAAC;AAEF,mGAAmG;AACnG,MAAM,WAAW,OAAO;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IAC5B,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,sGAAsG;AACtG,wBAAsB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,GAAE,OAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAuD3E;AAWD,wBAAgB,YAAY,IAAI,MAAM,CAMrC"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/** `pinecall ui [agent]`: the console on 127.0.0.1 for the life of the command, opened in this machine's browser. */
|
|
2
|
+
import { existsSync } from "node:fs";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { slugOf } from "../../runtime/connect.js";
|
|
5
|
+
import { doorLine, theDoor } from "../env.js";
|
|
6
|
+
import { agentOfThisDirectory, DEFAULT_AGENTS } from "../load.js";
|
|
7
|
+
import { headless, openInBrowser } from "./browser.js";
|
|
8
|
+
import { chattingFrom } from "./chatting.js";
|
|
9
|
+
import { driftingFrom } from "./drifting.js";
|
|
10
|
+
import { ownDoors } from "./doors.js";
|
|
11
|
+
import { knowingFrom } from "./knowing.js";
|
|
12
|
+
import { promotingFrom } from "./promoting.js";
|
|
13
|
+
import { rememberingFrom } from "./remembering.js";
|
|
14
|
+
import { reproducingFrom } from "./reproducing.js";
|
|
15
|
+
import { LocalConsole } from "./server.js";
|
|
16
|
+
import { simulatingFrom } from "./simulating.js";
|
|
17
|
+
import { testingFrom } from "./testing.js";
|
|
18
|
+
const USAGE = "usage: pinecall ui [agent]";
|
|
19
|
+
// A checkout runs everything else from its sources; the console is the one thing that has to be
|
|
20
|
+
// bundled first, because a browser reads no TypeScript. The sentence names the command.
|
|
21
|
+
const NOT_BUILT = "the console is not built: run scripts/build once, then pinecall ui";
|
|
22
|
+
export const group = {
|
|
23
|
+
purpose: "the console: this gateway's agents, their calls and logs as they happen, evals, and a page to talk",
|
|
24
|
+
usage: `${USAGE}
|
|
25
|
+
|
|
26
|
+
Opens the console on this gateway, landing on the agent of this directory — the class in
|
|
27
|
+
${DEFAULT_AGENTS[0]} — or on the agent named, or on the list of every agent the gateway holds when
|
|
28
|
+
there is neither. The console is served on 127.0.0.1 for as long as the command runs and opened
|
|
29
|
+
in this machine's browser: Talk joins the agent's room with the browser's microphone, Calls
|
|
30
|
+
follows every call as it happens, Sessions reads the finished ones, Evals and Pipeline read
|
|
31
|
+
their doors. Ctrl-C here closes the port with the command.
|
|
32
|
+
|
|
33
|
+
The key never reaches the browser: this process signs every request the console makes, under a
|
|
34
|
+
URL only it printed. Runs where a browser is — over ssh or with no display it says so and exits 2.`,
|
|
35
|
+
run: ui,
|
|
36
|
+
};
|
|
37
|
+
/** Serve, open, wait, close. The org key is read once and spent only by the server, never printed. */
|
|
38
|
+
export async function ui(argv, how = {}) {
|
|
39
|
+
const out = how.out ?? process.stdout;
|
|
40
|
+
const err = how.err ?? process.stderr;
|
|
41
|
+
const env = how.env ?? process.env;
|
|
42
|
+
if (argv[0]?.startsWith("-")) {
|
|
43
|
+
out.write(`${USAGE}\n`);
|
|
44
|
+
return 2;
|
|
45
|
+
}
|
|
46
|
+
const door = theDoor(env, err);
|
|
47
|
+
if (door === undefined)
|
|
48
|
+
return 2;
|
|
49
|
+
const why = headless(env);
|
|
50
|
+
if (why !== null) {
|
|
51
|
+
err.write(`ui needs a browser on this machine and ${why}: run it where the screen is\n`);
|
|
52
|
+
return 2;
|
|
53
|
+
}
|
|
54
|
+
const here = await agentOfThisDirectory();
|
|
55
|
+
const agent = argv[0] ?? here;
|
|
56
|
+
const files = how.files ?? consoleFiles();
|
|
57
|
+
if (!existsSync(files)) {
|
|
58
|
+
err.write(`${NOT_BUILT}\n`);
|
|
59
|
+
return 2;
|
|
60
|
+
}
|
|
61
|
+
// A simulation or a suite started from the page mounts the class of THIS directory in this
|
|
62
|
+
// process and prints here, exactly as `pinecall simulate` and `pinecall test` would; the page
|
|
63
|
+
// watches the call's log, or the run's row.
|
|
64
|
+
const chatting = chattingFrom(door, here, out);
|
|
65
|
+
const served = await LocalConsole.open(door, files, ownDoors({
|
|
66
|
+
simulating: simulatingFrom(door, here, out),
|
|
67
|
+
testing: testingFrom(door, here, out),
|
|
68
|
+
chatting,
|
|
69
|
+
knowing: knowingFrom(door, here),
|
|
70
|
+
remembering: rememberingFrom(door, here),
|
|
71
|
+
promoting: promotingFrom(door, here, out),
|
|
72
|
+
drifting: driftingFrom(door),
|
|
73
|
+
reproducing: reproducingFrom(),
|
|
74
|
+
}));
|
|
75
|
+
const at = agent === null ? served.url : served.at(`a/${agent}`);
|
|
76
|
+
// Which gateway and which of the four places the key came from: the one line that answers
|
|
77
|
+
// "why is it talking to that box" before anybody has to grep for an exported name.
|
|
78
|
+
out.write(`${doorLine(door)}\n`);
|
|
79
|
+
out.write(`${agent ?? "console"} · ${door.url} · ${at}\n`);
|
|
80
|
+
(how.open ?? openInBrowser)(at);
|
|
81
|
+
const hungUp = interrupted();
|
|
82
|
+
try {
|
|
83
|
+
await hungUp.happened;
|
|
84
|
+
}
|
|
85
|
+
finally {
|
|
86
|
+
hungUp.stop();
|
|
87
|
+
await chatting.close();
|
|
88
|
+
await served.close();
|
|
89
|
+
}
|
|
90
|
+
return 0;
|
|
91
|
+
}
|
|
92
|
+
// Named by the same rule `run` registers it under, read from the same file, so the two verbs never
|
|
93
|
+
// The console is a browser program inside this package: its source is src/cli/ui/console and vite
|
|
94
|
+
// writes its build to dist/cli/ui/console, which is what `files` publishes. So from the compiled
|
|
95
|
+
// verb the page is the sibling directory, and from the source under a loader it is the same path
|
|
96
|
+
// in dist — one of the two exists, and a tree where neither does was never built.
|
|
97
|
+
// Beside this module sits `console/` twice over: in the published package it is the BUILT console,
|
|
98
|
+
// and in a checkout it is the SOURCE, whose index.html points at `main.tsx` — TypeScript, which no
|
|
99
|
+
// browser runs, and which served a blank page for as long as the check was `existsSync` alone.
|
|
100
|
+
// What tells them apart is that source file, so that is what is asked about.
|
|
101
|
+
export function consoleFiles() {
|
|
102
|
+
const beside = fileURLToPath(new URL("console/", import.meta.url));
|
|
103
|
+
if (existsSync(beside) && !existsSync(fileURLToPath(new URL("console/main.tsx", import.meta.url)))) {
|
|
104
|
+
return beside;
|
|
105
|
+
}
|
|
106
|
+
return fileURLToPath(new URL("../../../dist/cli/ui/console/", import.meta.url));
|
|
107
|
+
}
|
|
108
|
+
/** Ctrl-C, as a promise that resolves once, and the handle that unhooks it. */
|
|
109
|
+
function interrupted() {
|
|
110
|
+
let hungUp = () => undefined;
|
|
111
|
+
const happened = new Promise((resolve) => {
|
|
112
|
+
hungUp = () => resolve();
|
|
113
|
+
process.once("SIGINT", hungUp);
|
|
114
|
+
});
|
|
115
|
+
return { happened, stop: () => process.off("SIGINT", hungUp) };
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/ui/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/** The console's own door to the knowledge base: this directory's documents pushed, and its golden asked. */
|
|
2
|
+
import type { KnowledgePushed, KnowledgeScore } from "@pinecall/protocol";
|
|
3
|
+
import type { Door } from "../testing/gateway.js";
|
|
4
|
+
/** What this directory has to push: where the documents are, how many, and whether a golden sits beside them. */
|
|
5
|
+
export interface Roster {
|
|
6
|
+
agent: string | null;
|
|
7
|
+
/** The base the class names — its slug — or nothing when there is no class here. */
|
|
8
|
+
base: string | null;
|
|
9
|
+
directory: string | null;
|
|
10
|
+
files: number;
|
|
11
|
+
golden: string | null;
|
|
12
|
+
questions: number;
|
|
13
|
+
}
|
|
14
|
+
/** What the server needs from the knowledge door, and nothing of how it reads a directory. */
|
|
15
|
+
export interface Knowing {
|
|
16
|
+
roster(): Promise<Roster>;
|
|
17
|
+
push(asked: unknown): Promise<KnowledgePushed & {
|
|
18
|
+
files: number;
|
|
19
|
+
}>;
|
|
20
|
+
measure(asked: unknown): Promise<KnowledgeScore>;
|
|
21
|
+
}
|
|
22
|
+
/** Where the documents and the golden of this directory are, read off the class once. */
|
|
23
|
+
export interface Here {
|
|
24
|
+
agent: string | null;
|
|
25
|
+
directory: string | null;
|
|
26
|
+
golden: string | null;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* One `Knowing` for the life of a `pinecall run`. Pushing a base is reading files off this
|
|
30
|
+
* machine's disk, which only the process standing in the agent's directory can do — the same
|
|
31
|
+
* `knowledge/docs` and `knowledge/golden.json` `pinecall knowledge` reads, through the same two
|
|
32
|
+
* doors of the gateway. Listing and dropping a base are the gateway's own and the page asks it
|
|
33
|
+
* directly; nothing of that passes through here.
|
|
34
|
+
*/
|
|
35
|
+
export declare function knowingFrom(door: Door, agent: string | null, here?: () => Promise<Here>): Knowing;
|
|
36
|
+
//# sourceMappingURL=knowing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knowing.d.ts","sourceRoot":"","sources":["../../../src/cli/ui/knowing.ts"],"names":[],"mappings":"AAAA,6GAA6G;AAK7G,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAgB1E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAIlD,iHAAiH;AACjH,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,oFAAoF;IACpF,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,8FAA8F;AAC9F,MAAM,WAAW,OAAO;IACtB,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1B,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,eAAe,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnE,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CAClD;AAED,yFAAyF;AACzF,MAAM,WAAW,IAAI;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAOD;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,GAAE,MAAM,OAAO,CAAC,IAAI,CAAgB,GAAG,OAAO,CAsC/G"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/** The console's own door to the knowledge base: this directory's documents pushed, and its golden asked. */
|
|
2
|
+
import { existsSync, statSync } from "node:fs";
|
|
3
|
+
import { dirname, join, resolve } from "node:path";
|
|
4
|
+
import { slugOf } from "../../runtime/connect.js";
|
|
5
|
+
import { AN_EMPTY_GOLDEN, DEFAULT_DIR, DEFAULT_GOLDEN, markdownUnder, NO_DIRECTORY, NO_GOLDEN, NO_MARKDOWN, pushedTo, scoredOn, theQuestionsIn, } from "../knowledge.js";
|
|
6
|
+
import { load } from "../load.js";
|
|
7
|
+
import { anObject, aString, maybeNumber, someWords } from "./asked.js";
|
|
8
|
+
import { Refusal } from "./refusal.js";
|
|
9
|
+
const NOT_THIS_DIRECTORY = (asked, here) => here === null
|
|
10
|
+
? `no agent class in this directory: run \`pinecall run\` where ${asked}'s agent.tsx is`
|
|
11
|
+
: `this process runs in ${here}'s directory: to push ${asked}'s knowledge, run \`pinecall run\` there`;
|
|
12
|
+
/**
|
|
13
|
+
* One `Knowing` for the life of a `pinecall run`. Pushing a base is reading files off this
|
|
14
|
+
* machine's disk, which only the process standing in the agent's directory can do — the same
|
|
15
|
+
* `knowledge/docs` and `knowledge/golden.json` `pinecall knowledge` reads, through the same two
|
|
16
|
+
* doors of the gateway. Listing and dropping a base are the gateway's own and the page asks it
|
|
17
|
+
* directly; nothing of that passes through here.
|
|
18
|
+
*/
|
|
19
|
+
export function knowingFrom(door, agent, here = theDirectory) {
|
|
20
|
+
return {
|
|
21
|
+
async roster() {
|
|
22
|
+
const found = await here();
|
|
23
|
+
const files = found.directory === null ? [] : documents(found.directory);
|
|
24
|
+
const questions = found.golden === null || !existsSync(found.golden) ? null : theQuestionsIn(found.golden);
|
|
25
|
+
return {
|
|
26
|
+
agent: found.agent,
|
|
27
|
+
base: found.agent,
|
|
28
|
+
directory: found.directory,
|
|
29
|
+
files: files.length,
|
|
30
|
+
golden: found.golden !== null && existsSync(found.golden) ? found.golden : null,
|
|
31
|
+
questions: questions?.length ?? 0,
|
|
32
|
+
};
|
|
33
|
+
},
|
|
34
|
+
async push(asked) {
|
|
35
|
+
const given = anObject(asked, "a push");
|
|
36
|
+
const found = await mine(aString(given, "agent"), here);
|
|
37
|
+
const base = someWords(given, "base") ?? found.agent;
|
|
38
|
+
const directory = found.directory;
|
|
39
|
+
if (!existsSync(directory) || !statSync(directory).isDirectory())
|
|
40
|
+
throw new Refusal(404, NO_DIRECTORY(directory));
|
|
41
|
+
const files = documents(directory);
|
|
42
|
+
if (files.length === 0)
|
|
43
|
+
throw new Refusal(422, NO_MARKDOWN(directory));
|
|
44
|
+
return { ...(await pushedTo(door, base, files)), files: files.length };
|
|
45
|
+
},
|
|
46
|
+
async measure(asked) {
|
|
47
|
+
const given = anObject(asked, "a golden");
|
|
48
|
+
const found = await mine(aString(given, "agent"), here);
|
|
49
|
+
const base = someWords(given, "base") ?? found.agent;
|
|
50
|
+
const golden = found.golden;
|
|
51
|
+
if (!existsSync(golden))
|
|
52
|
+
throw new Refusal(404, NO_GOLDEN(golden));
|
|
53
|
+
const questions = theQuestionsIn(golden);
|
|
54
|
+
if (questions === null)
|
|
55
|
+
throw new Refusal(422, AN_EMPTY_GOLDEN(golden));
|
|
56
|
+
return await scoredOn(door, base, questions, maybeNumber(given, "k", 1, 100));
|
|
57
|
+
},
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
// Both writing verbs are for the class of THIS directory: the page may be open on any agent the
|
|
61
|
+
// gateway holds, and the files are only ever here.
|
|
62
|
+
async function mine(asked, here) {
|
|
63
|
+
const found = await here();
|
|
64
|
+
if (found.agent !== asked || found.directory === null)
|
|
65
|
+
throw new Refusal(409, NOT_THIS_DIRECTORY(asked, found.agent));
|
|
66
|
+
return found;
|
|
67
|
+
}
|
|
68
|
+
function documents(directory) {
|
|
69
|
+
return existsSync(directory) && statSync(directory).isDirectory() ? markdownUnder(directory) : [];
|
|
70
|
+
}
|
|
71
|
+
/** The class of this directory and the two paths beside it, or nothing at all when there is none. */
|
|
72
|
+
async function theDirectory() {
|
|
73
|
+
try {
|
|
74
|
+
const loaded = await load();
|
|
75
|
+
const beside = dirname(loaded.file);
|
|
76
|
+
return {
|
|
77
|
+
agent: slugOf(loaded.ctor),
|
|
78
|
+
directory: resolve(join(beside, DEFAULT_DIR)),
|
|
79
|
+
golden: resolve(join(beside, DEFAULT_GOLDEN)),
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
return { agent: null, directory: null, golden: null };
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=knowing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knowing.js","sourceRoot":"","sources":["../../../src/cli/ui/knowing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/** The console's own door to `runs promote`: one real call written down as a golden candidate, here. */
|
|
2
|
+
import type { Golden } from "../testing/goldens.js";
|
|
3
|
+
import { type Door } from "../testing/gateway.js";
|
|
4
|
+
/** What comes back: where the file landed, the golden itself, and what is still a person's to decide. */
|
|
5
|
+
export interface Promoted {
|
|
6
|
+
path: string;
|
|
7
|
+
candidate: Golden;
|
|
8
|
+
notes: string[];
|
|
9
|
+
}
|
|
10
|
+
/** What the server needs from the promote door. */
|
|
11
|
+
export interface Promoting {
|
|
12
|
+
/** Where candidates land in this directory, so the page can say it before anybody presses. */
|
|
13
|
+
roster(): Promise<{
|
|
14
|
+
agent: string | null;
|
|
15
|
+
out: string;
|
|
16
|
+
}>;
|
|
17
|
+
promote(asked: unknown): Promise<Promoted>;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* One `Promoting` for the life of a `pinecall run`. A promotion WRITES A FILE — `test/candidates`
|
|
21
|
+
* beside this directory's goldens — which is why it is a door of this process and not of the
|
|
22
|
+
* gateway: the call is the gateway's, the file is this machine's. It lands as a CANDIDATE with
|
|
23
|
+
* `promoted_from` on it, and a person edits it before it counts as a golden.
|
|
24
|
+
*/
|
|
25
|
+
export declare function promotingFrom(door: Door, agent: string | null, out: NodeJS.WritableStream): Promoting;
|
|
26
|
+
//# sourceMappingURL=promoting.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promoting.d.ts","sourceRoot":"","sources":["../../../src/cli/ui/promoting.ts"],"names":[],"mappings":"AAAA,wGAAwG;AAExG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAW,KAAK,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAK3D,yGAAyG;AACzG,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,mDAAmD;AACnD,MAAM,WAAW,SAAS;IACxB,8FAA8F;IAC9F,MAAM,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzD,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC5C;AAID;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,cAAc,GAAG,SAAS,CA4BrG"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/** The console's own door to `runs promote`: one real call written down as a golden candidate, here. */
|
|
2
|
+
import { Refused } from "../testing/gateway.js";
|
|
3
|
+
import { CANDIDATES, promotedTo } from "../runs/candidate.js";
|
|
4
|
+
import { anObject, aString, maybeNumber, someWords } from "./asked.js";
|
|
5
|
+
import { Refusal } from "./refusal.js";
|
|
6
|
+
const NO_CLASS = "no agent class in this directory: a candidate is written beside the goldens it will join";
|
|
7
|
+
/**
|
|
8
|
+
* One `Promoting` for the life of a `pinecall run`. A promotion WRITES A FILE — `test/candidates`
|
|
9
|
+
* beside this directory's goldens — which is why it is a door of this process and not of the
|
|
10
|
+
* gateway: the call is the gateway's, the file is this machine's. It lands as a CANDIDATE with
|
|
11
|
+
* `promoted_from` on it, and a person edits it before it counts as a golden.
|
|
12
|
+
*/
|
|
13
|
+
export function promotingFrom(door, agent, out) {
|
|
14
|
+
return {
|
|
15
|
+
async roster() {
|
|
16
|
+
return { agent, out: CANDIDATES };
|
|
17
|
+
},
|
|
18
|
+
async promote(asked) {
|
|
19
|
+
if (agent === null)
|
|
20
|
+
throw new Refusal(409, NO_CLASS);
|
|
21
|
+
const given = anObject(asked, "a promotion");
|
|
22
|
+
const call = aString(given, "call");
|
|
23
|
+
const name = someWords(given, "name");
|
|
24
|
+
try {
|
|
25
|
+
const written = await promotedTo(door, call, {
|
|
26
|
+
...(name === undefined ? {} : { name }),
|
|
27
|
+
out: CANDIDATES,
|
|
28
|
+
fromSeq: maybeNumber(given, "from_seq", 0, Number.MAX_SAFE_INTEGER) ?? 0,
|
|
29
|
+
});
|
|
30
|
+
out.write(`${written.path} promoted from ${call}\n`);
|
|
31
|
+
return written;
|
|
32
|
+
}
|
|
33
|
+
catch (refused) {
|
|
34
|
+
// The gateway refusing — another org's call, a door that is down — keeps its own status
|
|
35
|
+
// and sentence (ui/refusal.ts). What is a 422 HERE is this door's own two: a call with no
|
|
36
|
+
// log, and a call nobody judged, which has no verdict to write an `expect` from.
|
|
37
|
+
if (refused instanceof Refused)
|
|
38
|
+
throw refused;
|
|
39
|
+
throw new Refusal(422, refused instanceof Error ? refused.message : String(refused));
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=promoting.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promoting.js","sourceRoot":"","sources":["../../../src/cli/ui/promoting.ts"],"names":[],"mappings":"AAAA,wGAAwG;AAGxG,OAAO,EAAE,OAAO,EAAa,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAgBvC,MAAM,QAAQ,GAAG,0FAA0F,CAAC;AAE5G;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,IAAU,EAAE,KAAoB,EAAE,GAA0B;IACxF,OAAO;QACL,KAAK,CAAC,MAAM;YACV,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC;QACpC,CAAC;QAED,KAAK,CAAC,OAAO,CAAC,KAAc;YAC1B,IAAI,KAAK,KAAK,IAAI;gBAAE,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YACrD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;YAC7C,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACpC,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACtC,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE;oBAC3C,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;oBACvC,GAAG,EAAE,UAAU;oBACf,OAAO,EAAE,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC;iBACzE,CAAC,CAAC;gBACH,GAAG,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,mBAAmB,IAAI,IAAI,CAAC,CAAC;gBACtD,OAAO,OAAO,CAAC;YACjB,CAAC;YAAC,OAAO,OAAO,EAAE,CAAC;gBACjB,wFAAwF;gBACxF,0FAA0F;gBAC1F,iFAAiF;gBACjF,IAAI,OAAO,YAAY,OAAO;oBAAE,MAAM,OAAO,CAAC;gBAC9C,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,OAAO,YAAY,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;YACvF,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/** A refusal from one of the console's own doors: a sentence for the page, and the status it travels under. */
|
|
2
|
+
/** Thrown by a door of this process; the server writes it as `{detail}` under `status`, as FastAPI would. */
|
|
3
|
+
export declare class Refusal extends Error {
|
|
4
|
+
readonly status: number;
|
|
5
|
+
readonly name = "Refusal";
|
|
6
|
+
constructor(status: number, message: string);
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* What went wrong, as the page reads it. Three things end up here and they are not the same: this
|
|
10
|
+
* process refusing (a Refusal, with the status it chose), the GATEWAY refusing this process (its
|
|
11
|
+
* own status and its own sentence, which names the fix and which nothing here knows better than),
|
|
12
|
+
* and anything else, which is a 500 and a message.
|
|
13
|
+
*/
|
|
14
|
+
export declare function refusedAs(failed: unknown): {
|
|
15
|
+
status: number;
|
|
16
|
+
detail: string;
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=refusal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refusal.d.ts","sourceRoot":"","sources":["../../../src/cli/ui/refusal.ts"],"names":[],"mappings":"AAAA,+GAA+G;AAK/G,6GAA6G;AAC7G,qBAAa,OAAQ,SAAQ,KAAK;IAI9B,QAAQ,CAAC,MAAM,EAAE,MAAM;IAHzB,SAAkB,IAAI,aAAa;IAEnC,YACW,MAAM,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,EAGhB;CACF;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAI7E"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/** A refusal from one of the console's own doors: a sentence for the page, and the status it travels under. */
|
|
2
|
+
import { Refused } from "../testing/gateway.js";
|
|
3
|
+
import { refusal } from "../whoami.js";
|
|
4
|
+
/** Thrown by a door of this process; the server writes it as `{detail}` under `status`, as FastAPI would. */
|
|
5
|
+
export class Refusal extends Error {
|
|
6
|
+
status;
|
|
7
|
+
name = "Refusal";
|
|
8
|
+
constructor(status, message) {
|
|
9
|
+
super(message);
|
|
10
|
+
this.status = status;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* What went wrong, as the page reads it. Three things end up here and they are not the same: this
|
|
15
|
+
* process refusing (a Refusal, with the status it chose), the GATEWAY refusing this process (its
|
|
16
|
+
* own status and its own sentence, which names the fix and which nothing here knows better than),
|
|
17
|
+
* and anything else, which is a 500 and a message.
|
|
18
|
+
*/
|
|
19
|
+
export function refusedAs(failed) {
|
|
20
|
+
if (failed instanceof Refusal)
|
|
21
|
+
return { status: failed.status, detail: failed.message };
|
|
22
|
+
if (failed instanceof Refused)
|
|
23
|
+
return { status: failed.status, detail: refusal(failed) };
|
|
24
|
+
return { status: 500, detail: failed instanceof Error ? failed.message : String(failed) };
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=refusal.js.map
|