@cursor/july 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +290 -0
- package/LICENSE.md +3 -0
- package/README.md +1233 -0
- package/dist/ab.d.ts +290 -0
- package/dist/ab.d.ts.map +1 -0
- package/dist/ab.js +386 -0
- package/dist/bin/agent-serve.d.ts +15 -0
- package/dist/bin/agent-serve.d.ts.map +1 -0
- package/dist/bin/agent-serve.js +754 -0
- package/dist/channels/github/api.d.ts +101 -0
- package/dist/channels/github/api.d.ts.map +1 -0
- package/dist/channels/github/api.js +229 -0
- package/dist/channels/github/auth.d.ts +67 -0
- package/dist/channels/github/auth.d.ts.map +1 -0
- package/dist/channels/github/auth.js +239 -0
- package/dist/channels/github/binding.d.ts +73 -0
- package/dist/channels/github/binding.d.ts.map +1 -0
- package/dist/channels/github/binding.js +114 -0
- package/dist/channels/github/defaults.d.ts +24 -0
- package/dist/channels/github/defaults.d.ts.map +1 -0
- package/dist/channels/github/defaults.js +100 -0
- package/dist/channels/github/events.d.ts +18 -0
- package/dist/channels/github/events.d.ts.map +1 -0
- package/dist/channels/github/events.js +59 -0
- package/dist/channels/github/forward.d.ts +137 -0
- package/dist/channels/github/forward.d.ts.map +1 -0
- package/dist/channels/github/forward.js +271 -0
- package/dist/channels/github/github-channel.d.ts +127 -0
- package/dist/channels/github/github-channel.d.ts.map +1 -0
- package/dist/channels/github/github-channel.js +1688 -0
- package/dist/channels/github/index.d.ts +52 -0
- package/dist/channels/github/index.d.ts.map +1 -0
- package/dist/channels/github/index.js +51 -0
- package/dist/channels/github/replay.d.ts +115 -0
- package/dist/channels/github/replay.d.ts.map +1 -0
- package/dist/channels/github/replay.js +282 -0
- package/dist/channels/github/state.d.ts +26 -0
- package/dist/channels/github/state.d.ts.map +1 -0
- package/dist/channels/github/state.js +50 -0
- package/dist/channels/github/types.d.ts +385 -0
- package/dist/channels/github/types.d.ts.map +1 -0
- package/dist/channels/github/types.js +1 -0
- package/dist/channels/slack/api.d.ts +117 -0
- package/dist/channels/slack/api.d.ts.map +1 -0
- package/dist/channels/slack/api.js +437 -0
- package/dist/channels/slack/approvals.d.ts +32 -0
- package/dist/channels/slack/approvals.d.ts.map +1 -0
- package/dist/channels/slack/approvals.js +157 -0
- package/dist/channels/slack/assistant.d.ts +23 -0
- package/dist/channels/slack/assistant.d.ts.map +1 -0
- package/dist/channels/slack/assistant.js +67 -0
- package/dist/channels/slack/auth.d.ts +40 -0
- package/dist/channels/slack/auth.d.ts.map +1 -0
- package/dist/channels/slack/auth.js +71 -0
- package/dist/channels/slack/channel-watch.d.ts +46 -0
- package/dist/channels/slack/channel-watch.d.ts.map +1 -0
- package/dist/channels/slack/channel-watch.js +180 -0
- package/dist/channels/slack/constants.d.ts +17 -0
- package/dist/channels/slack/constants.d.ts.map +1 -0
- package/dist/channels/slack/constants.js +27 -0
- package/dist/channels/slack/credentials.d.ts +35 -0
- package/dist/channels/slack/credentials.d.ts.map +1 -0
- package/dist/channels/slack/credentials.js +88 -0
- package/dist/channels/slack/cursor-account.d.ts +76 -0
- package/dist/channels/slack/cursor-account.d.ts.map +1 -0
- package/dist/channels/slack/cursor-account.js +88 -0
- package/dist/channels/slack/defaults.d.ts +32 -0
- package/dist/channels/slack/defaults.d.ts.map +1 -0
- package/dist/channels/slack/defaults.js +380 -0
- package/dist/channels/slack/dispatch.d.ts +43 -0
- package/dist/channels/slack/dispatch.d.ts.map +1 -0
- package/dist/channels/slack/dispatch.js +185 -0
- package/dist/channels/slack/doctor.d.ts +24 -0
- package/dist/channels/slack/doctor.d.ts.map +1 -0
- package/dist/channels/slack/doctor.js +115 -0
- package/dist/channels/slack/event-id-dedupe.d.ts +10 -0
- package/dist/channels/slack/event-id-dedupe.d.ts.map +1 -0
- package/dist/channels/slack/event-id-dedupe.js +23 -0
- package/dist/channels/slack/inbound.d.ts +41 -0
- package/dist/channels/slack/inbound.d.ts.map +1 -0
- package/dist/channels/slack/inbound.js +166 -0
- package/dist/channels/slack/index.d.ts +45 -0
- package/dist/channels/slack/index.d.ts.map +1 -0
- package/dist/channels/slack/index.js +44 -0
- package/dist/channels/slack/init.d.ts +32 -0
- package/dist/channels/slack/init.d.ts.map +1 -0
- package/dist/channels/slack/init.js +82 -0
- package/dist/channels/slack/interactive.d.ts +19 -0
- package/dist/channels/slack/interactive.d.ts.map +1 -0
- package/dist/channels/slack/interactive.js +142 -0
- package/dist/channels/slack/links.d.ts +10 -0
- package/dist/channels/slack/links.d.ts.map +1 -0
- package/dist/channels/slack/links.js +19 -0
- package/dist/channels/slack/live-delivery.d.ts +75 -0
- package/dist/channels/slack/live-delivery.d.ts.map +1 -0
- package/dist/channels/slack/live-delivery.js +143 -0
- package/dist/channels/slack/log.d.ts +25 -0
- package/dist/channels/slack/log.d.ts.map +1 -0
- package/dist/channels/slack/log.js +47 -0
- package/dist/channels/slack/manifest.d.ts +57 -0
- package/dist/channels/slack/manifest.d.ts.map +1 -0
- package/dist/channels/slack/manifest.js +110 -0
- package/dist/channels/slack/pr-ref.d.ts +18 -0
- package/dist/channels/slack/pr-ref.d.ts.map +1 -0
- package/dist/channels/slack/pr-ref.js +36 -0
- package/dist/channels/slack/setup.d.ts +14 -0
- package/dist/channels/slack/setup.d.ts.map +1 -0
- package/dist/channels/slack/setup.js +86 -0
- package/dist/channels/slack/slack-channel.d.ts +15 -0
- package/dist/channels/slack/slack-channel.d.ts.map +1 -0
- package/dist/channels/slack/slack-channel.js +281 -0
- package/dist/channels/slack/socket-mode.d.ts +26 -0
- package/dist/channels/slack/socket-mode.d.ts.map +1 -0
- package/dist/channels/slack/socket-mode.js +116 -0
- package/dist/channels/slack/stream.d.ts +26 -0
- package/dist/channels/slack/stream.d.ts.map +1 -0
- package/dist/channels/slack/stream.js +39 -0
- package/dist/channels/slack/tool-approval-events.d.ts +33 -0
- package/dist/channels/slack/tool-approval-events.d.ts.map +1 -0
- package/dist/channels/slack/tool-approval-events.js +129 -0
- package/dist/channels/slack/types.d.ts +326 -0
- package/dist/channels/slack/types.d.ts.map +1 -0
- package/dist/channels/slack/types.js +4 -0
- package/dist/channels.d.ts +116 -0
- package/dist/channels.d.ts.map +1 -0
- package/dist/channels.js +294 -0
- package/dist/connections.d.ts +75 -0
- package/dist/connections.d.ts.map +1 -0
- package/dist/connections.js +75 -0
- package/dist/docs/404.html +22 -0
- package/dist/docs/ab.html +87 -0
- package/dist/docs/assets/ab.md.COdXkces.js +63 -0
- package/dist/docs/assets/ab.md.COdXkces.lean.js +1 -0
- package/dist/docs/assets/app.DqfFEmJd.js +1 -0
- package/dist/docs/assets/building-with-agents.md.CJCtZCyi.js +13 -0
- package/dist/docs/assets/building-with-agents.md.CJCtZCyi.lean.js +1 -0
- package/dist/docs/assets/chunks/@localSearchIndexroot.CcVk1uKq.js +1 -0
- package/dist/docs/assets/chunks/VPLocalSearchBox.BaLEdS15.js +9 -0
- package/dist/docs/assets/chunks/framework.CAZyNGu9.js +19 -0
- package/dist/docs/assets/chunks/theme.CZRvu_0q.js +2 -0
- package/dist/docs/assets/concepts.md.Cfb9b-k1.js +4 -0
- package/dist/docs/assets/concepts.md.Cfb9b-k1.lean.js +1 -0
- package/dist/docs/assets/deployment.md.Dx1TYNk5.js +14 -0
- package/dist/docs/assets/deployment.md.Dx1TYNk5.lean.js +1 -0
- package/dist/docs/assets/evals.md.DPZ_MAnI.js +85 -0
- package/dist/docs/assets/evals.md.DPZ_MAnI.lean.js +1 -0
- package/dist/docs/assets/guides_agent-to-agent.md.CrtrsySy.js +10 -0
- package/dist/docs/assets/guides_agent-to-agent.md.CrtrsySy.lean.js +1 -0
- package/dist/docs/assets/guides_cloud-runtime.md.CYlNMTNp.js +9 -0
- package/dist/docs/assets/guides_cloud-runtime.md.CYlNMTNp.lean.js +1 -0
- package/dist/docs/assets/guides_github.md.DwbKhCeS.js +20 -0
- package/dist/docs/assets/guides_github.md.DwbKhCeS.lean.js +1 -0
- package/dist/docs/assets/guides_human-in-the-loop.md.Dvuctx7s.js +28 -0
- package/dist/docs/assets/guides_human-in-the-loop.md.Dvuctx7s.lean.js +1 -0
- package/dist/docs/assets/guides_slack.md.bv41fHfW.js +37 -0
- package/dist/docs/assets/guides_slack.md.bv41fHfW.lean.js +1 -0
- package/dist/docs/assets/guides_webhooks.md.hFTik3lf.js +50 -0
- package/dist/docs/assets/guides_webhooks.md.hFTik3lf.lean.js +1 -0
- package/dist/docs/assets/hillclimbing.md.DHNast08.js +4 -0
- package/dist/docs/assets/hillclimbing.md.DHNast08.lean.js +1 -0
- package/dist/docs/assets/index.md.BPKcj5AI.js +20 -0
- package/dist/docs/assets/index.md.BPKcj5AI.lean.js +1 -0
- package/dist/docs/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 +0 -0
- package/dist/docs/assets/inter-italic-cyrillic.By2_1cv3.woff2 +0 -0
- package/dist/docs/assets/inter-italic-greek-ext.1u6EdAuj.woff2 +0 -0
- package/dist/docs/assets/inter-italic-greek.DJ8dCoTZ.woff2 +0 -0
- package/dist/docs/assets/inter-italic-latin-ext.CN1xVJS-.woff2 +0 -0
- package/dist/docs/assets/inter-italic-latin.C2AdPX0b.woff2 +0 -0
- package/dist/docs/assets/inter-italic-vietnamese.BSbpV94h.woff2 +0 -0
- package/dist/docs/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 +0 -0
- package/dist/docs/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 +0 -0
- package/dist/docs/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 +0 -0
- package/dist/docs/assets/inter-roman-greek.BBVDIX6e.woff2 +0 -0
- package/dist/docs/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 +0 -0
- package/dist/docs/assets/inter-roman-latin.Di8DUHzh.woff2 +0 -0
- package/dist/docs/assets/inter-roman-vietnamese.BjW4sHH5.woff2 +0 -0
- package/dist/docs/assets/quickstart.md.tVPiGK_L.js +35 -0
- package/dist/docs/assets/quickstart.md.tVPiGK_L.lean.js +1 -0
- package/dist/docs/assets/reference_agent-config.md.Bpd7HQwf.js +34 -0
- package/dist/docs/assets/reference_agent-config.md.Bpd7HQwf.lean.js +1 -0
- package/dist/docs/assets/reference_channels.md.D7JTR03W.js +53 -0
- package/dist/docs/assets/reference_channels.md.D7JTR03W.lean.js +1 -0
- package/dist/docs/assets/reference_cli.md.DA730zCu.js +33 -0
- package/dist/docs/assets/reference_cli.md.DA730zCu.lean.js +1 -0
- package/dist/docs/assets/reference_connections.md.C3vNH_DE.js +26 -0
- package/dist/docs/assets/reference_connections.md.C3vNH_DE.lean.js +1 -0
- package/dist/docs/assets/reference_hooks.md.BCEc3MyM.js +12 -0
- package/dist/docs/assets/reference_hooks.md.BCEc3MyM.lean.js +1 -0
- package/dist/docs/assets/reference_http-api.md.DBAahtdz.js +11 -0
- package/dist/docs/assets/reference_http-api.md.DBAahtdz.lean.js +1 -0
- package/dist/docs/assets/reference_instructions.md.BC05LEQ8.js +12 -0
- package/dist/docs/assets/reference_instructions.md.BC05LEQ8.lean.js +1 -0
- package/dist/docs/assets/reference_playground.md.CPZhfYaO.js +1 -0
- package/dist/docs/assets/reference_playground.md.CPZhfYaO.lean.js +1 -0
- package/dist/docs/assets/reference_project-layout.md.Bd_CKtNS.js +31 -0
- package/dist/docs/assets/reference_project-layout.md.Bd_CKtNS.lean.js +1 -0
- package/dist/docs/assets/reference_schedules.md.D7qijxLk.js +82 -0
- package/dist/docs/assets/reference_schedules.md.D7qijxLk.lean.js +1 -0
- package/dist/docs/assets/reference_sessions.md.DdjWabnN.js +8 -0
- package/dist/docs/assets/reference_sessions.md.DdjWabnN.lean.js +1 -0
- package/dist/docs/assets/reference_skills.md.VQnlBT3Q.js +15 -0
- package/dist/docs/assets/reference_skills.md.VQnlBT3Q.lean.js +1 -0
- package/dist/docs/assets/reference_subagents.md.CIRAVcPK.js +10 -0
- package/dist/docs/assets/reference_subagents.md.CIRAVcPK.lean.js +1 -0
- package/dist/docs/assets/reference_tools.md.DF5kwlt0.js +46 -0
- package/dist/docs/assets/reference_tools.md.DF5kwlt0.lean.js +1 -0
- package/dist/docs/assets/scaffolding-agents.md.CyYfWGdc.js +1 -0
- package/dist/docs/assets/scaffolding-agents.md.CyYfWGdc.lean.js +1 -0
- package/dist/docs/assets/style.Bj-IXa5W.css +1 -0
- package/dist/docs/assets/troubleshooting.md.DkovjS7h.js +1 -0
- package/dist/docs/assets/troubleshooting.md.DkovjS7h.lean.js +1 -0
- package/dist/docs/building-with-agents.html +37 -0
- package/dist/docs/concepts.html +28 -0
- package/dist/docs/deployment.html +38 -0
- package/dist/docs/evals.html +109 -0
- package/dist/docs/guides/agent-to-agent.html +34 -0
- package/dist/docs/guides/cloud-runtime.html +33 -0
- package/dist/docs/guides/github.html +44 -0
- package/dist/docs/guides/human-in-the-loop.html +52 -0
- package/dist/docs/guides/slack.html +61 -0
- package/dist/docs/guides/webhooks.html +74 -0
- package/dist/docs/hashmap.json +1 -0
- package/dist/docs/hillclimbing.html +28 -0
- package/dist/docs/index.html +44 -0
- package/dist/docs/quickstart.html +59 -0
- package/dist/docs/reference/agent-config.html +58 -0
- package/dist/docs/reference/channels.html +77 -0
- package/dist/docs/reference/cli.html +57 -0
- package/dist/docs/reference/connections.html +50 -0
- package/dist/docs/reference/hooks.html +36 -0
- package/dist/docs/reference/http-api.html +35 -0
- package/dist/docs/reference/instructions.html +36 -0
- package/dist/docs/reference/playground.html +25 -0
- package/dist/docs/reference/project-layout.html +55 -0
- package/dist/docs/reference/schedules.html +106 -0
- package/dist/docs/reference/sessions.html +32 -0
- package/dist/docs/reference/skills.html +39 -0
- package/dist/docs/reference/subagents.html +34 -0
- package/dist/docs/reference/tools.html +70 -0
- package/dist/docs/scaffolding-agents.html +25 -0
- package/dist/docs/troubleshooting.html +25 -0
- package/dist/docs/vp-icons.css +0 -0
- package/dist/evals.d.ts +312 -0
- package/dist/evals.d.ts.map +1 -0
- package/dist/evals.js +254 -0
- package/dist/hooks.d.ts +23 -0
- package/dist/hooks.d.ts.map +1 -0
- package/dist/hooks.js +23 -0
- package/dist/index.d.ts +71 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +101 -0
- package/dist/internal/ab-collector.d.ts +42 -0
- package/dist/internal/ab-collector.d.ts.map +1 -0
- package/dist/internal/ab-collector.js +153 -0
- package/dist/internal/ab-fold.d.ts +36 -0
- package/dist/internal/ab-fold.d.ts.map +1 -0
- package/dist/internal/ab-fold.js +171 -0
- package/dist/internal/ab-snapshot.d.ts +70 -0
- package/dist/internal/ab-snapshot.d.ts.map +1 -0
- package/dist/internal/ab-snapshot.js +208 -0
- package/dist/internal/approval-gate.d.ts +34 -0
- package/dist/internal/approval-gate.d.ts.map +1 -0
- package/dist/internal/approval-gate.js +85 -0
- package/dist/internal/auth.d.ts +8 -0
- package/dist/internal/auth.d.ts.map +1 -0
- package/dist/internal/auth.js +27 -0
- package/dist/internal/authored-alias-hooks.d.ts +31 -0
- package/dist/internal/authored-alias-hooks.d.ts.map +1 -0
- package/dist/internal/authored-alias-hooks.js +43 -0
- package/dist/internal/authored-loaders.d.ts +25 -0
- package/dist/internal/authored-loaders.d.ts.map +1 -0
- package/dist/internal/authored-loaders.js +129 -0
- package/dist/internal/bounded-int.d.ts +11 -0
- package/dist/internal/bounded-int.d.ts.map +1 -0
- package/dist/internal/bounded-int.js +13 -0
- package/dist/internal/brand.d.ts +6 -0
- package/dist/internal/brand.d.ts.map +1 -0
- package/dist/internal/brand.js +17 -0
- package/dist/internal/chat-client.d.ts +19 -0
- package/dist/internal/chat-client.d.ts.map +1 -0
- package/dist/internal/chat-client.js +327 -0
- package/dist/internal/cli-ax.d.ts +58 -0
- package/dist/internal/cli-ax.d.ts.map +1 -0
- package/dist/internal/cli-ax.js +345 -0
- package/dist/internal/cli-cursor.d.ts +20 -0
- package/dist/internal/cli-cursor.d.ts.map +1 -0
- package/dist/internal/cli-cursor.js +227 -0
- package/dist/internal/cli-github.d.ts +47 -0
- package/dist/internal/cli-github.d.ts.map +1 -0
- package/dist/internal/cli-github.js +644 -0
- package/dist/internal/cli-slack.d.ts +18 -0
- package/dist/internal/cli-slack.d.ts.map +1 -0
- package/dist/internal/cli-slack.js +144 -0
- package/dist/internal/cloud-merge.d.ts +23 -0
- package/dist/internal/cloud-merge.d.ts.map +1 -0
- package/dist/internal/cloud-merge.js +28 -0
- package/dist/internal/cron.d.ts +17 -0
- package/dist/internal/cron.d.ts.map +1 -0
- package/dist/internal/cron.js +60 -0
- package/dist/internal/cursor/account-mcp.d.ts +95 -0
- package/dist/internal/cursor/account-mcp.d.ts.map +1 -0
- package/dist/internal/cursor/account-mcp.js +342 -0
- package/dist/internal/cursor/backend-client.d.ts +118 -0
- package/dist/internal/cursor/backend-client.d.ts.map +1 -0
- package/dist/internal/cursor/backend-client.js +477 -0
- package/dist/internal/cursor/credentials.d.ts +112 -0
- package/dist/internal/cursor/credentials.d.ts.map +1 -0
- package/dist/internal/cursor/credentials.js +329 -0
- package/dist/internal/cursor-event-relay.d.ts +111 -0
- package/dist/internal/cursor-event-relay.d.ts.map +1 -0
- package/dist/internal/cursor-event-relay.js +181 -0
- package/dist/internal/cursor-relay-core.d.ts +113 -0
- package/dist/internal/cursor-relay-core.d.ts.map +1 -0
- package/dist/internal/cursor-relay-core.js +364 -0
- package/dist/internal/cursor-slack-relay.d.ts +94 -0
- package/dist/internal/cursor-slack-relay.d.ts.map +1 -0
- package/dist/internal/cursor-slack-relay.js +171 -0
- package/dist/internal/describe-error.d.ts +3 -0
- package/dist/internal/describe-error.d.ts.map +1 -0
- package/dist/internal/describe-error.js +4 -0
- package/dist/internal/dev-mode.d.ts +13 -0
- package/dist/internal/dev-mode.d.ts.map +1 -0
- package/dist/internal/dev-mode.js +17 -0
- package/dist/internal/discovery.d.ts +55 -0
- package/dist/internal/discovery.d.ts.map +1 -0
- package/dist/internal/discovery.js +1427 -0
- package/dist/internal/distribution.d.ts +47 -0
- package/dist/internal/distribution.d.ts.map +1 -0
- package/dist/internal/distribution.js +82 -0
- package/dist/internal/docs-site.d.ts +28 -0
- package/dist/internal/docs-site.d.ts.map +1 -0
- package/dist/internal/docs-site.js +169 -0
- package/dist/internal/duration.d.ts +8 -0
- package/dist/internal/duration.d.ts.map +1 -0
- package/dist/internal/duration.js +35 -0
- package/dist/internal/eval-run-store.d.ts +81 -0
- package/dist/internal/eval-run-store.d.ts.map +1 -0
- package/dist/internal/eval-run-store.js +396 -0
- package/dist/internal/eval-runner.d.ts +76 -0
- package/dist/internal/eval-runner.d.ts.map +1 -0
- package/dist/internal/eval-runner.js +336 -0
- package/dist/internal/event-log.d.ts +51 -0
- package/dist/internal/event-log.d.ts.map +1 -0
- package/dist/internal/event-log.js +167 -0
- package/dist/internal/event-mapper.d.ts +46 -0
- package/dist/internal/event-mapper.d.ts.map +1 -0
- package/dist/internal/event-mapper.js +226 -0
- package/dist/internal/frontmatter.d.ts +12 -0
- package/dist/internal/frontmatter.d.ts.map +1 -0
- package/dist/internal/frontmatter.js +61 -0
- package/dist/internal/github-fanout.d.ts +32 -0
- package/dist/internal/github-fanout.d.ts.map +1 -0
- package/dist/internal/github-fanout.js +122 -0
- package/dist/internal/handleAgentServeTrigger.d.ts +59 -0
- package/dist/internal/handleAgentServeTrigger.d.ts.map +1 -0
- package/dist/internal/handleAgentServeTrigger.js +115 -0
- package/dist/internal/host-platforms.d.ts +40 -0
- package/dist/internal/host-platforms.d.ts.map +1 -0
- package/dist/internal/host-platforms.js +113 -0
- package/dist/internal/http-channel.d.ts +54 -0
- package/dist/internal/http-channel.d.ts.map +1 -0
- package/dist/internal/http-channel.js +382 -0
- package/dist/internal/ids.d.ts +19 -0
- package/dist/internal/ids.d.ts.map +1 -0
- package/dist/internal/ids.js +34 -0
- package/dist/internal/init-project.d.ts +22 -0
- package/dist/internal/init-project.d.ts.map +1 -0
- package/dist/internal/init-project.js +125 -0
- package/dist/internal/json-dir-store.d.ts +32 -0
- package/dist/internal/json-dir-store.d.ts.map +1 -0
- package/dist/internal/json-dir-store.js +100 -0
- package/dist/internal/json-schema.d.ts +18 -0
- package/dist/internal/json-schema.d.ts.map +1 -0
- package/dist/internal/json-schema.js +53 -0
- package/dist/internal/log-ring.d.ts +23 -0
- package/dist/internal/log-ring.d.ts.map +1 -0
- package/dist/internal/log-ring.js +42 -0
- package/dist/internal/map-pool.d.ts +6 -0
- package/dist/internal/map-pool.d.ts.map +1 -0
- package/dist/internal/map-pool.js +41 -0
- package/dist/internal/mcp-endpoint.d.ts +59 -0
- package/dist/internal/mcp-endpoint.d.ts.map +1 -0
- package/dist/internal/mcp-endpoint.js +355 -0
- package/dist/internal/mcp-host.d.ts +28 -0
- package/dist/internal/mcp-host.d.ts.map +1 -0
- package/dist/internal/mcp-host.js +162 -0
- package/dist/internal/net.d.ts +5 -0
- package/dist/internal/net.d.ts.map +1 -0
- package/dist/internal/net.js +30 -0
- package/dist/internal/peer-connections.d.ts +44 -0
- package/dist/internal/peer-connections.d.ts.map +1 -0
- package/dist/internal/peer-connections.js +67 -0
- package/dist/internal/playground/static.d.ts +35 -0
- package/dist/internal/playground/static.d.ts.map +1 -0
- package/dist/internal/playground/static.js +162 -0
- package/dist/internal/playground/toolchain.d.ts +57 -0
- package/dist/internal/playground/toolchain.d.ts.map +1 -0
- package/dist/internal/playground/toolchain.js +226 -0
- package/dist/internal/reminder-runner.d.ts +62 -0
- package/dist/internal/reminder-runner.d.ts.map +1 -0
- package/dist/internal/reminder-runner.js +582 -0
- package/dist/internal/reminder-schedule.d.ts +22 -0
- package/dist/internal/reminder-schedule.d.ts.map +1 -0
- package/dist/internal/reminder-schedule.js +82 -0
- package/dist/internal/reminder-store.d.ts +58 -0
- package/dist/internal/reminder-store.d.ts.map +1 -0
- package/dist/internal/reminder-store.js +106 -0
- package/dist/internal/resolved-connections.d.ts +41 -0
- package/dist/internal/resolved-connections.d.ts.map +1 -0
- package/dist/internal/resolved-connections.js +73 -0
- package/dist/internal/review-comments.d.ts +50 -0
- package/dist/internal/review-comments.d.ts.map +1 -0
- package/dist/internal/review-comments.js +194 -0
- package/dist/internal/router.d.ts +33 -0
- package/dist/internal/router.d.ts.map +1 -0
- package/dist/internal/router.js +93 -0
- package/dist/internal/run-client.d.ts +49 -0
- package/dist/internal/run-client.d.ts.map +1 -0
- package/dist/internal/run-client.js +208 -0
- package/dist/internal/schedule-runner.d.ts +31 -0
- package/dist/internal/schedule-runner.d.ts.map +1 -0
- package/dist/internal/schedule-runner.js +126 -0
- package/dist/internal/sdk-runner.d.ts +41 -0
- package/dist/internal/sdk-runner.d.ts.map +1 -0
- package/dist/internal/sdk-runner.js +221 -0
- package/dist/internal/server.d.ts +25 -0
- package/dist/internal/server.d.ts.map +1 -0
- package/dist/internal/server.js +1374 -0
- package/dist/internal/session-engine.d.ts +287 -0
- package/dist/internal/session-engine.d.ts.map +1 -0
- package/dist/internal/session-engine.js +1377 -0
- package/dist/internal/session-store.d.ts +29 -0
- package/dist/internal/session-store.d.ts.map +1 -0
- package/dist/internal/session-store.js +140 -0
- package/dist/internal/session-urls.d.ts +10 -0
- package/dist/internal/session-urls.d.ts.map +1 -0
- package/dist/internal/session-urls.js +25 -0
- package/dist/internal/stream-progress.d.ts +14 -0
- package/dist/internal/stream-progress.d.ts.map +1 -0
- package/dist/internal/stream-progress.js +195 -0
- package/dist/internal/tool-result.d.ts +20 -0
- package/dist/internal/tool-result.d.ts.map +1 -0
- package/dist/internal/tool-result.js +45 -0
- package/dist/internal/trajectory.d.ts +56 -0
- package/dist/internal/trajectory.d.ts.map +1 -0
- package/dist/internal/trajectory.js +248 -0
- package/dist/internal/workspace.d.ts +42 -0
- package/dist/internal/workspace.d.ts.map +1 -0
- package/dist/internal/workspace.js +199 -0
- package/dist/playground/assets/cursor-icons-outline-oY2V_mvK.woff2 +0 -0
- package/dist/playground/assets/index-1K-hG-7p.css +1 -0
- package/dist/playground/assets/index-FlWjhg3x.js +79 -0
- package/dist/playground/index.html +17 -0
- package/dist/reminders.d.ts +23 -0
- package/dist/reminders.d.ts.map +1 -0
- package/dist/reminders.js +22 -0
- package/dist/schedules.d.ts +23 -0
- package/dist/schedules.d.ts.map +1 -0
- package/dist/schedules.js +26 -0
- package/dist/skills.d.ts +22 -0
- package/dist/skills.d.ts.map +1 -0
- package/dist/skills.js +22 -0
- package/dist/tools.d.ts +92 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +68 -0
- package/dist/types.d.ts +1609 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +80 -0
- package/docs/README.md +174 -0
- package/docs/ab.md +355 -0
- package/docs/building-with-agents.md +129 -0
- package/docs/concepts.md +177 -0
- package/docs/deployment.md +218 -0
- package/docs/evals.md +383 -0
- package/docs/guides/agent-to-agent.md +118 -0
- package/docs/guides/cloud-runtime.md +122 -0
- package/docs/guides/github.md +172 -0
- package/docs/guides/human-in-the-loop.md +131 -0
- package/docs/guides/slack.md +245 -0
- package/docs/guides/webhooks.md +201 -0
- package/docs/hillclimbing.md +93 -0
- package/docs/quickstart.md +183 -0
- package/docs/reference/agent-config.md +154 -0
- package/docs/reference/channels.md +206 -0
- package/docs/reference/cli.md +257 -0
- package/docs/reference/connections.md +137 -0
- package/docs/reference/hooks.md +74 -0
- package/docs/reference/http-api.md +219 -0
- package/docs/reference/instructions.md +77 -0
- package/docs/reference/playground.md +67 -0
- package/docs/reference/project-layout.md +119 -0
- package/docs/reference/schedules.md +220 -0
- package/docs/reference/sessions.md +165 -0
- package/docs/reference/skills.md +79 -0
- package/docs/reference/subagents.md +74 -0
- package/docs/reference/tools.md +203 -0
- package/docs/scaffolding-agents.md +113 -0
- package/docs/troubleshooting.md +95 -0
- package/package.json +185 -0
- package/skills/ab/SKILL.md +139 -0
- package/skills/create-agent/SKILL.md +219 -0
- package/skills/debug/SKILL.md +71 -0
- package/skills/evals/SKILL.md +217 -0
- package/skills/framework-map/SKILL.md +142 -0
- package/skills/github/SKILL.md +144 -0
- package/skills/hillclimb/SKILL.md +162 -0
- package/skills/setup-slack/SKILL.md +180 -0
- package/src/ab.ts +675 -0
- package/src/bin/agent-serve.ts +949 -0
- package/src/channels/github/api.ts +374 -0
- package/src/channels/github/auth.ts +275 -0
- package/src/channels/github/binding.ts +223 -0
- package/src/channels/github/defaults.ts +111 -0
- package/src/channels/github/events.ts +72 -0
- package/src/channels/github/forward.ts +381 -0
- package/src/channels/github/github-channel.ts +2270 -0
- package/src/channels/github/index.ts +52 -0
- package/src/channels/github/replay.ts +387 -0
- package/src/channels/github/state.ts +95 -0
- package/src/channels/github/types.ts +490 -0
- package/src/channels/slack/api.ts +580 -0
- package/src/channels/slack/approvals.ts +198 -0
- package/src/channels/slack/assistant.ts +76 -0
- package/src/channels/slack/auth.ts +112 -0
- package/src/channels/slack/channel-watch.ts +219 -0
- package/src/channels/slack/constants.ts +30 -0
- package/src/channels/slack/credentials.ts +90 -0
- package/src/channels/slack/cursor-account.ts +166 -0
- package/src/channels/slack/defaults.ts +450 -0
- package/src/channels/slack/dispatch.ts +293 -0
- package/src/channels/slack/doctor.ts +135 -0
- package/src/channels/slack/event-id-dedupe.ts +30 -0
- package/src/channels/slack/inbound.ts +219 -0
- package/src/channels/slack/index.ts +45 -0
- package/src/channels/slack/init.ts +133 -0
- package/src/channels/slack/interactive.ts +194 -0
- package/src/channels/slack/links.ts +23 -0
- package/src/channels/slack/live-delivery.ts +201 -0
- package/src/channels/slack/log.ts +83 -0
- package/src/channels/slack/manifest.ts +179 -0
- package/src/channels/slack/pr-ref.ts +50 -0
- package/src/channels/slack/setup.ts +97 -0
- package/src/channels/slack/slack-channel.ts +374 -0
- package/src/channels/slack/socket-mode.ts +154 -0
- package/src/channels/slack/stream.ts +63 -0
- package/src/channels/slack/tool-approval-events.ts +136 -0
- package/src/channels/slack/types.ts +349 -0
- package/src/channels.ts +385 -0
- package/src/connections.ts +89 -0
- package/src/evals.ts +501 -0
- package/src/hooks.ts +33 -0
- package/src/index.ts +184 -0
- package/src/internal/ab-collector.ts +210 -0
- package/src/internal/ab-fold.ts +228 -0
- package/src/internal/ab-snapshot.ts +335 -0
- package/src/internal/approval-gate.ts +115 -0
- package/src/internal/auth.ts +39 -0
- package/src/internal/authored-alias-hooks.ts +69 -0
- package/src/internal/authored-loaders.ts +138 -0
- package/src/internal/bounded-int.ts +27 -0
- package/src/internal/brand.ts +29 -0
- package/src/internal/chat-client.ts +407 -0
- package/src/internal/cli-ax.ts +474 -0
- package/src/internal/cli-cursor.ts +275 -0
- package/src/internal/cli-github.ts +849 -0
- package/src/internal/cli-slack.ts +175 -0
- package/src/internal/cloud-merge.ts +41 -0
- package/src/internal/cron.ts +78 -0
- package/src/internal/cursor/account-mcp.ts +472 -0
- package/src/internal/cursor/backend-client.ts +614 -0
- package/src/internal/cursor/credentials.ts +401 -0
- package/src/internal/cursor-event-relay.ts +281 -0
- package/src/internal/cursor-relay-core.ts +444 -0
- package/src/internal/cursor-slack-relay.ts +242 -0
- package/src/internal/describe-error.ts +4 -0
- package/src/internal/dev-mode.ts +20 -0
- package/src/internal/discovery.ts +1709 -0
- package/src/internal/distribution.ts +97 -0
- package/src/internal/docs-site.ts +191 -0
- package/src/internal/duration.ts +39 -0
- package/src/internal/eval-run-store.ts +519 -0
- package/src/internal/eval-runner.ts +522 -0
- package/src/internal/event-log.ts +175 -0
- package/src/internal/event-mapper.ts +272 -0
- package/src/internal/frontmatter.ts +77 -0
- package/src/internal/github-fanout.ts +159 -0
- package/src/internal/handleAgentServeTrigger.ts +156 -0
- package/src/internal/host-platforms.ts +144 -0
- package/src/internal/http-channel.ts +546 -0
- package/src/internal/ids.ts +44 -0
- package/src/internal/init-project.ts +165 -0
- package/src/internal/json-dir-store.ts +109 -0
- package/src/internal/json-schema.ts +69 -0
- package/src/internal/log-ring.ts +59 -0
- package/src/internal/map-pool.ts +32 -0
- package/src/internal/mcp-endpoint.ts +518 -0
- package/src/internal/mcp-host.ts +211 -0
- package/src/internal/net.ts +31 -0
- package/src/internal/peer-connections.ts +100 -0
- package/src/internal/playground/static.ts +189 -0
- package/src/internal/playground/toolchain.ts +277 -0
- package/src/internal/reminder-runner.ts +756 -0
- package/src/internal/reminder-schedule.ts +106 -0
- package/src/internal/reminder-store.ts +145 -0
- package/src/internal/resolved-connections.ts +145 -0
- package/src/internal/review-comments.ts +268 -0
- package/src/internal/router.ts +145 -0
- package/src/internal/run-client.ts +320 -0
- package/src/internal/schedule-runner.ts +161 -0
- package/src/internal/sdk-runner.ts +315 -0
- package/src/internal/server.ts +1737 -0
- package/src/internal/session-engine.ts +1810 -0
- package/src/internal/session-store.ts +147 -0
- package/src/internal/session-urls.ts +40 -0
- package/src/internal/stream-progress.ts +254 -0
- package/src/internal/tool-result.ts +54 -0
- package/src/internal/trajectory.ts +306 -0
- package/src/internal/workspace.ts +223 -0
- package/src/reminders.ts +35 -0
- package/src/schedules.ts +37 -0
- package/src/skills.ts +27 -0
- package/src/tools.ts +127 -0
- package/src/types.ts +1848 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Peer MCP connections: `defineConnection({ agent: "<slug>" })` addresses
|
|
3
|
+
* another agent mounted on the same serve host. Discovery keeps the
|
|
4
|
+
* transport symbolic (the target slug); the server resolves it to that
|
|
5
|
+
* agent's MCP endpoint (`/<slug>/v1/mcp`) once mounts and the listen
|
|
6
|
+
* address are known.
|
|
7
|
+
*
|
|
8
|
+
* Local-runtime turns (and host-side `ctx.host.mcp` calls) use the loopback
|
|
9
|
+
* server URL. Cloud-runtime turns run on a VM that cannot reach loopback,
|
|
10
|
+
* so they use the serve `publicUrl` when configured — and omit the peer
|
|
11
|
+
* (with a startup warning) when it is not.
|
|
12
|
+
*/
|
|
13
|
+
import { isPeerConnectionTransport } from "../types.js";
|
|
14
|
+
import { MCP_ENDPOINT_PATH } from "./mcp-endpoint.js";
|
|
15
|
+
/**
|
|
16
|
+
* Validate every peer MCP connection across `mounts` and return them grouped by
|
|
17
|
+
* the referencing mount's slug. Throws on references to unknown slugs and on
|
|
18
|
+
* self-references (an agent asking itself recurses forever).
|
|
19
|
+
*/
|
|
20
|
+
export function collectPeerConnections(mounts) {
|
|
21
|
+
const knownSlugs = new Set(mounts.map(({ slug }) => slug).filter((slug) => slug !== ""));
|
|
22
|
+
const bySlug = new Map();
|
|
23
|
+
for (const { slug, project } of mounts) {
|
|
24
|
+
const refs = [];
|
|
25
|
+
for (const connection of project.agent.connections) {
|
|
26
|
+
if (!isPeerConnectionTransport(connection.transport)) {
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
const targetSlug = connection.transport.agent;
|
|
30
|
+
const label = slug === "" ? project.name : slug;
|
|
31
|
+
if (targetSlug === slug) {
|
|
32
|
+
throw new Error(`Agent "${label}" connection "${connection.name}" references itself (agent: "${targetSlug}"); an agent cannot be its own peer.`);
|
|
33
|
+
}
|
|
34
|
+
if (!knownSlugs.has(targetSlug)) {
|
|
35
|
+
const available = [...knownSlugs].sort().join(", ") || "(none)";
|
|
36
|
+
throw new Error(`Agent "${label}" connection "${connection.name}" references unknown peer agent "${targetSlug}". Mounted agents: ${available}. Peers require multi-agent serve (each agent mounted under its directory-name slug).`);
|
|
37
|
+
}
|
|
38
|
+
refs.push({ name: connection.name, targetSlug });
|
|
39
|
+
}
|
|
40
|
+
if (refs.length > 0) {
|
|
41
|
+
bySlug.set(slug, refs);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return bySlug;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Resolve validated peer refs to concrete MCP URLs once the server is
|
|
48
|
+
* listening. `serverUrl` is the loopback base (`http://127.0.0.1:<port>`);
|
|
49
|
+
* `publicUrl` (when configured) is the externally reachable base used for
|
|
50
|
+
* cloud-runtime turns. When the host requires a bearer token, it is attached
|
|
51
|
+
* so peer calls pass the target agent's auth chain.
|
|
52
|
+
*/
|
|
53
|
+
export function resolvePeerConnections(args) {
|
|
54
|
+
const serverBase = trimTrailingSlash(args.serverUrl);
|
|
55
|
+
const publicBase = args.publicUrl === undefined
|
|
56
|
+
? undefined
|
|
57
|
+
: trimTrailingSlash(args.publicUrl);
|
|
58
|
+
const headers = args.authToken === undefined
|
|
59
|
+
? undefined
|
|
60
|
+
: { authorization: `Bearer ${args.authToken}` };
|
|
61
|
+
return args.refs.map((ref) => (Object.assign(Object.assign({ name: ref.name, localUrl: `${serverBase}/${ref.targetSlug}${MCP_ENDPOINT_PATH}` }, (publicBase === undefined
|
|
62
|
+
? {}
|
|
63
|
+
: { cloudUrl: `${publicBase}/${ref.targetSlug}${MCP_ENDPOINT_PATH}` })), (headers === undefined ? {} : { headers }))));
|
|
64
|
+
}
|
|
65
|
+
function trimTrailingSlash(url) {
|
|
66
|
+
return url.endsWith("/") ? url.slice(0, -1) : url;
|
|
67
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Serves the built Vite playground SPA and the multi-agent index page.
|
|
3
|
+
*
|
|
4
|
+
* The playground is a Vite + React app (see `playground/`). `serve` auto-builds
|
|
5
|
+
* `dist/playground/` when the local vite toolchain is present (see
|
|
6
|
+
* `toolchain.ts`); `pnpm run build` also emits it for publish. In `--dev`,
|
|
7
|
+
* Vite HMR is spawned separately; this module only serves the static bundle.
|
|
8
|
+
*
|
|
9
|
+
* The server mounts the SPA at `/playground` (single agent) or
|
|
10
|
+
* `/<slug>/playground` (multi), so the built `index.html` — whose asset URLs
|
|
11
|
+
* are relative — gets a `<base href>` injected to resolve them under the mount.
|
|
12
|
+
*/
|
|
13
|
+
/** Content types for the static bundles this server ships (playground, docs). */
|
|
14
|
+
export declare const STATIC_CONTENT_TYPES: Record<string, string>;
|
|
15
|
+
/** Whether `pnpm run build:playground` has produced the SPA bundle. */
|
|
16
|
+
export declare function playgroundBundleExists(): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* The SPA `index.html` with a `<base href>` injected so its relative asset
|
|
19
|
+
* URLs resolve under the mount point (`/playground/` or `/<slug>/playground/`).
|
|
20
|
+
* Falls back to a helpful placeholder page when the bundle is missing.
|
|
21
|
+
*/
|
|
22
|
+
export declare function renderPlaygroundIndexHtml(baseHref: string): string;
|
|
23
|
+
/** Serve one built asset from `dist/playground/assets/` by filename. */
|
|
24
|
+
export declare function renderPlaygroundAsset(file: string): Response;
|
|
25
|
+
/** One row on the multi-agent index page. */
|
|
26
|
+
export interface AgentIndexEntry {
|
|
27
|
+
slug: string;
|
|
28
|
+
name: string;
|
|
29
|
+
model: string;
|
|
30
|
+
tools: number;
|
|
31
|
+
channels: number;
|
|
32
|
+
}
|
|
33
|
+
/** Standalone index page listing every mounted agent (multi-agent serving). */
|
|
34
|
+
export declare function renderAgentsIndexHtml(agents: AgentIndexEntry[]): string;
|
|
35
|
+
//# sourceMappingURL=static.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static.d.ts","sourceRoot":"","sources":["../../../src/internal/playground/static.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAcH,iFAAiF;AACjF,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAiBvD,CAAC;AAEF,uEAAuE;AACvE,wBAAgB,sBAAsB,IAAI,OAAO,CAEhD;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAUlE;AAED,wEAAwE;AACxE,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAsB5D;AAED,6CAA6C;AAC7C,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,+EAA+E;AAC/E,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,CAiBvE"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Serves the built Vite playground SPA and the multi-agent index page.
|
|
3
|
+
*
|
|
4
|
+
* The playground is a Vite + React app (see `playground/`). `serve` auto-builds
|
|
5
|
+
* `dist/playground/` when the local vite toolchain is present (see
|
|
6
|
+
* `toolchain.ts`); `pnpm run build` also emits it for publish. In `--dev`,
|
|
7
|
+
* Vite HMR is spawned separately; this module only serves the static bundle.
|
|
8
|
+
*
|
|
9
|
+
* The server mounts the SPA at `/playground` (single agent) or
|
|
10
|
+
* `/<slug>/playground` (multi), so the built `index.html` — whose asset URLs
|
|
11
|
+
* are relative — gets a `<base href>` injected to resolve them under the mount.
|
|
12
|
+
*/
|
|
13
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
14
|
+
import { extname, join, normalize } from "node:path";
|
|
15
|
+
import { fileURLToPath } from "node:url";
|
|
16
|
+
// src/internal/playground/static.ts -> packages/agent-serve/dist/playground/.
|
|
17
|
+
// Resolves the same from compiled dist/internal/playground/static.js.
|
|
18
|
+
const DIST_DIR = fileURLToPath(new URL("../../../dist/playground/", import.meta.url));
|
|
19
|
+
const INDEX_HTML = join(DIST_DIR, "index.html");
|
|
20
|
+
const ASSETS_DIR = join(DIST_DIR, "assets");
|
|
21
|
+
/** Content types for the static bundles this server ships (playground, docs). */
|
|
22
|
+
export const STATIC_CONTENT_TYPES = {
|
|
23
|
+
".html": "text/html; charset=utf-8",
|
|
24
|
+
".js": "text/javascript; charset=utf-8",
|
|
25
|
+
".mjs": "text/javascript; charset=utf-8",
|
|
26
|
+
".css": "text/css; charset=utf-8",
|
|
27
|
+
".map": "application/json; charset=utf-8",
|
|
28
|
+
".json": "application/json; charset=utf-8",
|
|
29
|
+
".svg": "image/svg+xml",
|
|
30
|
+
".png": "image/png",
|
|
31
|
+
".jpg": "image/jpeg",
|
|
32
|
+
".jpeg": "image/jpeg",
|
|
33
|
+
".gif": "image/gif",
|
|
34
|
+
".webp": "image/webp",
|
|
35
|
+
".ico": "image/x-icon",
|
|
36
|
+
".woff": "font/woff",
|
|
37
|
+
".woff2": "font/woff2",
|
|
38
|
+
".ttf": "font/ttf",
|
|
39
|
+
};
|
|
40
|
+
/** Whether `pnpm run build:playground` has produced the SPA bundle. */
|
|
41
|
+
export function playgroundBundleExists() {
|
|
42
|
+
return existsSync(INDEX_HTML);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* The SPA `index.html` with a `<base href>` injected so its relative asset
|
|
46
|
+
* URLs resolve under the mount point (`/playground/` or `/<slug>/playground/`).
|
|
47
|
+
* Falls back to a helpful placeholder page when the bundle is missing.
|
|
48
|
+
*/
|
|
49
|
+
export function renderPlaygroundIndexHtml(baseHref) {
|
|
50
|
+
if (!playgroundBundleExists()) {
|
|
51
|
+
return fallbackHtml(baseHref);
|
|
52
|
+
}
|
|
53
|
+
const html = readFileSync(INDEX_HTML, "utf8");
|
|
54
|
+
const baseTag = `<base href="${escapeHtml(baseHref)}" />`;
|
|
55
|
+
if (html.includes("<head>")) {
|
|
56
|
+
return html.replace("<head>", `<head>\n ${baseTag}`);
|
|
57
|
+
}
|
|
58
|
+
return `${baseTag}\n${html}`;
|
|
59
|
+
}
|
|
60
|
+
/** Serve one built asset from `dist/playground/assets/` by filename. */
|
|
61
|
+
export function renderPlaygroundAsset(file) {
|
|
62
|
+
var _a;
|
|
63
|
+
// The route captures a single path segment, but normalize + reject anything
|
|
64
|
+
// that escapes the assets dir defensively.
|
|
65
|
+
const safe = normalize(file).replace(/^(\.\.[/\\])+/, "");
|
|
66
|
+
if (safe.includes("/") || safe.includes("\\") || safe === "") {
|
|
67
|
+
return new Response("Not found", { status: 404 });
|
|
68
|
+
}
|
|
69
|
+
const filePath = join(ASSETS_DIR, safe);
|
|
70
|
+
if (!filePath.startsWith(ASSETS_DIR) || !existsSync(filePath)) {
|
|
71
|
+
return new Response("Not found", { status: 404 });
|
|
72
|
+
}
|
|
73
|
+
const body = readFileSync(filePath);
|
|
74
|
+
const type = (_a = STATIC_CONTENT_TYPES[extname(safe).toLowerCase()]) !== null && _a !== void 0 ? _a : "application/octet-stream";
|
|
75
|
+
return new Response(new Uint8Array(body), {
|
|
76
|
+
headers: {
|
|
77
|
+
"content-type": type,
|
|
78
|
+
// Vite emits content-hashed filenames, so they are safe to cache hard.
|
|
79
|
+
"cache-control": "public, max-age=31536000, immutable",
|
|
80
|
+
},
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
/** Standalone index page listing every mounted agent (multi-agent serving). */
|
|
84
|
+
export function renderAgentsIndexHtml(agents) {
|
|
85
|
+
const cards = agents
|
|
86
|
+
.map((agent) => {
|
|
87
|
+
const meta = `${agent.model || "—"} · ${agent.tools} tool${agent.tools === 1 ? "" : "s"} · ${agent.channels} channel${agent.channels === 1 ? "" : "s"}`;
|
|
88
|
+
return ` <a class="card" href="/${escapeHtml(agent.slug)}/playground">
|
|
89
|
+
<div class="card-name">${escapeHtml(agent.name)}</div>
|
|
90
|
+
<div class="card-slug">/${escapeHtml(agent.slug)}</div>
|
|
91
|
+
<div class="card-meta">${escapeHtml(meta)}</div>
|
|
92
|
+
</a>`;
|
|
93
|
+
})
|
|
94
|
+
.join("\n");
|
|
95
|
+
return AGENTS_INDEX_TEMPLATE.replace("<!--CARDS-->", cards || ' <div class="card-meta">No agents mounted.</div>').replace("<!--COUNT-->", String(agents.length));
|
|
96
|
+
}
|
|
97
|
+
function escapeHtml(value) {
|
|
98
|
+
return value
|
|
99
|
+
.replace(/&/g, "&")
|
|
100
|
+
.replace(/</g, "<")
|
|
101
|
+
.replace(/>/g, ">")
|
|
102
|
+
.replace(/"/g, """);
|
|
103
|
+
}
|
|
104
|
+
function fallbackHtml(baseHref) {
|
|
105
|
+
return `<!doctype html>
|
|
106
|
+
<html lang="en">
|
|
107
|
+
<head>
|
|
108
|
+
<base href="${escapeHtml(baseHref)}" />
|
|
109
|
+
<meta charset="utf-8" />
|
|
110
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
111
|
+
<title>agent-serve playground</title>
|
|
112
|
+
<style>
|
|
113
|
+
body { margin: 0; background: #0e1116; color: #e6edf3; font: 14px/1.6 ui-sans-serif, system-ui, sans-serif; }
|
|
114
|
+
.box { max-width: 640px; margin: 64px auto; padding: 0 24px; }
|
|
115
|
+
code { background: #1b212b; padding: 2px 6px; border-radius: 6px; font-family: ui-monospace, monospace; }
|
|
116
|
+
h1 { font-size: 18px; }
|
|
117
|
+
a { color: #6cb6ff; }
|
|
118
|
+
</style>
|
|
119
|
+
</head>
|
|
120
|
+
<body>
|
|
121
|
+
<div class="box">
|
|
122
|
+
<h1>Playground bundle not built</h1>
|
|
123
|
+
<p>
|
|
124
|
+
The Vite playground has not been built yet. <code>agent-serve serve</code>
|
|
125
|
+
auto-builds it when the local vite toolchain is available; otherwise run
|
|
126
|
+
<code>pnpm run build:playground</code> from <code>packages/agent-serve</code>,
|
|
127
|
+
or <code>pnpm run dev:playground</code> for Vite HMR.
|
|
128
|
+
</p>
|
|
129
|
+
</div>
|
|
130
|
+
</body>
|
|
131
|
+
</html>`;
|
|
132
|
+
}
|
|
133
|
+
const AGENTS_INDEX_TEMPLATE = `<!doctype html>
|
|
134
|
+
<html lang="en">
|
|
135
|
+
<head>
|
|
136
|
+
<meta charset="utf-8" />
|
|
137
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
138
|
+
<title>agent-serve — agents</title>
|
|
139
|
+
<style>
|
|
140
|
+
:root { color-scheme: dark; }
|
|
141
|
+
body { margin: 0; background: #0e1116; color: #e6edf3; font: 14px/1.6 ui-sans-serif, system-ui, -apple-system, sans-serif; }
|
|
142
|
+
.agents-wrap { max-width: 880px; margin: 0 auto; padding: 48px 24px; }
|
|
143
|
+
.agents-wrap h1 { font-size: 20px; font-weight: 650; margin: 0 0 2px; }
|
|
144
|
+
.agents-wrap .sub { color: #8b949e; font-size: 13px; margin-bottom: 28px; }
|
|
145
|
+
.agents-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 14px; }
|
|
146
|
+
.card { display: block; text-decoration: none; color: inherit; background: #161b22; border: 1px solid #30363d; border-radius: 12px; padding: 16px 18px; transition: border-color 0.12s; }
|
|
147
|
+
.card:hover { border-color: #6cb6ff; }
|
|
148
|
+
.card-name { font-size: 15px; font-weight: 600; }
|
|
149
|
+
.card-slug { font-family: ui-monospace, monospace; font-size: 12px; color: #6cb6ff; margin-top: 2px; }
|
|
150
|
+
.card-meta { color: #6e7681; font-size: 12px; margin-top: 10px; }
|
|
151
|
+
</style>
|
|
152
|
+
</head>
|
|
153
|
+
<body>
|
|
154
|
+
<div class="agents-wrap">
|
|
155
|
+
<h1>agent-serve</h1>
|
|
156
|
+
<div class="sub"><!--COUNT--> agents mounted</div>
|
|
157
|
+
<div class="agents-grid">
|
|
158
|
+
<!--CARDS-->
|
|
159
|
+
</div>
|
|
160
|
+
</div>
|
|
161
|
+
</body>
|
|
162
|
+
</html>`;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local Vite toolchain for the playground SPA.
|
|
3
|
+
*
|
|
4
|
+
* Published installs ship `dist/playground/` and do not need this — vite is a
|
|
5
|
+
* devDependency and `playground/` sources may be absent. In a monorepo / source
|
|
6
|
+
* checkout, `serve` uses this to auto-build a missing bundle and (with `--dev`)
|
|
7
|
+
* spawn the Vite HMR server.
|
|
8
|
+
*/
|
|
9
|
+
/** `@anysphere/agent-serve` package root (works from `src/` or `dist/`). */
|
|
10
|
+
export declare function packageRoot(): string;
|
|
11
|
+
export interface PlaygroundToolchain {
|
|
12
|
+
packageRoot: string;
|
|
13
|
+
viteCli: string;
|
|
14
|
+
viteConfig: string;
|
|
15
|
+
}
|
|
16
|
+
/** True when playground sources + a resolvable `vite` CLI are present. */
|
|
17
|
+
export declare function resolvePlaygroundToolchain(): PlaygroundToolchain | undefined;
|
|
18
|
+
export declare function playgroundToolchainAvailable(): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* `AGENT_SERVE_BASE` for the Vite proxy when serving a single slugged agent.
|
|
21
|
+
* Multi-agent serve uses path-based HMR (`/<slug>/playground`) unless the
|
|
22
|
+
* caller pins one slug via {@link playgroundDevBaseFromEnv}.
|
|
23
|
+
*/
|
|
24
|
+
export declare function playgroundDevBasePath(mounts: ReadonlyArray<{
|
|
25
|
+
slug: string;
|
|
26
|
+
}>): string | undefined;
|
|
27
|
+
/**
|
|
28
|
+
* Optional pin for multi-agent Vite HMR (SPA at root, rewrite `/v1` → base).
|
|
29
|
+
* Empty / unset → multi-agent path mode (`AGENT_SERVE_MULTI`).
|
|
30
|
+
*/
|
|
31
|
+
export declare function playgroundDevBaseFromEnv(env?: NodeJS.ProcessEnv): string | undefined;
|
|
32
|
+
/** Run `vite build` for the playground; throws on non-zero exit. */
|
|
33
|
+
export declare function runPlaygroundBuild(logger?: (line: string) => void): Promise<void>;
|
|
34
|
+
/**
|
|
35
|
+
* If the SPA bundle is missing and the local toolchain is available, build it.
|
|
36
|
+
* No-op when the bundle already exists. Soft-skips (logs) when vite is absent
|
|
37
|
+
* so published installs without a prebuilt bundle still start.
|
|
38
|
+
*/
|
|
39
|
+
export declare function ensurePlaygroundBundle(logger?: (line: string) => void): Promise<void>;
|
|
40
|
+
export interface PlaygroundDevServer {
|
|
41
|
+
url: string;
|
|
42
|
+
stop(): void;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Spawn Vite HMR for the playground, proxying API calls at {@link targetUrl}.
|
|
46
|
+
* Multi-agent mode serves `/<slug>/playground` + the agents index at `/`.
|
|
47
|
+
* Returns undefined when the toolchain is unavailable.
|
|
48
|
+
*/
|
|
49
|
+
export declare function startPlaygroundDevServer(options: {
|
|
50
|
+
targetUrl: string;
|
|
51
|
+
basePath?: string;
|
|
52
|
+
/** Path-based multi-agent HMR (no single-slug `/v1` rewrite). */
|
|
53
|
+
multiAgent?: boolean;
|
|
54
|
+
logger?: (line: string) => void;
|
|
55
|
+
}): PlaygroundDevServer | undefined;
|
|
56
|
+
export declare function playgroundDevPort(): number;
|
|
57
|
+
//# sourceMappingURL=toolchain.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolchain.d.ts","sourceRoot":"","sources":["../../../src/internal/playground/toolchain.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAWH,4EAA4E;AAC5E,wBAAgB,WAAW,IAAI,MAAM,CAGpC;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAmCD,0EAA0E;AAC1E,wBAAgB,0BAA0B,IAAI,mBAAmB,GAAG,SAAS,CAW5E;AAED,wBAAgB,4BAA4B,IAAI,OAAO,CAEtD;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,aAAa,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GACtC,MAAM,GAAG,SAAS,CAKpB;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,GAAG,SAAS,CAUpB;AAED,oEAAoE;AACpE,wBAAsB,kBAAkB,CACtC,MAAM,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAkB,GAC3C,OAAO,CAAC,IAAI,CAAC,CAoBf;AAED;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAkB,GAC3C,OAAO,CAAC,IAAI,CAAC,CAWf;AAED,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,IAAI,IAAI,CAAC;CACd;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iEAAiE;IACjE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC,GAAG,mBAAmB,GAAG,SAAS,CA4ElC;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAM1C"}
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local Vite toolchain for the playground SPA.
|
|
3
|
+
*
|
|
4
|
+
* Published installs ship `dist/playground/` and do not need this — vite is a
|
|
5
|
+
* devDependency and `playground/` sources may be absent. In a monorepo / source
|
|
6
|
+
* checkout, `serve` uses this to auto-build a missing bundle and (with `--dev`)
|
|
7
|
+
* spawn the Vite HMR server.
|
|
8
|
+
*/
|
|
9
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
10
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
11
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
12
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
13
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
14
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
15
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
16
|
+
});
|
|
17
|
+
};
|
|
18
|
+
import { spawn } from "node:child_process";
|
|
19
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
20
|
+
import { createRequire } from "node:module";
|
|
21
|
+
import { dirname, join } from "node:path";
|
|
22
|
+
import { fileURLToPath } from "node:url";
|
|
23
|
+
import { playgroundBundleExists } from "./static.js";
|
|
24
|
+
const VITE_CONFIG = "playground/vite.config.ts";
|
|
25
|
+
/** `@anysphere/agent-serve` package root (works from `src/` or `dist/`). */
|
|
26
|
+
export function packageRoot() {
|
|
27
|
+
// src|dist/internal/playground/toolchain.ts → packages/agent-serve/
|
|
28
|
+
return fileURLToPath(new URL("../../..", import.meta.url));
|
|
29
|
+
}
|
|
30
|
+
/** Resolve the absolute path to vite's CLI bin without using blocked package exports. */
|
|
31
|
+
function resolveViteCli(root) {
|
|
32
|
+
var _a;
|
|
33
|
+
var _b;
|
|
34
|
+
try {
|
|
35
|
+
const require = createRequire(join(root, "package.json"));
|
|
36
|
+
let dir = dirname(require.resolve("vite"));
|
|
37
|
+
for (let i = 0; i < 6; i++) {
|
|
38
|
+
const pkgPath = join(dir, "package.json");
|
|
39
|
+
if (existsSync(pkgPath)) {
|
|
40
|
+
const pkg = JSON.parse(readFileSync(pkgPath, "utf8"));
|
|
41
|
+
if (pkg.name === "vite") {
|
|
42
|
+
const binRel = typeof pkg.bin === "string"
|
|
43
|
+
? pkg.bin
|
|
44
|
+
: ((_b = (_a = pkg.bin) === null || _a === void 0 ? void 0 : _a.vite) !== null && _b !== void 0 ? _b : "bin/vite.js");
|
|
45
|
+
const binAbs = join(dir, binRel);
|
|
46
|
+
return existsSync(binAbs) ? binAbs : undefined;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
const parent = dirname(dir);
|
|
50
|
+
if (parent === dir) {
|
|
51
|
+
break;
|
|
52
|
+
}
|
|
53
|
+
dir = parent;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
catch (_c) {
|
|
57
|
+
return undefined;
|
|
58
|
+
}
|
|
59
|
+
return undefined;
|
|
60
|
+
}
|
|
61
|
+
/** True when playground sources + a resolvable `vite` CLI are present. */
|
|
62
|
+
export function resolvePlaygroundToolchain() {
|
|
63
|
+
const root = packageRoot();
|
|
64
|
+
const viteConfig = join(root, VITE_CONFIG);
|
|
65
|
+
if (!existsSync(viteConfig)) {
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
|
+
const viteCli = resolveViteCli(root);
|
|
69
|
+
if (viteCli === undefined) {
|
|
70
|
+
return undefined;
|
|
71
|
+
}
|
|
72
|
+
return { packageRoot: root, viteCli, viteConfig };
|
|
73
|
+
}
|
|
74
|
+
export function playgroundToolchainAvailable() {
|
|
75
|
+
return resolvePlaygroundToolchain() !== undefined;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* `AGENT_SERVE_BASE` for the Vite proxy when serving a single slugged agent.
|
|
79
|
+
* Multi-agent serve uses path-based HMR (`/<slug>/playground`) unless the
|
|
80
|
+
* caller pins one slug via {@link playgroundDevBaseFromEnv}.
|
|
81
|
+
*/
|
|
82
|
+
export function playgroundDevBasePath(mounts) {
|
|
83
|
+
var _a;
|
|
84
|
+
if (mounts.length === 1 && ((_a = mounts[0]) === null || _a === void 0 ? void 0 : _a.slug) !== "") {
|
|
85
|
+
return `/${mounts[0].slug}`;
|
|
86
|
+
}
|
|
87
|
+
return undefined;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Optional pin for multi-agent Vite HMR (SPA at root, rewrite `/v1` → base).
|
|
91
|
+
* Empty / unset → multi-agent path mode (`AGENT_SERVE_MULTI`).
|
|
92
|
+
*/
|
|
93
|
+
export function playgroundDevBaseFromEnv(env = process.env) {
|
|
94
|
+
var _a;
|
|
95
|
+
const raw = (_a = env.AGENT_SERVE_BASE) === null || _a === void 0 ? void 0 : _a.trim();
|
|
96
|
+
if (raw === undefined || raw === "") {
|
|
97
|
+
return undefined;
|
|
98
|
+
}
|
|
99
|
+
const normalized = raw.replace(/\/+$/, "");
|
|
100
|
+
if (normalized === "" || normalized === "/") {
|
|
101
|
+
return undefined;
|
|
102
|
+
}
|
|
103
|
+
return normalized.startsWith("/") ? normalized : `/${normalized}`;
|
|
104
|
+
}
|
|
105
|
+
/** Run `vite build` for the playground; throws on non-zero exit. */
|
|
106
|
+
export function runPlaygroundBuild() {
|
|
107
|
+
return __awaiter(this, arguments, void 0, function* (logger = console.log) {
|
|
108
|
+
const toolchain = resolvePlaygroundToolchain();
|
|
109
|
+
if (toolchain === undefined) {
|
|
110
|
+
throw new Error("playground vite toolchain unavailable (need playground/ sources and the vite package)");
|
|
111
|
+
}
|
|
112
|
+
logger("[agent-serve] building playground (vite)...");
|
|
113
|
+
const code = yield spawnVite(toolchain, ["build", "--config", VITE_CONFIG], {
|
|
114
|
+
env: process.env,
|
|
115
|
+
});
|
|
116
|
+
if (code !== 0) {
|
|
117
|
+
throw new Error(`playground vite build failed (exit ${code})`);
|
|
118
|
+
}
|
|
119
|
+
if (!playgroundBundleExists()) {
|
|
120
|
+
throw new Error("playground vite build finished but dist/playground/index.html is missing");
|
|
121
|
+
}
|
|
122
|
+
logger("[agent-serve] playground build complete");
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* If the SPA bundle is missing and the local toolchain is available, build it.
|
|
127
|
+
* No-op when the bundle already exists. Soft-skips (logs) when vite is absent
|
|
128
|
+
* so published installs without a prebuilt bundle still start.
|
|
129
|
+
*/
|
|
130
|
+
export function ensurePlaygroundBundle() {
|
|
131
|
+
return __awaiter(this, arguments, void 0, function* (logger = console.log) {
|
|
132
|
+
if (playgroundBundleExists()) {
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
if (resolvePlaygroundToolchain() === undefined) {
|
|
136
|
+
logger("[agent-serve] playground bundle missing and vite toolchain unavailable; /playground will show a build hint");
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
yield runPlaygroundBuild(logger);
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Spawn Vite HMR for the playground, proxying API calls at {@link targetUrl}.
|
|
144
|
+
* Multi-agent mode serves `/<slug>/playground` + the agents index at `/`.
|
|
145
|
+
* Returns undefined when the toolchain is unavailable.
|
|
146
|
+
*/
|
|
147
|
+
export function startPlaygroundDevServer(options) {
|
|
148
|
+
var _a;
|
|
149
|
+
const logger = (_a = options.logger) !== null && _a !== void 0 ? _a : console.log;
|
|
150
|
+
const toolchain = resolvePlaygroundToolchain();
|
|
151
|
+
if (toolchain === undefined) {
|
|
152
|
+
return undefined;
|
|
153
|
+
}
|
|
154
|
+
const port = playgroundDevPort();
|
|
155
|
+
const multiAgent = options.multiAgent === true;
|
|
156
|
+
const env = Object.assign(Object.assign({}, process.env), { AGENT_SERVE_PLAYGROUND_PORT: String(port), AGENT_SERVE_TARGET: options.targetUrl });
|
|
157
|
+
if (multiAgent) {
|
|
158
|
+
env.AGENT_SERVE_MULTI = "1";
|
|
159
|
+
delete env.AGENT_SERVE_BASE;
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
delete env.AGENT_SERVE_MULTI;
|
|
163
|
+
if (options.basePath !== undefined && options.basePath !== "") {
|
|
164
|
+
env.AGENT_SERVE_BASE = options.basePath;
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
delete env.AGENT_SERVE_BASE;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
const modeNote = multiAgent
|
|
171
|
+
? " (multi-agent)"
|
|
172
|
+
: options.basePath
|
|
173
|
+
? ` (base ${options.basePath})`
|
|
174
|
+
: "";
|
|
175
|
+
logger(`[agent-serve] playground HMR starting on http://127.0.0.1:${port}${modeNote}`);
|
|
176
|
+
const child = spawn(process.execPath, [toolchain.viteCli, "--config", VITE_CONFIG], {
|
|
177
|
+
cwd: toolchain.packageRoot,
|
|
178
|
+
env,
|
|
179
|
+
stdio: "inherit",
|
|
180
|
+
});
|
|
181
|
+
let stopped = false;
|
|
182
|
+
child.on("error", (err) => {
|
|
183
|
+
if (stopped) {
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
logger(`[agent-serve] playground HMR spawn failed: ${err.message} — static /playground still served when built`);
|
|
187
|
+
});
|
|
188
|
+
child.on("exit", (code, signal) => {
|
|
189
|
+
if (stopped) {
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
if (code !== 0 && code !== null) {
|
|
193
|
+
logger(`[agent-serve] playground HMR exited (code ${code}${signal ? `, signal ${signal}` : ""}) — static /playground still served when built`);
|
|
194
|
+
}
|
|
195
|
+
});
|
|
196
|
+
return {
|
|
197
|
+
url: `http://127.0.0.1:${port}/`,
|
|
198
|
+
stop: () => {
|
|
199
|
+
stopped = true;
|
|
200
|
+
if (!child.killed) {
|
|
201
|
+
child.kill("SIGTERM");
|
|
202
|
+
}
|
|
203
|
+
},
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
export function playgroundDevPort() {
|
|
207
|
+
var _a;
|
|
208
|
+
const parsed = Number((_a = process.env.AGENT_SERVE_PLAYGROUND_PORT) !== null && _a !== void 0 ? _a : "5273");
|
|
209
|
+
if (!Number.isInteger(parsed) || parsed <= 0 || parsed > 65535) {
|
|
210
|
+
return 5273;
|
|
211
|
+
}
|
|
212
|
+
return parsed;
|
|
213
|
+
}
|
|
214
|
+
function spawnVite(toolchain, args, options) {
|
|
215
|
+
return new Promise((resolve, reject) => {
|
|
216
|
+
const child = spawn(process.execPath, [toolchain.viteCli, ...args], {
|
|
217
|
+
cwd: toolchain.packageRoot,
|
|
218
|
+
env: options.env,
|
|
219
|
+
stdio: "inherit",
|
|
220
|
+
});
|
|
221
|
+
child.on("error", reject);
|
|
222
|
+
child.on("exit", (code) => {
|
|
223
|
+
resolve(code !== null && code !== void 0 ? code : 1);
|
|
224
|
+
});
|
|
225
|
+
});
|
|
226
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-session reminder runner: durable wake subscriptions with
|
|
3
|
+
* prompt XOR run, every/cron/delay/at schedules, and until as
|
|
4
|
+
* function XOR prompt.
|
|
5
|
+
*/
|
|
6
|
+
import type { ReminderCreateInput, ReminderInfo } from "../types.js";
|
|
7
|
+
import { type ReminderRecord } from "./reminder-store.js";
|
|
8
|
+
import { type SessionEngine } from "./session-engine.js";
|
|
9
|
+
export { ReminderValidationError } from "./reminder-schedule.js";
|
|
10
|
+
export declare class UnknownReminderError extends Error {
|
|
11
|
+
readonly availableReminderIds: string[];
|
|
12
|
+
constructor(reminderId: string, availableReminderIds: string[]);
|
|
13
|
+
}
|
|
14
|
+
export declare class ReminderRunner {
|
|
15
|
+
private readonly engine;
|
|
16
|
+
private readonly logger;
|
|
17
|
+
private readonly store;
|
|
18
|
+
private readonly handlers;
|
|
19
|
+
private readonly timers;
|
|
20
|
+
private readonly firing;
|
|
21
|
+
/** Single-flight idle gates keyed by `channelId:continuationToken`. */
|
|
22
|
+
private readonly idleGates;
|
|
23
|
+
private started;
|
|
24
|
+
constructor(engine: SessionEngine, logger?: (line: string) => void);
|
|
25
|
+
get storeRoot(): string;
|
|
26
|
+
/** Start deadline timers for armed reminders (call after restore). */
|
|
27
|
+
start(): Promise<void>;
|
|
28
|
+
stop(): void;
|
|
29
|
+
create(input: ReminderCreateInput): Promise<ReminderInfo>;
|
|
30
|
+
list(filter?: {
|
|
31
|
+
status?: ReminderRecord["status"];
|
|
32
|
+
purpose?: string;
|
|
33
|
+
continuationToken?: string;
|
|
34
|
+
}): Promise<ReminderInfo[]>;
|
|
35
|
+
cancel(id: string, reason?: string): Promise<ReminderInfo | undefined>;
|
|
36
|
+
/** Cancel all armed reminders matching a continuation token (e.g. PR closed). */
|
|
37
|
+
cancelForContinuation(continuationToken: string, reason: string): Promise<number>;
|
|
38
|
+
/** Fire one reminder immediately (dev / hillclimb). */
|
|
39
|
+
dispatch(reminderId: string): Promise<{
|
|
40
|
+
reminderId: string;
|
|
41
|
+
outcome: "fired" | "noop";
|
|
42
|
+
reason?: string;
|
|
43
|
+
}>;
|
|
44
|
+
private armTimer;
|
|
45
|
+
private clearTimer;
|
|
46
|
+
private fire;
|
|
47
|
+
private isSessionBusy;
|
|
48
|
+
private whenSessionIdle;
|
|
49
|
+
/**
|
|
50
|
+
* Follow-ups must use the bound session's principal. If the session is gone,
|
|
51
|
+
* disarm rather than creating a fresh APP_AUTH conversation.
|
|
52
|
+
*/
|
|
53
|
+
private resolveFollowupAuth;
|
|
54
|
+
private deliverPrompt;
|
|
55
|
+
private sendFollowup;
|
|
56
|
+
private buildFireContext;
|
|
57
|
+
private buildUntilContext;
|
|
58
|
+
private disarm;
|
|
59
|
+
private afterFire;
|
|
60
|
+
}
|
|
61
|
+
export type { ReminderRecord } from "./reminder-store.js";
|
|
62
|
+
//# sourceMappingURL=reminder-runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reminder-runner.d.ts","sourceRoot":"","sources":["../../src/internal/reminder-runner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAEV,mBAAmB,EAGnB,YAAY,EAEb,MAAM,aAAa,CAAC;AASrB,OAAO,EAEL,KAAK,cAAc,EAEpB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAE3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,qBAAa,oBAAqB,SAAQ,KAAK;IAG3C,QAAQ,CAAC,oBAAoB,EAAE,MAAM,EAAE;IAFzC,YACE,UAAU,EAAE,MAAM,EACT,oBAAoB,EAAE,MAAM,EAAE,EAIxC;CACF;AAyDD,qBAAa,cAAc;IAUvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAVzB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;IACtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmC;IAC5D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqC;IAC5D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,uEAAuE;IACvE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoC;IAC9D,OAAO,CAAC,OAAO,CAAS;IAExB,YACmB,MAAM,EAAE,aAAa,EACrB,MAAM,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAe,EAG3D;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,sEAAsE;IAChE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CA4B3B;IAED,IAAI,IAAI,IAAI,CAOX;IAEK,MAAM,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,CAAC,CA8D9D;IAEK,IAAI,CAAC,MAAM,CAAC,EAAE;QAClB,MAAM,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;QAClC,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CA4B1B;IAEK,MAAM,CACV,EAAE,EAAE,MAAM,EACV,MAAM,SAAoB,GACzB,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAkBnC;IAED,iFAAiF;IAC3E,qBAAqB,CACzB,iBAAiB,EAAE,MAAM,EACzB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,CAUjB;IAED,uDAAuD;IACjD,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;QAC1C,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC;QAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC,CAQD;IAED,OAAO,CAAC,QAAQ;IA4ChB,OAAO,CAAC,UAAU;YAQJ,IAAI;YAiHJ,aAAa;IAY3B,OAAO,CAAC,eAAe;IAsBvB;;;OAGG;YACW,mBAAmB;YAcnB,aAAa;YAcb,YAAY;IA0C1B,OAAO,CAAC,gBAAgB;IAyDxB,OAAO,CAAC,iBAAiB;YAeX,MAAM;YAYN,SAAS;CAoFxB;AAGD,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
|