@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,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-memory gate for human-in-the-loop tool approvals. The session
|
|
3
|
+
* engine parks inside a server-tool `execute` by awaiting
|
|
4
|
+
* {@link ApprovalGate.wait}; HTTP (or the playground) unblocks via
|
|
5
|
+
* {@link ApprovalGate.resolve}.
|
|
6
|
+
*
|
|
7
|
+
* Pending approvals are also mirrored onto {@link SessionRecord} for
|
|
8
|
+
* durability of the *list* across reloads. After a process restart the
|
|
9
|
+
* in-flight SDK tool callback is gone, so resolve returns false and
|
|
10
|
+
* the host treats the approval as interrupted.
|
|
11
|
+
*/
|
|
12
|
+
import type { ApprovalDecision, PendingApproval } from "../types.js";
|
|
13
|
+
export interface ApprovalResolution {
|
|
14
|
+
decision: ApprovalDecision;
|
|
15
|
+
by?: string;
|
|
16
|
+
}
|
|
17
|
+
export declare class ApprovalGate {
|
|
18
|
+
private readonly waiters;
|
|
19
|
+
wait(meta: PendingApproval & {
|
|
20
|
+
sessionId: string;
|
|
21
|
+
}): Promise<ApprovalResolution>;
|
|
22
|
+
/**
|
|
23
|
+
* Unblock a waiter. Returns false when there is no live waiter (e.g. the
|
|
24
|
+
* host restarted while the tool call was parked).
|
|
25
|
+
*/
|
|
26
|
+
resolve(sessionId: string, callId: string, decision: ApprovalDecision, resolvedBy?: string): boolean;
|
|
27
|
+
has(sessionId: string, callId: string): boolean;
|
|
28
|
+
list(sessionId: string): PendingApproval[];
|
|
29
|
+
/** Drop waiters for a session (e.g. turn already failed). */
|
|
30
|
+
cancelSession(sessionId: string, decision?: ApprovalDecision): void;
|
|
31
|
+
/** Unblock every live waiter (e.g. engine shutdown). */
|
|
32
|
+
cancelAll(decision?: ApprovalDecision): void;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=approval-gate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approval-gate.d.ts","sourceRoot":"","sources":["../../src/internal/approval-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAMrE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAOD,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;IAErD,IAAI,CACF,IAAI,EAAE,eAAe,GAAG;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,GAC5C,OAAO,CAAC,kBAAkB,CAAC,CAoB7B;IAED;;;OAGG;IACH,OAAO,CACL,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,gBAAgB,EAC1B,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAcT;IAED,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAE9C;IAED,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,EAAE,CASzC;IAED,6DAA6D;IAC7D,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,GAAE,gBAAyB,GAAG,IAAI,CAS1E;IAED,wDAAwD;IACxD,SAAS,CAAC,QAAQ,GAAE,gBAAyB,GAAG,IAAI,CAKnD;CACF"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-memory gate for human-in-the-loop tool approvals. The session
|
|
3
|
+
* engine parks inside a server-tool `execute` by awaiting
|
|
4
|
+
* {@link ApprovalGate.wait}; HTTP (or the playground) unblocks via
|
|
5
|
+
* {@link ApprovalGate.resolve}.
|
|
6
|
+
*
|
|
7
|
+
* Pending approvals are also mirrored onto {@link SessionRecord} for
|
|
8
|
+
* durability of the *list* across reloads. After a process restart the
|
|
9
|
+
* in-flight SDK tool callback is gone, so resolve returns false and
|
|
10
|
+
* the host treats the approval as interrupted.
|
|
11
|
+
*/
|
|
12
|
+
function approvalKey(sessionId, callId) {
|
|
13
|
+
return `${sessionId}\0${callId}`;
|
|
14
|
+
}
|
|
15
|
+
export class ApprovalGate {
|
|
16
|
+
constructor() {
|
|
17
|
+
this.waiters = new Map();
|
|
18
|
+
}
|
|
19
|
+
wait(meta) {
|
|
20
|
+
const key = approvalKey(meta.sessionId, meta.callId);
|
|
21
|
+
const existing = this.waiters.get(key);
|
|
22
|
+
if (existing !== undefined) {
|
|
23
|
+
throw new Error(`Approval already pending for session ${meta.sessionId} call ${meta.callId}`);
|
|
24
|
+
}
|
|
25
|
+
return new Promise((resolveDecision) => {
|
|
26
|
+
this.waiters.set(key, {
|
|
27
|
+
meta: {
|
|
28
|
+
callId: meta.callId,
|
|
29
|
+
turnId: meta.turnId,
|
|
30
|
+
toolName: meta.toolName,
|
|
31
|
+
args: meta.args,
|
|
32
|
+
requestedAt: meta.requestedAt,
|
|
33
|
+
},
|
|
34
|
+
resolve: resolveDecision,
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Unblock a waiter. Returns false when there is no live waiter (e.g. the
|
|
40
|
+
* host restarted while the tool call was parked).
|
|
41
|
+
*/
|
|
42
|
+
resolve(sessionId, callId, decision, resolvedBy) {
|
|
43
|
+
const key = approvalKey(sessionId, callId);
|
|
44
|
+
const waiter = this.waiters.get(key);
|
|
45
|
+
if (waiter === undefined) {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
this.waiters.delete(key);
|
|
49
|
+
waiter.resolve(Object.assign({ decision }, (resolvedBy === undefined || resolvedBy === ""
|
|
50
|
+
? {}
|
|
51
|
+
: { by: resolvedBy })));
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
has(sessionId, callId) {
|
|
55
|
+
return this.waiters.has(approvalKey(sessionId, callId));
|
|
56
|
+
}
|
|
57
|
+
list(sessionId) {
|
|
58
|
+
const prefix = `${sessionId}\0`;
|
|
59
|
+
const out = [];
|
|
60
|
+
for (const [key, waiter] of this.waiters) {
|
|
61
|
+
if (key.startsWith(prefix)) {
|
|
62
|
+
out.push(waiter.meta);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return out;
|
|
66
|
+
}
|
|
67
|
+
/** Drop waiters for a session (e.g. turn already failed). */
|
|
68
|
+
cancelSession(sessionId, decision = "deny") {
|
|
69
|
+
const prefix = `${sessionId}\0`;
|
|
70
|
+
for (const [key, waiter] of [...this.waiters.entries()]) {
|
|
71
|
+
if (!key.startsWith(prefix)) {
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
this.waiters.delete(key);
|
|
75
|
+
waiter.resolve({ decision });
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/** Unblock every live waiter (e.g. engine shutdown). */
|
|
79
|
+
cancelAll(decision = "deny") {
|
|
80
|
+
for (const waiter of this.waiters.values()) {
|
|
81
|
+
waiter.resolve({ decision });
|
|
82
|
+
}
|
|
83
|
+
this.waiters.clear();
|
|
84
|
+
}
|
|
85
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auth helpers shared by the HTTP channel, session engine, and session store.
|
|
3
|
+
*/
|
|
4
|
+
import type { AuthContext } from "../types.js";
|
|
5
|
+
export declare function isSafeSessionId(sessionId: string): boolean;
|
|
6
|
+
/** True when both sides identify the same principal (or both are null). */
|
|
7
|
+
export declare function samePrincipal(a: AuthContext | null, b: AuthContext | null): boolean;
|
|
8
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/internal/auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAS/C,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAO1D;AAED,2EAA2E;AAC3E,wBAAgB,aAAa,CAC3B,CAAC,EAAE,WAAW,GAAG,IAAI,EACrB,CAAC,EAAE,WAAW,GAAG,IAAI,GACpB,OAAO,CAYT"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auth helpers shared by the HTTP channel, session engine, and session store.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Session ids must be a single path segment: no `..`, separators, or empty
|
|
6
|
+
* names. Generated ids use `ses_<24 hex>`; this also admits caller-provided
|
|
7
|
+
* safe keys without opening path traversal.
|
|
8
|
+
*/
|
|
9
|
+
const SAFE_SESSION_ID = /^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/;
|
|
10
|
+
export function isSafeSessionId(sessionId) {
|
|
11
|
+
return (SAFE_SESSION_ID.test(sessionId) &&
|
|
12
|
+
!sessionId.includes("..") &&
|
|
13
|
+
!sessionId.includes("/") &&
|
|
14
|
+
!sessionId.includes("\\"));
|
|
15
|
+
}
|
|
16
|
+
/** True when both sides identify the same principal (or both are null). */
|
|
17
|
+
export function samePrincipal(a, b) {
|
|
18
|
+
if (a === null && b === null) {
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
if (a === null || b === null) {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
return (a.authenticator === b.authenticator &&
|
|
25
|
+
a.principalId === b.principalId &&
|
|
26
|
+
a.principalType === b.principalType);
|
|
27
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node module-customization hooks for authored agent files (registered via
|
|
3
|
+
* node:module `register()` from authored-loaders.ts; runs on Node's loader
|
|
4
|
+
* thread — keep this module dependency-free).
|
|
5
|
+
*
|
|
6
|
+
* Authored files import the framework by bare specifier. From a published
|
|
7
|
+
* install those need help in two cases:
|
|
8
|
+
*
|
|
9
|
+
* - `@anysphere/agent-serve[/subpath]` (the historical monorepo name) is not
|
|
10
|
+
* on npm, so it can never resolve from a user project. `directAliases` map
|
|
11
|
+
* it straight onto the running package's dist entries.
|
|
12
|
+
* - `@cursor/july[/subpath]` (the published name) and `@cursor/agentkit
|
|
13
|
+
* [/subpath]` (the future public name) normally resolve through the
|
|
14
|
+
* project's own node_modules; `fallbackAliases` only apply when that
|
|
15
|
+
* fails (npx/global installs, projects without a local dependency), so a
|
|
16
|
+
* real install in the user's project keeps precedence.
|
|
17
|
+
*/
|
|
18
|
+
export interface AuthoredAliasHookData {
|
|
19
|
+
directAliases: Record<string, string>;
|
|
20
|
+
fallbackAliases: Record<string, string>;
|
|
21
|
+
}
|
|
22
|
+
export declare function initialize(data: AuthoredAliasHookData): void;
|
|
23
|
+
interface ResolveResult {
|
|
24
|
+
url: string;
|
|
25
|
+
shortCircuit?: boolean;
|
|
26
|
+
format?: string | null;
|
|
27
|
+
}
|
|
28
|
+
type NextResolve = (specifier: string, context: unknown) => ResolveResult | Promise<ResolveResult>;
|
|
29
|
+
export declare function resolve(specifier: string, context: unknown, nextResolve: NextResolve): ResolveResult | Promise<ResolveResult>;
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=authored-alias-hooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authored-alias-hooks.d.ts","sourceRoot":"","sources":["../../src/internal/authored-alias-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAOH,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC;AAQD,wBAAgB,UAAU,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI,CAG5D;AAED,UAAU,aAAa;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,KAAK,WAAW,GAAG,CACjB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,OAAO,KACb,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AAE5C,wBAAgB,OAAO,CACrB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,WAAW,GACvB,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAcxC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node module-customization hooks for authored agent files (registered via
|
|
3
|
+
* node:module `register()` from authored-loaders.ts; runs on Node's loader
|
|
4
|
+
* thread — keep this module dependency-free).
|
|
5
|
+
*
|
|
6
|
+
* Authored files import the framework by bare specifier. From a published
|
|
7
|
+
* install those need help in two cases:
|
|
8
|
+
*
|
|
9
|
+
* - `@anysphere/agent-serve[/subpath]` (the historical monorepo name) is not
|
|
10
|
+
* on npm, so it can never resolve from a user project. `directAliases` map
|
|
11
|
+
* it straight onto the running package's dist entries.
|
|
12
|
+
* - `@cursor/july[/subpath]` (the published name) and `@cursor/agentkit
|
|
13
|
+
* [/subpath]` (the future public name) normally resolve through the
|
|
14
|
+
* project's own node_modules; `fallbackAliases` only apply when that
|
|
15
|
+
* fails (npx/global installs, projects without a local dependency), so a
|
|
16
|
+
* real install in the user's project keeps precedence.
|
|
17
|
+
*/
|
|
18
|
+
// Null-prototype copies so specifiers like "constructor" or "__proto__"
|
|
19
|
+
// can never resolve to inherited Object.prototype members.
|
|
20
|
+
let directAliases = toNullProtoMap({});
|
|
21
|
+
let fallbackAliases = toNullProtoMap({});
|
|
22
|
+
function toNullProtoMap(source) {
|
|
23
|
+
return Object.assign(Object.create(null), source);
|
|
24
|
+
}
|
|
25
|
+
export function initialize(data) {
|
|
26
|
+
directAliases = toNullProtoMap(data.directAliases);
|
|
27
|
+
fallbackAliases = toNullProtoMap(data.fallbackAliases);
|
|
28
|
+
}
|
|
29
|
+
export function resolve(specifier, context, nextResolve) {
|
|
30
|
+
const direct = directAliases[specifier];
|
|
31
|
+
if (direct !== undefined) {
|
|
32
|
+
return { url: direct, shortCircuit: true };
|
|
33
|
+
}
|
|
34
|
+
const fallback = fallbackAliases[specifier];
|
|
35
|
+
if (fallback === undefined) {
|
|
36
|
+
// Not ours: pass through with no promise/try-catch overhead. This hook
|
|
37
|
+
// runs on every module resolution in the process.
|
|
38
|
+
return nextResolve(specifier, context);
|
|
39
|
+
}
|
|
40
|
+
return Promise.resolve()
|
|
41
|
+
.then(() => nextResolve(specifier, context))
|
|
42
|
+
.catch(() => ({ url: fallback, shortCircuit: true }));
|
|
43
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Process-wide module loaders for authored agent files.
|
|
3
|
+
*
|
|
4
|
+
* The CLI dynamically imports user TypeScript (`agent/agent.ts`,
|
|
5
|
+
* `agent/tools/*.ts`, `evals/**\/*.eval.ts`) at runtime, and plain Node
|
|
6
|
+
* cannot load `.ts` modules. Instead of requiring hosts to wrap the bin in
|
|
7
|
+
* `node --import tsx`, the bin (and programmatic `serve()`) registers tsx's
|
|
8
|
+
* ESM loader itself on startup.
|
|
9
|
+
*
|
|
10
|
+
* On compiled runs it additionally registers alias hooks so authored bare
|
|
11
|
+
* imports of the framework resolve against the running package: the
|
|
12
|
+
* historical `@anysphere/agent-serve[/x]` name always, and
|
|
13
|
+
* `@cursor/july[/x]` / `@cursor/agentkit[/x]` as fallbacks when the user's
|
|
14
|
+
* project has no local install (npx / global). Source runs (tsx from the
|
|
15
|
+
* monorepo) skip both — the host loader and tsconfig paths already cover
|
|
16
|
+
* them.
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* Install the runtime loaders for authored agent files. Idempotent; called
|
|
20
|
+
* from the CLI entry before any command runs, and from `serve()` and the
|
|
21
|
+
* discovery APIs for programmatic embedders. Concurrent callers share one
|
|
22
|
+
* registration and all wait for it to finish.
|
|
23
|
+
*/
|
|
24
|
+
export declare function registerAuthoredModuleLoaders(): Promise<void>;
|
|
25
|
+
//# sourceMappingURL=authored-loaders.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authored-loaders.d.ts","sourceRoot":"","sources":["../../src/internal/authored-loaders.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AA0BH;;;;;GAKG;AACH,wBAAgB,6BAA6B,IAAI,OAAO,CAAC,IAAI,CAAC,CAS7D"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Process-wide module loaders for authored agent files.
|
|
3
|
+
*
|
|
4
|
+
* The CLI dynamically imports user TypeScript (`agent/agent.ts`,
|
|
5
|
+
* `agent/tools/*.ts`, `evals/**\/*.eval.ts`) at runtime, and plain Node
|
|
6
|
+
* cannot load `.ts` modules. Instead of requiring hosts to wrap the bin in
|
|
7
|
+
* `node --import tsx`, the bin (and programmatic `serve()`) registers tsx's
|
|
8
|
+
* ESM loader itself on startup.
|
|
9
|
+
*
|
|
10
|
+
* On compiled runs it additionally registers alias hooks so authored bare
|
|
11
|
+
* imports of the framework resolve against the running package: the
|
|
12
|
+
* historical `@anysphere/agent-serve[/x]` name always, and
|
|
13
|
+
* `@cursor/july[/x]` / `@cursor/agentkit[/x]` as fallbacks when the user's
|
|
14
|
+
* project has no local install (npx / global). Source runs (tsx from the
|
|
15
|
+
* monorepo) skip both — the host loader and tsconfig paths already cover
|
|
16
|
+
* them.
|
|
17
|
+
*/
|
|
18
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
19
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
20
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
21
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
22
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
23
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
24
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
import { register as registerModuleHooks } from "node:module";
|
|
28
|
+
import { join } from "node:path";
|
|
29
|
+
import { pathToFileURL } from "node:url";
|
|
30
|
+
import { AGENTKIT_PACKAGE_NAME, AUTHORING_ENTRY_FILES, CLI_COMMAND_NAME, isCompiledDistribution, LEGACY_PACKAGE_NAME, PACKAGE_NAME, packageRootDir, } from "./distribution.js";
|
|
31
|
+
/**
|
|
32
|
+
* Cross-copy markers: a user project with its own `@cursor/july` install
|
|
33
|
+
* can load a second copy of this module in the same process; tsx and the
|
|
34
|
+
* alias hooks must only be registered once.
|
|
35
|
+
*/
|
|
36
|
+
const TSX_REGISTERED_KEY = Symbol.for("cursor.agentkit.tsxRegistered");
|
|
37
|
+
const ALIASES_REGISTERED_KEY = Symbol.for("cursor.agentkit.aliasesRegistered");
|
|
38
|
+
let registration;
|
|
39
|
+
/**
|
|
40
|
+
* Install the runtime loaders for authored agent files. Idempotent; called
|
|
41
|
+
* from the CLI entry before any command runs, and from `serve()` and the
|
|
42
|
+
* discovery APIs for programmatic embedders. Concurrent callers share one
|
|
43
|
+
* registration and all wait for it to finish.
|
|
44
|
+
*/
|
|
45
|
+
export function registerAuthoredModuleLoaders() {
|
|
46
|
+
if (!isCompiledDistribution()) {
|
|
47
|
+
return Promise.resolve();
|
|
48
|
+
}
|
|
49
|
+
registration !== null && registration !== void 0 ? registration : (registration = (() => __awaiter(this, void 0, void 0, function* () {
|
|
50
|
+
yield registerTsxLoader();
|
|
51
|
+
registerFrameworkAliases();
|
|
52
|
+
}))());
|
|
53
|
+
return registration;
|
|
54
|
+
}
|
|
55
|
+
function registerTsxLoader() {
|
|
56
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
57
|
+
// Escape hatch for hosts that precompile authored files to .js (or bring
|
|
58
|
+
// their own loader) and don't want tsx hooked into module resolution.
|
|
59
|
+
if (process.env.AGENT_SERVE_DISABLE_TSX === "1") {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
if (tsxAlreadyActive()) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
try {
|
|
66
|
+
const tsx = (yield import("tsx/esm/api"));
|
|
67
|
+
if (typeof tsx.register !== "function") {
|
|
68
|
+
throw new Error("tsx/esm/api has no register export");
|
|
69
|
+
}
|
|
70
|
+
tsx.register();
|
|
71
|
+
globalThis[TSX_REGISTERED_KEY] = true;
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
process.stderr.write(`[${CLI_COMMAND_NAME}] tsx loader unavailable (${error instanceof Error ? error.message : String(error)}); authored TypeScript files will not load — install tsx or precompile the agent to .js\n`);
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Whether a tsx loader is already installed process-wide: by a previous call
|
|
80
|
+
* from another copy of this module, or by the host command line (the Docker
|
|
81
|
+
* flow still runs `node --import tsx dist/bin/agent-serve.js`).
|
|
82
|
+
*/
|
|
83
|
+
function tsxAlreadyActive() {
|
|
84
|
+
var _a;
|
|
85
|
+
var _b;
|
|
86
|
+
if (globalThis[TSX_REGISTERED_KEY] === true) {
|
|
87
|
+
return true;
|
|
88
|
+
}
|
|
89
|
+
const hostArgs = [
|
|
90
|
+
...process.execArgv,
|
|
91
|
+
...((_b = (_a = process.env.NODE_OPTIONS) === null || _a === void 0 ? void 0 : _a.split(/\s+/)) !== null && _b !== void 0 ? _b : []),
|
|
92
|
+
];
|
|
93
|
+
for (let i = 0; i < hostArgs.length; i++) {
|
|
94
|
+
const arg = hostArgs[i];
|
|
95
|
+
if (arg === "--import" || arg === "--loader" || arg === "--require") {
|
|
96
|
+
const value = hostArgs[i + 1];
|
|
97
|
+
if (value === "tsx" || (value === null || value === void 0 ? void 0 : value.startsWith("tsx/"))) {
|
|
98
|
+
return true;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
else if (arg !== undefined &&
|
|
102
|
+
/^--(import|loader|require)=tsx(\/|$)/.test(arg)) {
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
function registerFrameworkAliases() {
|
|
109
|
+
const markers = globalThis;
|
|
110
|
+
if (markers[ALIASES_REGISTERED_KEY] === true) {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
const distDir = join(packageRootDir(), "dist");
|
|
114
|
+
const directAliases = {};
|
|
115
|
+
const fallbackAliases = {};
|
|
116
|
+
for (const [subpath, file] of AUTHORING_ENTRY_FILES) {
|
|
117
|
+
const target = pathToFileURL(join(distDir, file)).href;
|
|
118
|
+
const suffix = subpath === "" ? "" : `/${subpath}`;
|
|
119
|
+
directAliases[`${LEGACY_PACKAGE_NAME}${suffix}`] = target;
|
|
120
|
+
fallbackAliases[`${PACKAGE_NAME}${suffix}`] = target;
|
|
121
|
+
fallbackAliases[`${AGENTKIT_PACKAGE_NAME}${suffix}`] = target;
|
|
122
|
+
}
|
|
123
|
+
const hooksUrl = new URL("./authored-alias-hooks.js", import.meta.url);
|
|
124
|
+
const data = { directAliases, fallbackAliases };
|
|
125
|
+
// `node:module`'s register() is synchronous: it blocks until the hooks
|
|
126
|
+
// thread has initialized, so the aliases are active when it returns.
|
|
127
|
+
registerModuleHooks(hooksUrl, { data });
|
|
128
|
+
markers[ALIASES_REGISTERED_KEY] = true;
|
|
129
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared validation for optional config ceilings (playground windows, etc.).
|
|
3
|
+
*/
|
|
4
|
+
export declare function normalizePositiveInt(value: unknown, options: {
|
|
5
|
+
/** e.g. `evals.config.ts: maxPlaygroundRuns` */
|
|
6
|
+
label: string;
|
|
7
|
+
max: number;
|
|
8
|
+
/** Override the default "exceeds the hard limit" message body after the label. */
|
|
9
|
+
maxMessage?: string;
|
|
10
|
+
}): number;
|
|
11
|
+
//# sourceMappingURL=bounded-int.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bounded-int.d.ts","sourceRoot":"","sources":["../../src/internal/bounded-int.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,OAAO,EACd,OAAO,EAAE;IACP,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,kFAAkF;IAClF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GACA,MAAM,CAaR"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared validation for optional config ceilings (playground windows, etc.).
|
|
3
|
+
*/
|
|
4
|
+
export function normalizePositiveInt(value, options) {
|
|
5
|
+
var _a;
|
|
6
|
+
if (typeof value !== "number" || !Number.isInteger(value) || value < 1) {
|
|
7
|
+
throw new Error(`${options.label} must be a positive integer (got ${String(value)})`);
|
|
8
|
+
}
|
|
9
|
+
if (value > options.max) {
|
|
10
|
+
throw new Error((_a = options.maxMessage) !== null && _a !== void 0 ? _a : `${options.label} ${value} exceeds the hard limit of ${options.max}`);
|
|
11
|
+
}
|
|
12
|
+
return value;
|
|
13
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { BrandedDefinition, DefinitionKind } from "../types.js";
|
|
2
|
+
export declare const DEFINITION_BRAND_FIELD = "__agentServe";
|
|
3
|
+
export declare function brandDefinition<K extends DefinitionKind, T extends object>(kind: K, definition: T): T & BrandedDefinition<K>;
|
|
4
|
+
export declare function getDefinitionKind(value: unknown): DefinitionKind | undefined;
|
|
5
|
+
export declare function isDefinitionOfKind<K extends DefinitionKind>(value: unknown, kind: K): value is BrandedDefinition<K>;
|
|
6
|
+
//# sourceMappingURL=brand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand.d.ts","sourceRoot":"","sources":["../../src/internal/brand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAErE,eAAO,MAAM,sBAAsB,iBAAiB,CAAC;AAErD,wBAAgB,eAAe,CAAC,CAAC,SAAS,cAAc,EAAE,CAAC,SAAS,MAAM,EACxE,IAAI,EAAE,CAAC,EACP,UAAU,EAAE,CAAC,GACZ,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAG1B;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS,CAS5E;AAED,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,cAAc,EACzD,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,CAAC,GACN,KAAK,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAE/B"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export const DEFINITION_BRAND_FIELD = "__agentServe";
|
|
2
|
+
export function brandDefinition(kind, definition) {
|
|
3
|
+
return Object.assign(Object.assign({}, definition), { [DEFINITION_BRAND_FIELD]: kind });
|
|
4
|
+
}
|
|
5
|
+
export function getDefinitionKind(value) {
|
|
6
|
+
if (typeof value !== "object" || value === null) {
|
|
7
|
+
return undefined;
|
|
8
|
+
}
|
|
9
|
+
const kind = value[DEFINITION_BRAND_FIELD];
|
|
10
|
+
if (typeof kind !== "string") {
|
|
11
|
+
return undefined;
|
|
12
|
+
}
|
|
13
|
+
return kind;
|
|
14
|
+
}
|
|
15
|
+
export function isDefinitionOfKind(value, kind) {
|
|
16
|
+
return getDefinitionKind(value) === kind;
|
|
17
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `agent-serve chat` — a minimal terminal client for a served agent. It
|
|
3
|
+
* drives only the public HTTP API (create session, follow-up, NDJSON
|
|
4
|
+
* stream), so it works against any agent-serve server and demonstrates the
|
|
5
|
+
* same wire protocol the playground and curl use. Renders streamed
|
|
6
|
+
* assistant text live, tool calls inline, and a per-turn usage footer.
|
|
7
|
+
*/
|
|
8
|
+
export interface ChatClientOptions {
|
|
9
|
+
baseUrl: string;
|
|
10
|
+
bearerToken?: string;
|
|
11
|
+
/** One-shot: send this message, stream the reply, then exit. */
|
|
12
|
+
message?: string;
|
|
13
|
+
/** Force plain output even on a TTY. */
|
|
14
|
+
noColor?: boolean;
|
|
15
|
+
logger?: (line: string) => void;
|
|
16
|
+
}
|
|
17
|
+
/** Run the terminal chat client. Resolves when the session/REPL ends. */
|
|
18
|
+
export declare function runChat(options: ChatClientOptions): Promise<void>;
|
|
19
|
+
//# sourceMappingURL=chat-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-client.d.ts","sourceRoot":"","sources":["../../src/internal/chat-client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wCAAwC;IACxC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC;AAyCD,yEAAyE;AACzE,wBAAsB,OAAO,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+GvE"}
|