@code-yeongyu/senpi 2026.8.16 → 2026.8.17
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/CHANGELOG.md +51 -0
- package/dist/bun/cli.js +1 -0
- package/dist/bun/cli.js.map +1 -1
- package/dist/bun/register-cursor-agent.d.ts +2 -0
- package/dist/bun/register-cursor-agent.d.ts.map +1 -0
- package/dist/bun/register-cursor-agent.js +4 -0
- package/dist/bun/register-cursor-agent.js.map +1 -0
- package/dist/core/agent-session-services.js +2 -2
- package/dist/core/agent-session-services.js.map +1 -1
- package/dist/core/agent-session.d.ts +48 -5
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +239 -61
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/cursor-exec-bridge-session.d.ts +11 -0
- package/dist/core/cursor-exec-bridge-session.d.ts.map +1 -0
- package/dist/core/cursor-exec-bridge-session.js +17 -0
- package/dist/core/cursor-exec-bridge-session.js.map +1 -0
- package/dist/core/cursor-exec-bridge.d.ts +52 -0
- package/dist/core/cursor-exec-bridge.d.ts.map +1 -0
- package/dist/core/cursor-exec-bridge.js +196 -0
- package/dist/core/cursor-exec-bridge.js.map +1 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/account-command.d.ts +28 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/account-command.d.ts.map +1 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/account-command.js +278 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/account-command.js.map +1 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/accounts.d.ts +38 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/accounts.d.ts.map +1 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/accounts.js +75 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/accounts.js.map +1 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/affinity.d.ts +24 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/affinity.d.ts.map +1 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/affinity.js +64 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/affinity.js.map +1 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/diagnostics.d.ts +139 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/diagnostics.d.ts.map +1 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/diagnostics.js +362 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/diagnostics.js.map +1 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/errors.d.ts +19 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/errors.d.ts.map +1 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/errors.js +122 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/errors.js.map +1 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/executable.d.ts +30 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/executable.d.ts.map +1 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/executable.js +117 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/executable.js.map +1 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/failover.d.ts +39 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/failover.d.ts.map +1 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/failover.js +155 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/failover.js.map +1 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/guardrails.d.ts +89 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/guardrails.d.ts.map +1 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/guardrails.js +147 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/guardrails.js.map +1 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/home-store.d.ts +20 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/home-store.d.ts.map +1 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/home-store.js +99 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/home-store.js.map +1 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/index.d.ts +25 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/index.js +67 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/index.js.map +1 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/models.d.ts +27 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/models.d.ts.map +1 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/models.js +242 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/models.js.map +1 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/oauth-login.d.ts +73 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/oauth-login.d.ts.map +1 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/oauth-login.js +330 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/oauth-login.js.map +1 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/session-router.d.ts +94 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/session-router.d.ts.map +1 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/session-router.js +248 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/session-router.js.map +1 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/settings.d.ts +35 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/settings.d.ts.map +1 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/settings.js +186 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/settings.js.map +1 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/spawn-args.d.ts +11 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/spawn-args.d.ts.map +1 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/spawn-args.js +17 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/spawn-args.js.map +1 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/stream-parser.d.ts +104 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/stream-parser.d.ts.map +1 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/stream-parser.js +301 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/stream-parser.js.map +1 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/stream.d.ts +26 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/stream.d.ts.map +1 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/stream.js +587 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/stream.js.map +1 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/transport.d.ts +43 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/transport.d.ts.map +1 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/transport.js +196 -0
- package/dist/core/extensions/builtin/cursor-cli-oauth/transport.js.map +1 -0
- package/dist/core/extensions/builtin/goal/channel-state-subscriptions.d.ts +9 -0
- package/dist/core/extensions/builtin/goal/channel-state-subscriptions.d.ts.map +1 -0
- package/dist/core/extensions/builtin/goal/channel-state-subscriptions.js +18 -0
- package/dist/core/extensions/builtin/goal/channel-state-subscriptions.js.map +1 -0
- package/dist/core/extensions/builtin/goal/monitor-continuation.d.ts.map +1 -1
- package/dist/core/extensions/builtin/goal/monitor-continuation.js +10 -9
- package/dist/core/extensions/builtin/goal/monitor-continuation.js.map +1 -1
- package/dist/core/extensions/builtin/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/index.js +5 -2
- package/dist/core/extensions/builtin/index.js.map +1 -1
- package/dist/core/extensions/builtin/loop-guard/detectors.d.ts.map +1 -1
- package/dist/core/extensions/builtin/loop-guard/detectors.js +21 -3
- package/dist/core/extensions/builtin/loop-guard/detectors.js.map +1 -1
- package/dist/core/extensions/builtin/loop-guard/escalation.d.ts +24 -0
- package/dist/core/extensions/builtin/loop-guard/escalation.d.ts.map +1 -0
- package/dist/core/extensions/builtin/loop-guard/escalation.js +77 -0
- package/dist/core/extensions/builtin/loop-guard/escalation.js.map +1 -0
- package/dist/core/extensions/builtin/loop-guard/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/loop-guard/index.js +98 -3
- package/dist/core/extensions/builtin/loop-guard/index.js.map +1 -1
- package/dist/core/extensions/builtin/loop-guard/notice.d.ts +9 -0
- package/dist/core/extensions/builtin/loop-guard/notice.d.ts.map +1 -1
- package/dist/core/extensions/builtin/loop-guard/notice.js +17 -0
- package/dist/core/extensions/builtin/loop-guard/notice.js.map +1 -1
- package/dist/core/extensions/builtin/loop-guard/policy.d.ts +4 -0
- package/dist/core/extensions/builtin/loop-guard/policy.d.ts.map +1 -1
- package/dist/core/extensions/builtin/loop-guard/policy.js +4 -0
- package/dist/core/extensions/builtin/loop-guard/policy.js.map +1 -1
- package/dist/core/extensions/builtin/loop-guard/renderer.d.ts +2 -0
- package/dist/core/extensions/builtin/loop-guard/renderer.d.ts.map +1 -1
- package/dist/core/extensions/builtin/loop-guard/renderer.js +11 -0
- package/dist/core/extensions/builtin/loop-guard/renderer.js.map +1 -1
- package/dist/core/extensions/builtin/loop-guard/tracker.d.ts +1 -1
- package/dist/core/extensions/builtin/loop-guard/tracker.d.ts.map +1 -1
- package/dist/core/extensions/builtin/loop-guard/tracker.js +3 -1
- package/dist/core/extensions/builtin/loop-guard/tracker.js.map +1 -1
- package/dist/core/extensions/builtin/monitor-state-event.d.ts +6 -0
- package/dist/core/extensions/builtin/monitor-state-event.d.ts.map +1 -1
- package/dist/core/extensions/builtin/monitor-state-event.js +10 -0
- package/dist/core/extensions/builtin/monitor-state-event.js.map +1 -1
- package/dist/core/model-resolver.js +1 -1
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/model-runtime.d.ts +7 -2
- package/dist/core/model-runtime.d.ts.map +1 -1
- package/dist/core/model-runtime.js +14 -2
- package/dist/core/model-runtime.js.map +1 -1
- package/dist/core/prompt-templates.d.ts +5 -0
- package/dist/core/prompt-templates.d.ts.map +1 -1
- package/dist/core/prompt-templates.js +8 -9
- package/dist/core/prompt-templates.js.map +1 -1
- package/dist/core/provider-display-names.d.ts.map +1 -1
- package/dist/core/provider-display-names.js +1 -0
- package/dist/core/provider-display-names.js.map +1 -1
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +6 -0
- package/dist/core/sdk.js.map +1 -1
- package/dist/modes/interactive/editor-paste-transfer.d.ts +10 -0
- package/dist/modes/interactive/editor-paste-transfer.d.ts.map +1 -1
- package/dist/modes/interactive/editor-paste-transfer.js +16 -0
- package/dist/modes/interactive/editor-paste-transfer.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +2 -2
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/rpc/connection-handler.d.ts.map +1 -1
- package/dist/modes/rpc/connection-handler.js +32 -27
- package/dist/modes/rpc/connection-handler.js.map +1 -1
- package/dist/modes/rpc/jsonl.d.ts +6 -1
- package/dist/modes/rpc/jsonl.d.ts.map +1 -1
- package/dist/modes/rpc/jsonl.js +47 -14
- package/dist/modes/rpc/jsonl.js.map +1 -1
- package/dist/modes/rpc/multi-session-host.d.ts.map +1 -1
- package/dist/modes/rpc/multi-session-host.js +26 -4
- package/dist/modes/rpc/multi-session-host.js.map +1 -1
- package/dist/modes/rpc/rpc-command-invocation.d.ts +5 -0
- package/dist/modes/rpc/rpc-command-invocation.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-command-invocation.js +2 -0
- package/dist/modes/rpc/rpc-command-invocation.js.map +1 -0
- package/dist/modes/rpc/rpc-command-surface.d.ts +49 -0
- package/dist/modes/rpc/rpc-command-surface.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-command-surface.js +40 -0
- package/dist/modes/rpc/rpc-command-surface.js.map +1 -0
- package/dist/modes/rpc/rpc-input-validation.d.ts +4 -0
- package/dist/modes/rpc/rpc-input-validation.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-input-validation.js +20 -0
- package/dist/modes/rpc/rpc-input-validation.js.map +1 -0
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +12 -1
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +12 -12
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/docs/providers.md +50 -1
- package/docs/rpc.md +78 -6
- package/docs/skills.md +14 -3
- package/node_modules/@bufbuild/protobuf/README.md +44 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/clone.d.ts +6 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/clone.js +66 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv1/boot.d.ts +1 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv1/boot.js +18 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv1/enum.d.ts +10 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv1/enum.js +31 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv1/extension.d.ts +9 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv1/extension.js +28 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv1/file.d.ts +1 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv1/file.js +18 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv1/index.d.ts +10 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv1/index.js +39 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv1/message.d.ts +10 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv1/message.js +24 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv1/service.d.ts +8 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv1/service.js +27 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv1/symbols.d.ts +140 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv1/symbols.js +43 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv1/types.d.ts +79 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv1/types.js +15 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv2/boot.d.ts +63 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv2/boot.js +105 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv2/embed.d.ts +43 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv2/embed.js +244 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv2/enum.d.ts +29 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv2/enum.js +58 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv2/extension.d.ts +9 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv2/extension.js +28 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv2/file.d.ts +7 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv2/file.js +35 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv2/index.d.ts +10 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv2/index.js +39 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv2/message.d.ts +15 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv2/message.js +24 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv2/restore-json-names.d.ts +5 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv2/restore-json-names.js +29 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv2/scalar.d.ts +9 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv2/scalar.js +67 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv2/service.d.ts +8 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv2/service.js +27 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv2/symbols.d.ts +145 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv2/symbols.js +74 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv2/types.d.ts +85 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/codegenv2/types.js +15 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/create.d.ts +9 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/create.js +259 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/descriptors.d.ts +634 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/descriptors.js +53 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/equals.d.ts +46 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/equals.js +209 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/extensions.d.ts +60 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/extensions.js +168 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/fields.d.ts +23 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/fields.js +45 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/from-binary.d.ts +48 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/from-binary.js +247 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/from-json.d.ts +73 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/from-json.js +739 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/index.d.ts +19 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/index.js +55 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/is-message.d.ts +7 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/is-message.js +33 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/json-value.d.ts +16 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/json-value.js +15 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/merge.d.ts +13 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/merge.js +70 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/package.json +4 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/proto-int64.d.ts +98 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/proto-int64.js +131 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/reflect/error.d.ts +9 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/reflect/error.js +36 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/reflect/guard.d.ts +20 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/reflect/guard.js +78 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/reflect/index.d.ts +8 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/reflect/index.js +41 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/reflect/names.d.ts +30 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/reflect/names.js +115 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/reflect/nested-types.d.ts +35 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/reflect/nested-types.js +110 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/reflect/path.d.ts +107 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/reflect/path.js +376 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/reflect/reflect-check.d.ts +19 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/reflect/reflect-check.js +268 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/reflect/reflect-types.d.ts +217 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/reflect/reflect-types.js +16 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/reflect/reflect.d.ts +43 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/reflect/reflect.js +546 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/reflect/scalar.d.ts +43 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/reflect/scalar.js +129 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/reflect/unsafe.d.ts +39 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/reflect/unsafe.js +149 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/registry.d.ts +98 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/registry.js +945 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/to-binary.d.ts +24 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/to-binary.js +199 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/to-json.d.ts +67 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/to-json.js +391 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/txtpb/from-text.d.ts +35 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/txtpb/from-text.js +684 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/txtpb/index.d.ts +4 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/txtpb/index.js +21 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/txtpb/is-group-like.d.ts +19 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/txtpb/is-group-like.js +47 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/txtpb/reader.d.ts +91 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/txtpb/reader.js +481 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/txtpb/to-text.d.ts +34 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/txtpb/to-text.js +358 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/txtpb/writer.d.ts +76 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/txtpb/writer.js +220 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/types.d.ts +135 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/types.js +15 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/unknown-enum.d.ts +10 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/unknown-enum.js +26 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wire/base64-encoding.d.ts +23 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wire/base64-encoding.js +156 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wire/binary-encoding.d.ts +268 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wire/binary-encoding.js +530 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wire/index.d.ts +5 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wire/index.js +34 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wire/size-delimited.d.ts +69 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wire/size-delimited.js +191 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wire/text-encoding.d.ts +28 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wire/text-encoding.js +61 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wire/text-format.d.ts +13 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wire/text-format.js +199 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wire/varint.d.ts +70 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wire/varint.js +322 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/any.d.ts +38 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/any.js +75 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/duration.d.ts +9 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/duration.js +39 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/any_pb.d.ts +238 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/any_pb.js +27 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/api_pb.d.ts +537 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/api_pb.js +39 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/compiler/plugin_pb.d.ts +490 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/compiler/plugin_pb.js +68 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/cpp_features_pb.d.ts +91 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/cpp_features_pb.js +60 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/descriptor_pb.d.ts +4143 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/descriptor_pb.js +892 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/duration_pb.d.ts +161 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/duration_pb.js +27 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/empty_pb.d.ts +39 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/empty_pb.js +27 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/field_mask_pb.d.ts +424 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/field_mask_pb.js +27 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/go_features_pb.d.ts +189 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/go_features_pb.js +126 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/java_features_pb.d.ts +194 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/java_features_pb.js +106 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/source_context_pb.d.ts +43 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/source_context_pb.js +27 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/struct_pb.d.ts +195 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/struct_pb.js +59 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/timestamp_pb.d.ts +222 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/timestamp_pb.js +27 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/type_pb.d.ts +722 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/type_pb.js +242 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/wrappers_pb.d.ts +330 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/gen/google/protobuf/wrappers_pb.js +67 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/index.d.ts +19 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/index.js +48 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/timestamp.d.ts +21 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/timestamp.js +57 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/wrappers.d.ts +25 -0
- package/node_modules/@bufbuild/protobuf/dist/commonjs/wkt/wrappers.js +66 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/clone.d.ts +6 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/clone.js +63 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv1/boot.d.ts +1 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv1/boot.js +14 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv1/enum.d.ts +10 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv1/enum.js +26 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv1/extension.d.ts +9 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv1/extension.js +25 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv1/file.d.ts +1 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv1/file.js +14 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv1/index.d.ts +10 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv1/index.js +23 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv1/message.d.ts +10 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv1/message.js +21 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv1/service.d.ts +8 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv1/service.js +24 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv1/symbols.d.ts +140 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv1/symbols.js +40 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv1/types.d.ts +79 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv1/types.js +14 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/boot.d.ts +63 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/boot.js +101 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/embed.d.ts +43 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/embed.js +239 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/enum.d.ts +29 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/enum.js +53 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/extension.d.ts +9 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/extension.js +25 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/file.d.ts +7 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/file.js +32 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/index.d.ts +10 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/index.js +23 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/message.d.ts +15 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/message.js +21 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/restore-json-names.d.ts +5 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/restore-json-names.js +26 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/scalar.d.ts +9 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/scalar.js +63 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/service.d.ts +8 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/service.js +24 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/symbols.d.ts +145 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/symbols.js +71 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/types.d.ts +85 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/codegenv2/types.js +14 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/create.d.ts +9 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/create.js +256 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/descriptors.d.ts +634 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/descriptors.js +50 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/equals.d.ts +46 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/equals.js +206 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/extensions.d.ts +60 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/extensions.js +159 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/fields.d.ts +23 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/fields.js +41 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/from-binary.d.ts +48 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/from-binary.js +241 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/from-json.d.ts +73 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/from-json.js +731 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/index.d.ts +19 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/index.js +29 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/is-message.d.ts +7 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/is-message.js +30 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/json-value.d.ts +16 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/json-value.js +14 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/merge.d.ts +13 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/merge.js +67 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/package.json +4 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/proto-int64.d.ts +98 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/proto-int64.js +128 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/reflect/error.d.ts +9 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/reflect/error.js +31 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/reflect/guard.d.ts +20 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/reflect/guard.js +71 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/reflect/index.d.ts +8 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/reflect/index.js +21 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/reflect/names.d.ts +30 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/reflect/names.js +109 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/reflect/nested-types.d.ts +35 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/reflect/nested-types.js +105 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/reflect/path.d.ts +107 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/reflect/path.js +369 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/reflect/reflect-check.d.ts +19 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/reflect/reflect-check.js +262 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/reflect/reflect-types.d.ts +217 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/reflect/reflect-types.js +14 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/reflect/reflect.d.ts +43 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/reflect/reflect.js +541 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/reflect/scalar.d.ts +43 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/reflect/scalar.js +124 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/reflect/unsafe.d.ts +39 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/reflect/unsafe.js +140 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/registry.d.ts +98 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/registry.js +939 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/to-binary.d.ts +24 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/to-binary.js +195 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/to-json.d.ts +67 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/to-json.js +386 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/txtpb/from-text.d.ts +35 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/txtpb/from-text.js +680 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/txtpb/index.d.ts +4 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/txtpb/index.js +15 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/txtpb/is-group-like.d.ts +19 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/txtpb/is-group-like.js +44 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/txtpb/reader.d.ts +91 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/txtpb/reader.js +477 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/txtpb/to-text.d.ts +34 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/txtpb/to-text.js +355 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/txtpb/writer.d.ts +76 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/txtpb/writer.js +214 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/types.d.ts +135 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/types.js +14 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/unknown-enum.d.ts +10 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/unknown-enum.js +23 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wire/base64-encoding.d.ts +23 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wire/base64-encoding.js +152 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wire/binary-encoding.d.ts +268 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wire/binary-encoding.js +525 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wire/index.d.ts +5 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wire/index.js +18 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wire/size-delimited.d.ts +69 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wire/size-delimited.js +186 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wire/text-encoding.d.ts +28 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wire/text-encoding.js +57 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wire/text-format.d.ts +13 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wire/text-format.js +195 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wire/varint.d.ts +70 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wire/varint.js +313 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/any.d.ts +38 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/any.js +69 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/duration.d.ts +9 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/duration.js +35 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/any_pb.d.ts +238 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/any_pb.js +24 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/api_pb.d.ts +537 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/api_pb.js +36 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/compiler/plugin_pb.d.ts +490 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/compiler/plugin_pb.js +65 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/cpp_features_pb.d.ts +91 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/cpp_features_pb.js +57 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/descriptor_pb.d.ts +4143 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/descriptor_pb.js +888 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/duration_pb.d.ts +161 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/duration_pb.js +24 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/empty_pb.d.ts +39 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/empty_pb.js +24 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/field_mask_pb.d.ts +424 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/field_mask_pb.js +24 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/go_features_pb.d.ts +189 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/go_features_pb.js +123 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/java_features_pb.d.ts +194 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/java_features_pb.js +103 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/source_context_pb.d.ts +43 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/source_context_pb.js +24 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/struct_pb.d.ts +195 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/struct_pb.js +56 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/timestamp_pb.d.ts +222 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/timestamp_pb.js +24 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/type_pb.d.ts +722 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/type_pb.js +239 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/wrappers_pb.d.ts +330 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/wrappers_pb.js +64 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/index.d.ts +19 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/index.js +32 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/timestamp.d.ts +21 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/timestamp.js +50 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/wrappers.d.ts +25 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/wrappers.js +61 -0
- package/node_modules/@bufbuild/protobuf/package.json +147 -0
- package/node_modules/@code-yeongyu/senpi-codemode/CHANGELOG.md +14 -0
- package/node_modules/@code-yeongyu/senpi-codemode/package.json +4 -4
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/cell-runtime.ts +2 -0
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/render.ts +43 -6
- package/node_modules/@code-yeongyu/senpi-codemode/src/tool/types.ts +4 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js +59 -17
- package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/agent.d.ts +14 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/agent.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/agent.js +14 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/agent.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/types.d.ts +12 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/types.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/types.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/package.json +3 -3
- package/node_modules/@earendil-works/pi-ai/README.md +3 -2
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/deterministic-id.d.ts +17 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/deterministic-id.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/deterministic-id.js +14 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/deterministic-id.js.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/exec-lifecycle.d.ts +13 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/exec-lifecycle.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/exec-lifecycle.js +33 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/exec-lifecycle.js.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/exec-modern.d.ts +79 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/exec-modern.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/exec-modern.js +360 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/exec-modern.js.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/gen/agent_pb.d.ts +16797 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/gen/agent_pb.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/gen/agent_pb.js +3828 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/gen/agent_pb.js.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/pi-args.d.ts +55 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/pi-args.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/pi-args.js +76 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/pi-args.js.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/types.d.ts +116 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/types.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/types.js +16 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/types.js.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent.d.ts +191 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent.js +3316 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent.js.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent.lazy.d.ts +29 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent.lazy.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent.lazy.js +33 -0
- package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent.lazy.js.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/compat.d.ts +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/compat.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/compat.js +3 -0
- package/node_modules/@earendil-works/pi-ai/dist/compat.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/cursor-agent-provider.d.ts +11 -0
- package/node_modules/@earendil-works/pi-ai/dist/cursor-agent-provider.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/cursor-agent-provider.js +11 -0
- package/node_modules/@earendil-works/pi-ai/dist/cursor-agent-provider.js.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/index.d.ts +3 -0
- package/node_modules/@earendil-works/pi-ai/dist/index.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/index.js +2 -0
- package/node_modules/@earendil-works/pi-ai/dist/index.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/model.d.ts +6 -1
- package/node_modules/@earendil-works/pi-ai/dist/model.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/model.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/cursor.d.ts +6 -9
- package/node_modules/@earendil-works/pi-ai/dist/providers/cursor.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/cursor.js +42 -9
- package/node_modules/@earendil-works/pi-ai/dist/providers/cursor.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/.manifest.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/amazon-bedrock.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/cerebras.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/cloudflare-ai-gateway.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/cloudflare-workers-ai.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/huggingface.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/openai-codex.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/openrouter.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/together.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/vercel-ai-gateway.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/types.d.ts +3 -1
- package/node_modules/@earendil-works/pi-ai/dist/types.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/types.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/block-symbols.d.ts +57 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/block-symbols.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/block-symbols.js +57 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/block-symbols.js.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/event-stream.d.ts +10 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/event-stream.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/event-stream.js +22 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/event-stream.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/package.json +3 -2
- package/node_modules/@earendil-works/pi-pty/package.json +1 -1
- package/node_modules/@earendil-works/pi-telemetry/package.json +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/autocomplete.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/autocomplete.js +21 -0
- package/node_modules/@earendil-works/pi-tui/dist/autocomplete.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/editor.js +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/editor.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/dollar-invocation-autocomplete.d.ts +9 -0
- package/node_modules/@earendil-works/pi-tui/dist/dollar-invocation-autocomplete.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-tui/dist/dollar-invocation-autocomplete.js +82 -0
- package/node_modules/@earendil-works/pi-tui/dist/dollar-invocation-autocomplete.js.map +1 -0
- package/node_modules/@earendil-works/pi-tui/package.json +1 -1
- package/package.json +11 -8
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
import { classifyCursorCliError } from "./errors.js";
|
|
2
|
+
import { CursorCliAbortError, CursorCliPromptTooLargeError, MAX_CURSOR_CLI_PROMPT_BYTES } from "./transport.js";
|
|
3
|
+
export const CURSOR_CLI_CONTEXT_RECAP_MAX_BYTES = 8 * 1024;
|
|
4
|
+
export const CURSOR_CLI_CONTEXT_RECAP_BEGIN = "===== senpi context recap =====";
|
|
5
|
+
export const CURSOR_CLI_CONTEXT_RECAP_END = "===== end senpi context recap =====";
|
|
6
|
+
function record(value) {
|
|
7
|
+
return value !== null && typeof value === "object" && !Array.isArray(value)
|
|
8
|
+
? value
|
|
9
|
+
: undefined;
|
|
10
|
+
}
|
|
11
|
+
function byteLength(text) {
|
|
12
|
+
return Buffer.byteLength(text, "utf8");
|
|
13
|
+
}
|
|
14
|
+
function utf8Prefix(text, maxBytes) {
|
|
15
|
+
if (byteLength(text) <= maxBytes)
|
|
16
|
+
return text;
|
|
17
|
+
const bytes = Buffer.from(text, "utf8");
|
|
18
|
+
let end = Math.max(0, Math.min(maxBytes, bytes.length));
|
|
19
|
+
while (end > 0 && (bytes[end] & 0xc0) === 0x80)
|
|
20
|
+
end -= 1;
|
|
21
|
+
return bytes.subarray(0, end).toString("utf8");
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Builds the one-turn context recap from senpi's own last exchanges, wrapped in
|
|
25
|
+
* explicit delimiters and hard-capped at `maxRecapBytes` (delimiters included).
|
|
26
|
+
* The newest exchanges are kept; older ones are dropped first.
|
|
27
|
+
*/
|
|
28
|
+
export function buildCursorCliContextRecap(model, exchanges, maxRecapBytes = CURSOR_CLI_CONTEXT_RECAP_MAX_BYTES) {
|
|
29
|
+
const usable = (exchanges ?? []).filter((exchange) => exchange.text.length > 0);
|
|
30
|
+
if (usable.length === 0)
|
|
31
|
+
return undefined;
|
|
32
|
+
const header = `${CURSOR_CLI_CONTEXT_RECAP_BEGIN}\n(${model === undefined ? "chat restarted" : `model switched to '${model}'`}; recent conversation from senpi's own records follows)`;
|
|
33
|
+
const overheadBytes = byteLength(header) + 1 + byteLength(CURSOR_CLI_CONTEXT_RECAP_END) + 1;
|
|
34
|
+
if (overheadBytes >= maxRecapBytes)
|
|
35
|
+
return undefined;
|
|
36
|
+
const budget = maxRecapBytes - overheadBytes;
|
|
37
|
+
const selected = [];
|
|
38
|
+
let used = 0;
|
|
39
|
+
for (let index = usable.length - 1; index >= 0; index -= 1) {
|
|
40
|
+
const exchange = usable[index];
|
|
41
|
+
const line = `${exchange.role}: ${exchange.text}`;
|
|
42
|
+
const cost = byteLength(line) + (selected.length > 0 ? 1 : 0);
|
|
43
|
+
if (used + cost <= budget) {
|
|
44
|
+
selected.unshift(line);
|
|
45
|
+
used += cost;
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
if (selected.length === 0) {
|
|
49
|
+
selected.unshift(utf8Prefix(line, budget));
|
|
50
|
+
used = budget;
|
|
51
|
+
}
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
if (selected.length === 0)
|
|
55
|
+
return undefined;
|
|
56
|
+
return `${header}\n${selected.join("\n")}\n${CURSOR_CLI_CONTEXT_RECAP_END}`;
|
|
57
|
+
}
|
|
58
|
+
function composePrompt(recap, prompt) {
|
|
59
|
+
return recap === undefined ? prompt : `${recap}\n\n${prompt}`;
|
|
60
|
+
}
|
|
61
|
+
function shrinkToCeiling(recap, rawPrompt, ceilingBytes) {
|
|
62
|
+
if (recap !== undefined) {
|
|
63
|
+
const composed = composePrompt(recap, rawPrompt);
|
|
64
|
+
if (byteLength(composed) <= ceilingBytes)
|
|
65
|
+
return { prompt: composed, recapDropped: false };
|
|
66
|
+
if (byteLength(rawPrompt) <= ceilingBytes)
|
|
67
|
+
return { prompt: rawPrompt, recapDropped: true };
|
|
68
|
+
throw new CursorCliPromptTooLargeError(byteLength(rawPrompt), ceilingBytes);
|
|
69
|
+
}
|
|
70
|
+
if (byteLength(rawPrompt) > ceilingBytes) {
|
|
71
|
+
throw new CursorCliPromptTooLargeError(byteLength(rawPrompt), ceilingBytes);
|
|
72
|
+
}
|
|
73
|
+
return { prompt: rawPrompt, recapDropped: false };
|
|
74
|
+
}
|
|
75
|
+
function isAbort(error) {
|
|
76
|
+
if (error instanceof CursorCliAbortError)
|
|
77
|
+
return true;
|
|
78
|
+
const value = record(error);
|
|
79
|
+
return value !== undefined && (value.type === "aborted" || value.kind === "aborted");
|
|
80
|
+
}
|
|
81
|
+
function errorInput(error) {
|
|
82
|
+
const value = record(error);
|
|
83
|
+
if (value && ("exitCode" in value || "stderr" in value || "resultEvent" in value || "thrown" in value)) {
|
|
84
|
+
return error;
|
|
85
|
+
}
|
|
86
|
+
return { thrown: error };
|
|
87
|
+
}
|
|
88
|
+
function defaultInitFromEvent(event) {
|
|
89
|
+
const value = record(event);
|
|
90
|
+
if (value?.type !== "system" || value.subtype !== "init")
|
|
91
|
+
return undefined;
|
|
92
|
+
const chatId = typeof value.session_id === "string" ? value.session_id : undefined;
|
|
93
|
+
const model = typeof value.model === "string" ? value.model : undefined;
|
|
94
|
+
if (chatId === undefined || chatId.length === 0 || model === undefined || model.length === 0) {
|
|
95
|
+
return undefined;
|
|
96
|
+
}
|
|
97
|
+
return { chatId, model };
|
|
98
|
+
}
|
|
99
|
+
function defaultErrorFromEvent(event) {
|
|
100
|
+
const value = record(event);
|
|
101
|
+
if (value?.type === "malformed_stream")
|
|
102
|
+
return { thrown: event };
|
|
103
|
+
if (value?.type === "result" && (value.is_error === true || value.subtype === "error")) {
|
|
104
|
+
return { resultEvent: event };
|
|
105
|
+
}
|
|
106
|
+
return undefined;
|
|
107
|
+
}
|
|
108
|
+
function defaultIsVisibleAssistantDelta(event) {
|
|
109
|
+
const value = record(event);
|
|
110
|
+
if (!value)
|
|
111
|
+
return false;
|
|
112
|
+
if (value.type === "assistant") {
|
|
113
|
+
const message = record(value.message);
|
|
114
|
+
if (!Array.isArray(message?.content))
|
|
115
|
+
return false;
|
|
116
|
+
return message.content.some((item) => {
|
|
117
|
+
const block = record(item);
|
|
118
|
+
return block?.type === "text" && typeof block.text === "string" && block.text.length > 0;
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
return ((value.type === "assistant_delta" || value.type === "text_delta") &&
|
|
122
|
+
typeof value.delta === "string" &&
|
|
123
|
+
value.delta.length > 0);
|
|
124
|
+
}
|
|
125
|
+
function restartNotice(previousChatId, reason, contextReinjected) {
|
|
126
|
+
const cause = reason === "context_overflow" ? "context overflow" : "resume failure";
|
|
127
|
+
return {
|
|
128
|
+
type: "cursor_chat_restarted",
|
|
129
|
+
message: `Cursor chat '${previousChatId}' could not continue after a ${cause}; a fresh chat was started${contextReinjected ? " and senpi's recent context was re-injected" : ""}.`,
|
|
130
|
+
previousChatId,
|
|
131
|
+
reason,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
class CursorCliNoAssistantOutputError extends Error {
|
|
135
|
+
constructor() {
|
|
136
|
+
super("Cursor CLI attempt completed without visible assistant text");
|
|
137
|
+
this.name = "CursorCliNoAssistantOutputError";
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Sticky per-senpi-session chat routing for the Cursor CLI lane. This lane
|
|
142
|
+
* spawns once per turn, so routing state is just the last observed
|
|
143
|
+
* `system/init` per senpi session - no resident CLI process exists to manage.
|
|
144
|
+
* The turn decision itself is pure; records change only when an init event is
|
|
145
|
+
* observed, so cancelled or failed turns leave prior routing intact.
|
|
146
|
+
*/
|
|
147
|
+
export class CursorCliSessionRouter {
|
|
148
|
+
constructor(deps = {}) {
|
|
149
|
+
this.records = new Map();
|
|
150
|
+
this.nowFn = deps.now ?? Date.now;
|
|
151
|
+
}
|
|
152
|
+
getRecord(senpiSessionId) {
|
|
153
|
+
const entry = this.records.get(senpiSessionId);
|
|
154
|
+
return entry === undefined ? undefined : Object.freeze({ ...entry });
|
|
155
|
+
}
|
|
156
|
+
clear(senpiSessionId) {
|
|
157
|
+
this.records.delete(senpiSessionId);
|
|
158
|
+
}
|
|
159
|
+
planTurn(context, input, policy = {}) {
|
|
160
|
+
const ceilingBytes = policy.promptCeilingBytes ?? MAX_CURSOR_CLI_PROMPT_BYTES;
|
|
161
|
+
const resumeEnabled = (policy.resumeMode ?? "auto") === "auto";
|
|
162
|
+
const bound = this.records.get(context.senpiSessionId);
|
|
163
|
+
// Chats live inside each account's HOME, so a record bound to another
|
|
164
|
+
// account can never be resumed here.
|
|
165
|
+
const resumable = bound !== undefined && bound.accountName === context.accountName && resumeEnabled;
|
|
166
|
+
const resumeChatId = resumable && bound !== undefined ? bound.chatId : undefined;
|
|
167
|
+
const modelSwitch = resumable && bound !== undefined && bound.lastModel !== input.model;
|
|
168
|
+
const recap = modelSwitch && policy.contextRecapOnModelSwitch !== false
|
|
169
|
+
? buildCursorCliContextRecap(input.model, input.recentExchanges, policy.maxRecapBytes)
|
|
170
|
+
: undefined;
|
|
171
|
+
const shrunk = shrinkToCeiling(recap, input.prompt, ceilingBytes);
|
|
172
|
+
return {
|
|
173
|
+
resumeChatId,
|
|
174
|
+
prompt: shrunk.prompt,
|
|
175
|
+
contextRecap: shrunk.recapDropped ? undefined : recap,
|
|
176
|
+
modelSwitch,
|
|
177
|
+
recapDroppedForCeiling: shrunk.recapDropped,
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
/** Records the chat id and effective model reported by `system/init`. */
|
|
181
|
+
observeInit(context, init, at = this.nowFn()) {
|
|
182
|
+
this.records.set(context.senpiSessionId, {
|
|
183
|
+
accountName: context.accountName,
|
|
184
|
+
chatId: init.chatId,
|
|
185
|
+
lastModel: init.model,
|
|
186
|
+
lastUsedAt: at,
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
async *runTurn(options, input) {
|
|
190
|
+
const now = options.now ?? this.nowFn;
|
|
191
|
+
const classify = options.classify ?? classifyCursorCliError;
|
|
192
|
+
const errorFromEvent = options.errorFromEvent ?? defaultErrorFromEvent;
|
|
193
|
+
const initFromEvent = options.initFromEvent ?? defaultInitFromEvent;
|
|
194
|
+
const isVisibleAssistantDelta = options.isVisibleAssistantDelta ?? defaultIsVisibleAssistantDelta;
|
|
195
|
+
const ceilingBytes = options.promptCeilingBytes ?? MAX_CURSOR_CLI_PROMPT_BYTES;
|
|
196
|
+
const context = {
|
|
197
|
+
senpiSessionId: options.senpiSessionId,
|
|
198
|
+
accountName: options.accountName,
|
|
199
|
+
};
|
|
200
|
+
const plan = this.planTurn(context, input, {
|
|
201
|
+
resumeMode: options.resumeMode,
|
|
202
|
+
contextRecapOnModelSwitch: options.contextRecapOnModelSwitch,
|
|
203
|
+
maxRecapBytes: options.maxRecapBytes,
|
|
204
|
+
promptCeilingBytes: options.promptCeilingBytes,
|
|
205
|
+
});
|
|
206
|
+
let attempt = { prompt: plan.prompt, resumeChatId: plan.resumeChatId };
|
|
207
|
+
const previousChatId = plan.resumeChatId;
|
|
208
|
+
let fellBack = false;
|
|
209
|
+
while (true) {
|
|
210
|
+
let visibleAssistantDeltaEmitted = false;
|
|
211
|
+
try {
|
|
212
|
+
const stream = await options.runAttempt(attempt);
|
|
213
|
+
for await (const event of stream) {
|
|
214
|
+
const failure = errorFromEvent(event);
|
|
215
|
+
if (failure !== undefined)
|
|
216
|
+
throw failure;
|
|
217
|
+
const init = initFromEvent(event);
|
|
218
|
+
if (init !== undefined)
|
|
219
|
+
this.observeInit(context, init, now());
|
|
220
|
+
visibleAssistantDeltaEmitted ||= isVisibleAssistantDelta(event);
|
|
221
|
+
yield event;
|
|
222
|
+
}
|
|
223
|
+
if (!visibleAssistantDeltaEmitted)
|
|
224
|
+
throw new CursorCliNoAssistantOutputError();
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
catch (error) {
|
|
228
|
+
// Aborts and post-output failures must surface exactly as thrown;
|
|
229
|
+
// account-level failures belong to the failover layer above.
|
|
230
|
+
if (isAbort(error) || fellBack || previousChatId === undefined || visibleAssistantDeltaEmitted) {
|
|
231
|
+
throw error;
|
|
232
|
+
}
|
|
233
|
+
const classification = classify(errorInput(error));
|
|
234
|
+
if (classification.kind !== "context_overflow" && classification.kind !== "other")
|
|
235
|
+
throw error;
|
|
236
|
+
const reason = classification.kind === "context_overflow" ? "context_overflow" : "resume_failed";
|
|
237
|
+
const recap = plan.contextRecap ?? buildCursorCliContextRecap(undefined, input.recentExchanges, options.maxRecapBytes);
|
|
238
|
+
const shrunk = shrinkToCeiling(recap, input.prompt, ceilingBytes);
|
|
239
|
+
yield restartNotice(previousChatId, reason, recap !== undefined && !shrunk.recapDropped);
|
|
240
|
+
attempt = { prompt: shrunk.prompt, resumeChatId: undefined };
|
|
241
|
+
fellBack = true;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
/** Shared router instance; one record per senpi session, in-process. */
|
|
247
|
+
export const cursorCliSessionRouter = new CursorCliSessionRouter();
|
|
248
|
+
//# sourceMappingURL=session-router.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-router.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/cursor-cli-oauth/session-router.ts"],"names":[],"mappings":"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","sourcesContent":["import { type CursorCliErrorClassification, type CursorCliErrorInput, classifyCursorCliError } from \"./errors.ts\";\nimport type { CursorCliOauthResumeMode } from \"./settings.ts\";\nimport { CursorCliAbortError, CursorCliPromptTooLargeError, MAX_CURSOR_CLI_PROMPT_BYTES } from \"./transport.ts\";\n\nexport const CURSOR_CLI_CONTEXT_RECAP_MAX_BYTES = 8 * 1024;\nexport const CURSOR_CLI_CONTEXT_RECAP_BEGIN = \"===== senpi context recap =====\";\nexport const CURSOR_CLI_CONTEXT_RECAP_END = \"===== end senpi context recap =====\";\n\nexport type CursorCliSessionRecord = {\n\treadonly accountName: string;\n\treadonly chatId: string;\n\treadonly lastModel: string;\n\treadonly lastUsedAt: number;\n};\n\nexport type CursorCliRecapExchange = {\n\treadonly role: \"user\" | \"assistant\";\n\treadonly text: string;\n};\n\nexport type CursorCliSessionTurnContext = {\n\treadonly senpiSessionId: string;\n\treadonly accountName: string;\n};\n\nexport type CursorCliSessionTurnInput = {\n\treadonly prompt: string;\n\treadonly model: string | undefined;\n\treadonly recentExchanges?: readonly CursorCliRecapExchange[];\n};\n\nexport type CursorCliSessionPolicy = {\n\treadonly resumeMode?: CursorCliOauthResumeMode;\n\treadonly contextRecapOnModelSwitch?: boolean;\n\treadonly maxRecapBytes?: number;\n\treadonly promptCeilingBytes?: number;\n};\n\nexport type CursorCliTurnPlan = {\n\t/** Chat id passed as `--resume`, or undefined for a fresh chat. */\n\treadonly resumeChatId: string | undefined;\n\t/** Final spawn prompt: the recap block prepended unless it had to be dropped for the ceiling. */\n\treadonly prompt: string;\n\treadonly contextRecap: string | undefined;\n\treadonly modelSwitch: boolean;\n\treadonly recapDroppedForCeiling: boolean;\n};\n\nexport type CursorCliSessionAttempt = {\n\treadonly prompt: string;\n\treadonly resumeChatId: string | undefined;\n};\n\nexport type CursorCliSessionInitObservation = {\n\treadonly chatId: string;\n\treadonly model: string;\n};\n\nexport type CursorCliSessionRestartReason = \"resume_failed\" | \"context_overflow\";\n\nexport type CursorCliSessionRestartNotice = {\n\treadonly type: \"cursor_chat_restarted\";\n\treadonly message: string;\n\treadonly previousChatId: string;\n\treadonly reason: CursorCliSessionRestartReason;\n};\n\nexport type CursorCliSessionRunOptions<TEvent> = {\n\treadonly senpiSessionId: string;\n\treadonly accountName: string;\n\treadonly runAttempt: (attempt: CursorCliSessionAttempt) => AsyncIterable<TEvent> | Promise<AsyncIterable<TEvent>>;\n\treadonly now?: () => number;\n\treadonly classify?: (input: CursorCliErrorInput) => CursorCliErrorClassification;\n\treadonly errorFromEvent?: (event: TEvent) => CursorCliErrorInput | undefined;\n\treadonly initFromEvent?: (event: TEvent) => CursorCliSessionInitObservation | undefined;\n\treadonly isVisibleAssistantDelta?: (event: TEvent) => boolean;\n} & CursorCliSessionPolicy;\n\nexport type CursorCliSessionRouterDeps = {\n\treadonly now?: () => number;\n};\n\nfunction record(value: unknown): Record<string, unknown> | undefined {\n\treturn value !== null && typeof value === \"object\" && !Array.isArray(value)\n\t\t? (value as Record<string, unknown>)\n\t\t: undefined;\n}\n\nfunction byteLength(text: string): number {\n\treturn Buffer.byteLength(text, \"utf8\");\n}\n\nfunction utf8Prefix(text: string, maxBytes: number): string {\n\tif (byteLength(text) <= maxBytes) return text;\n\tconst bytes = Buffer.from(text, \"utf8\");\n\tlet end = Math.max(0, Math.min(maxBytes, bytes.length));\n\twhile (end > 0 && (bytes[end]! & 0xc0) === 0x80) end -= 1;\n\treturn bytes.subarray(0, end).toString(\"utf8\");\n}\n\n/**\n * Builds the one-turn context recap from senpi's own last exchanges, wrapped in\n * explicit delimiters and hard-capped at `maxRecapBytes` (delimiters included).\n * The newest exchanges are kept; older ones are dropped first.\n */\nexport function buildCursorCliContextRecap(\n\tmodel: string | undefined,\n\texchanges: readonly CursorCliRecapExchange[] | undefined,\n\tmaxRecapBytes: number = CURSOR_CLI_CONTEXT_RECAP_MAX_BYTES,\n): string | undefined {\n\tconst usable = (exchanges ?? []).filter((exchange) => exchange.text.length > 0);\n\tif (usable.length === 0) return undefined;\n\tconst header = `${CURSOR_CLI_CONTEXT_RECAP_BEGIN}\\n(${\n\t\tmodel === undefined ? \"chat restarted\" : `model switched to '${model}'`\n\t}; recent conversation from senpi's own records follows)`;\n\tconst overheadBytes = byteLength(header) + 1 + byteLength(CURSOR_CLI_CONTEXT_RECAP_END) + 1;\n\tif (overheadBytes >= maxRecapBytes) return undefined;\n\tconst budget = maxRecapBytes - overheadBytes;\n\tconst selected: string[] = [];\n\tlet used = 0;\n\tfor (let index = usable.length - 1; index >= 0; index -= 1) {\n\t\tconst exchange = usable[index]!;\n\t\tconst line = `${exchange.role}: ${exchange.text}`;\n\t\tconst cost = byteLength(line) + (selected.length > 0 ? 1 : 0);\n\t\tif (used + cost <= budget) {\n\t\t\tselected.unshift(line);\n\t\t\tused += cost;\n\t\t\tcontinue;\n\t\t}\n\t\tif (selected.length === 0) {\n\t\t\tselected.unshift(utf8Prefix(line, budget));\n\t\t\tused = budget;\n\t\t}\n\t\tbreak;\n\t}\n\tif (selected.length === 0) return undefined;\n\treturn `${header}\\n${selected.join(\"\\n\")}\\n${CURSOR_CLI_CONTEXT_RECAP_END}`;\n}\n\nfunction composePrompt(recap: string | undefined, prompt: string): string {\n\treturn recap === undefined ? prompt : `${recap}\\n\\n${prompt}`;\n}\n\nfunction shrinkToCeiling(\n\trecap: string | undefined,\n\trawPrompt: string,\n\tceilingBytes: number,\n): { prompt: string; recapDropped: boolean } {\n\tif (recap !== undefined) {\n\t\tconst composed = composePrompt(recap, rawPrompt);\n\t\tif (byteLength(composed) <= ceilingBytes) return { prompt: composed, recapDropped: false };\n\t\tif (byteLength(rawPrompt) <= ceilingBytes) return { prompt: rawPrompt, recapDropped: true };\n\t\tthrow new CursorCliPromptTooLargeError(byteLength(rawPrompt), ceilingBytes);\n\t}\n\tif (byteLength(rawPrompt) > ceilingBytes) {\n\t\tthrow new CursorCliPromptTooLargeError(byteLength(rawPrompt), ceilingBytes);\n\t}\n\treturn { prompt: rawPrompt, recapDropped: false };\n}\n\nfunction isAbort(error: unknown): boolean {\n\tif (error instanceof CursorCliAbortError) return true;\n\tconst value = record(error);\n\treturn value !== undefined && (value.type === \"aborted\" || value.kind === \"aborted\");\n}\n\nfunction errorInput(error: unknown): CursorCliErrorInput {\n\tconst value = record(error);\n\tif (value && (\"exitCode\" in value || \"stderr\" in value || \"resultEvent\" in value || \"thrown\" in value)) {\n\t\treturn error as CursorCliErrorInput;\n\t}\n\treturn { thrown: error };\n}\n\nfunction defaultInitFromEvent<TEvent>(event: TEvent): CursorCliSessionInitObservation | undefined {\n\tconst value = record(event);\n\tif (value?.type !== \"system\" || value.subtype !== \"init\") return undefined;\n\tconst chatId = typeof value.session_id === \"string\" ? value.session_id : undefined;\n\tconst model = typeof value.model === \"string\" ? value.model : undefined;\n\tif (chatId === undefined || chatId.length === 0 || model === undefined || model.length === 0) {\n\t\treturn undefined;\n\t}\n\treturn { chatId, model };\n}\n\nfunction defaultErrorFromEvent<TEvent>(event: TEvent): CursorCliErrorInput | undefined {\n\tconst value = record(event);\n\tif (value?.type === \"malformed_stream\") return { thrown: event };\n\tif (value?.type === \"result\" && (value.is_error === true || value.subtype === \"error\")) {\n\t\treturn { resultEvent: event };\n\t}\n\treturn undefined;\n}\n\nfunction defaultIsVisibleAssistantDelta<TEvent>(event: TEvent): boolean {\n\tconst value = record(event);\n\tif (!value) return false;\n\tif (value.type === \"assistant\") {\n\t\tconst message = record(value.message);\n\t\tif (!Array.isArray(message?.content)) return false;\n\t\treturn message.content.some((item) => {\n\t\t\tconst block = record(item);\n\t\t\treturn block?.type === \"text\" && typeof block.text === \"string\" && block.text.length > 0;\n\t\t});\n\t}\n\treturn (\n\t\t(value.type === \"assistant_delta\" || value.type === \"text_delta\") &&\n\t\ttypeof value.delta === \"string\" &&\n\t\tvalue.delta.length > 0\n\t);\n}\n\nfunction restartNotice(\n\tpreviousChatId: string,\n\treason: CursorCliSessionRestartReason,\n\tcontextReinjected: boolean,\n): CursorCliSessionRestartNotice {\n\tconst cause = reason === \"context_overflow\" ? \"context overflow\" : \"resume failure\";\n\treturn {\n\t\ttype: \"cursor_chat_restarted\",\n\t\tmessage: `Cursor chat '${previousChatId}' could not continue after a ${cause}; a fresh chat was started${\n\t\t\tcontextReinjected ? \" and senpi's recent context was re-injected\" : \"\"\n\t\t}.`,\n\t\tpreviousChatId,\n\t\treason,\n\t};\n}\n\nclass CursorCliNoAssistantOutputError extends Error {\n\tconstructor() {\n\t\tsuper(\"Cursor CLI attempt completed without visible assistant text\");\n\t\tthis.name = \"CursorCliNoAssistantOutputError\";\n\t}\n}\n\n/**\n * Sticky per-senpi-session chat routing for the Cursor CLI lane. This lane\n * spawns once per turn, so routing state is just the last observed\n * `system/init` per senpi session - no resident CLI process exists to manage.\n * The turn decision itself is pure; records change only when an init event is\n * observed, so cancelled or failed turns leave prior routing intact.\n */\nexport class CursorCliSessionRouter {\n\tprivate readonly records = new Map<string, CursorCliSessionRecord>();\n\tprivate readonly nowFn: () => number;\n\n\tconstructor(deps: CursorCliSessionRouterDeps = {}) {\n\t\tthis.nowFn = deps.now ?? Date.now;\n\t}\n\n\tgetRecord(senpiSessionId: string): Readonly<CursorCliSessionRecord> | undefined {\n\t\tconst entry = this.records.get(senpiSessionId);\n\t\treturn entry === undefined ? undefined : Object.freeze({ ...entry });\n\t}\n\n\tclear(senpiSessionId: string): void {\n\t\tthis.records.delete(senpiSessionId);\n\t}\n\n\tplanTurn(\n\t\tcontext: CursorCliSessionTurnContext,\n\t\tinput: CursorCliSessionTurnInput,\n\t\tpolicy: CursorCliSessionPolicy = {},\n\t): CursorCliTurnPlan {\n\t\tconst ceilingBytes = policy.promptCeilingBytes ?? MAX_CURSOR_CLI_PROMPT_BYTES;\n\t\tconst resumeEnabled = (policy.resumeMode ?? \"auto\") === \"auto\";\n\t\tconst bound = this.records.get(context.senpiSessionId);\n\t\t// Chats live inside each account's HOME, so a record bound to another\n\t\t// account can never be resumed here.\n\t\tconst resumable = bound !== undefined && bound.accountName === context.accountName && resumeEnabled;\n\t\tconst resumeChatId = resumable && bound !== undefined ? bound.chatId : undefined;\n\t\tconst modelSwitch = resumable && bound !== undefined && bound.lastModel !== input.model;\n\t\tconst recap =\n\t\t\tmodelSwitch && policy.contextRecapOnModelSwitch !== false\n\t\t\t\t? buildCursorCliContextRecap(input.model, input.recentExchanges, policy.maxRecapBytes)\n\t\t\t\t: undefined;\n\t\tconst shrunk = shrinkToCeiling(recap, input.prompt, ceilingBytes);\n\t\treturn {\n\t\t\tresumeChatId,\n\t\t\tprompt: shrunk.prompt,\n\t\t\tcontextRecap: shrunk.recapDropped ? undefined : recap,\n\t\t\tmodelSwitch,\n\t\t\trecapDroppedForCeiling: shrunk.recapDropped,\n\t\t};\n\t}\n\n\t/** Records the chat id and effective model reported by `system/init`. */\n\tobserveInit(\n\t\tcontext: CursorCliSessionTurnContext,\n\t\tinit: CursorCliSessionInitObservation,\n\t\tat: number = this.nowFn(),\n\t): void {\n\t\tthis.records.set(context.senpiSessionId, {\n\t\t\taccountName: context.accountName,\n\t\t\tchatId: init.chatId,\n\t\t\tlastModel: init.model,\n\t\t\tlastUsedAt: at,\n\t\t});\n\t}\n\n\tasync *runTurn<TEvent>(\n\t\toptions: CursorCliSessionRunOptions<TEvent>,\n\t\tinput: CursorCliSessionTurnInput,\n\t): AsyncGenerator<TEvent | CursorCliSessionRestartNotice> {\n\t\tconst now = options.now ?? this.nowFn;\n\t\tconst classify = options.classify ?? classifyCursorCliError;\n\t\tconst errorFromEvent = options.errorFromEvent ?? defaultErrorFromEvent;\n\t\tconst initFromEvent = options.initFromEvent ?? defaultInitFromEvent;\n\t\tconst isVisibleAssistantDelta = options.isVisibleAssistantDelta ?? defaultIsVisibleAssistantDelta;\n\t\tconst ceilingBytes = options.promptCeilingBytes ?? MAX_CURSOR_CLI_PROMPT_BYTES;\n\t\tconst context: CursorCliSessionTurnContext = {\n\t\t\tsenpiSessionId: options.senpiSessionId,\n\t\t\taccountName: options.accountName,\n\t\t};\n\t\tconst plan = this.planTurn(context, input, {\n\t\t\tresumeMode: options.resumeMode,\n\t\t\tcontextRecapOnModelSwitch: options.contextRecapOnModelSwitch,\n\t\t\tmaxRecapBytes: options.maxRecapBytes,\n\t\t\tpromptCeilingBytes: options.promptCeilingBytes,\n\t\t});\n\n\t\tlet attempt: CursorCliSessionAttempt = { prompt: plan.prompt, resumeChatId: plan.resumeChatId };\n\t\tconst previousChatId = plan.resumeChatId;\n\t\tlet fellBack = false;\n\n\t\twhile (true) {\n\t\t\tlet visibleAssistantDeltaEmitted = false;\n\t\t\ttry {\n\t\t\t\tconst stream = await options.runAttempt(attempt);\n\t\t\t\tfor await (const event of stream) {\n\t\t\t\t\tconst failure = errorFromEvent(event);\n\t\t\t\t\tif (failure !== undefined) throw failure;\n\t\t\t\t\tconst init = initFromEvent(event);\n\t\t\t\t\tif (init !== undefined) this.observeInit(context, init, now());\n\t\t\t\t\tvisibleAssistantDeltaEmitted ||= isVisibleAssistantDelta(event);\n\t\t\t\t\tyield event;\n\t\t\t\t}\n\t\t\t\tif (!visibleAssistantDeltaEmitted) throw new CursorCliNoAssistantOutputError();\n\t\t\t\treturn;\n\t\t\t} catch (error) {\n\t\t\t\t// Aborts and post-output failures must surface exactly as thrown;\n\t\t\t\t// account-level failures belong to the failover layer above.\n\t\t\t\tif (isAbort(error) || fellBack || previousChatId === undefined || visibleAssistantDeltaEmitted) {\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t\tconst classification = classify(errorInput(error));\n\t\t\t\tif (classification.kind !== \"context_overflow\" && classification.kind !== \"other\") throw error;\n\t\t\t\tconst reason: CursorCliSessionRestartReason =\n\t\t\t\t\tclassification.kind === \"context_overflow\" ? \"context_overflow\" : \"resume_failed\";\n\t\t\t\tconst recap =\n\t\t\t\t\tplan.contextRecap ?? buildCursorCliContextRecap(undefined, input.recentExchanges, options.maxRecapBytes);\n\t\t\t\tconst shrunk = shrinkToCeiling(recap, input.prompt, ceilingBytes);\n\t\t\t\tyield restartNotice(previousChatId, reason, recap !== undefined && !shrunk.recapDropped);\n\t\t\t\tattempt = { prompt: shrunk.prompt, resumeChatId: undefined };\n\t\t\t\tfellBack = true;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/** Shared router instance; one record per senpi session, in-process. */\nexport const cursorCliSessionRouter = new CursorCliSessionRouter();\n"]}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export type CursorCliOauthExecutionMode = "agent" | "plan";
|
|
2
|
+
export type CursorCliOauthResumeMode = "auto" | "off";
|
|
3
|
+
export interface CursorCliOauthProviderSettings {
|
|
4
|
+
readonly enabled: boolean;
|
|
5
|
+
readonly executablePath: string | undefined;
|
|
6
|
+
readonly forceExecution: boolean;
|
|
7
|
+
readonly noApprovalAcknowledgedAt: string | undefined;
|
|
8
|
+
readonly executionMode: CursorCliOauthExecutionMode;
|
|
9
|
+
readonly resumeMode: CursorCliOauthResumeMode;
|
|
10
|
+
readonly pinnedAccount: string | undefined;
|
|
11
|
+
readonly contextRecapOnModelSwitch: boolean;
|
|
12
|
+
readonly modelCatalogTtlHours: number;
|
|
13
|
+
readonly sandboxMode: string | undefined;
|
|
14
|
+
/** Exact full commands the spawned CLI must refuse; globs are not supported. */
|
|
15
|
+
readonly denyCommands?: string[];
|
|
16
|
+
}
|
|
17
|
+
type Environment = Readonly<Record<string, string | undefined>>;
|
|
18
|
+
/** Parse one provider settings block with environment values taking precedence. */
|
|
19
|
+
export declare function parseCursorCliOauthProviderSettings(value: unknown, environment: Environment): CursorCliOauthProviderSettings;
|
|
20
|
+
/**
|
|
21
|
+
* Build the probe-owned sandbox allowlist validator without hardcoding modes in settings parsing.
|
|
22
|
+
* Each distinct rejected mode is reported once through the supplied warning hook.
|
|
23
|
+
*/
|
|
24
|
+
export declare function createCursorCliOauthSandboxModeValidator(acceptedModes: ReadonlySet<string>, onWarning: (message: string) => void): (value: string | undefined) => string | undefined;
|
|
25
|
+
/** Load global and project settings afresh, with env values taking final precedence. */
|
|
26
|
+
export declare function loadCursorCliOauthProviderSettingsFromDisk(cwd: string): CursorCliOauthProviderSettings;
|
|
27
|
+
/**
|
|
28
|
+
* Read-modify-write `noApprovalAcknowledgedAt` into the provider block of the
|
|
29
|
+
* global settings file, preserving every other key. An unparseable file is
|
|
30
|
+
* reported instead of silently clobbered, so an acknowledgement can never
|
|
31
|
+
* claim success while leaving the settings unwritten.
|
|
32
|
+
*/
|
|
33
|
+
export declare function persistCursorCliNoApprovalAcknowledgement(cwd: string, acknowledgedAt: string): void;
|
|
34
|
+
export {};
|
|
35
|
+
//# sourceMappingURL=settings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/cursor-cli-oauth/settings.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,2BAA2B,GAAG,OAAO,GAAG,MAAM,CAAC;AAC3D,MAAM,MAAM,wBAAwB,GAAG,MAAM,GAAG,KAAK,CAAC;AAEtD,MAAM,WAAW,8BAA8B;IAC9C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,wBAAwB,EAAE,MAAM,GAAG,SAAS,CAAC;IACtD,QAAQ,CAAC,aAAa,EAAE,2BAA2B,CAAC;IACpD,QAAQ,CAAC,UAAU,EAAE,wBAAwB,CAAC;IAC9C,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,yBAAyB,EAAE,OAAO,CAAC;IAC5C,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,gFAAgF;IAChF,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACjC;AAMD,KAAK,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;AAmJhE,mFAAmF;AACnF,wBAAgB,mCAAmC,CAClD,KAAK,EAAE,OAAO,EACd,WAAW,EAAE,WAAW,GACtB,8BAA8B,CAEhC;AAED;;;GAGG;AACH,wBAAgB,wCAAwC,CACvD,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,EAClC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAClC,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,MAAM,GAAG,SAAS,CAUnD;AAED,wFAAwF;AACxF,wBAAgB,0CAA0C,CAAC,GAAG,EAAE,MAAM,GAAG,8BAA8B,CAStG;AAED;;;;;GAKG;AACH,wBAAgB,yCAAyC,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,CAwBnG"}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import { getAgentDir } from "../../../../config.js";
|
|
2
|
+
import { FileSettingsStorage, parseSettingsJson, SettingsManager } from "../../../settings-manager.js";
|
|
3
|
+
const DEFAULT_SETTINGS = {
|
|
4
|
+
enabled: false,
|
|
5
|
+
executablePath: undefined,
|
|
6
|
+
forceExecution: true,
|
|
7
|
+
noApprovalAcknowledgedAt: undefined,
|
|
8
|
+
executionMode: "agent",
|
|
9
|
+
resumeMode: "auto",
|
|
10
|
+
pinnedAccount: undefined,
|
|
11
|
+
contextRecapOnModelSwitch: true,
|
|
12
|
+
modelCatalogTtlHours: 24,
|
|
13
|
+
sandboxMode: undefined,
|
|
14
|
+
denyCommands: [],
|
|
15
|
+
};
|
|
16
|
+
function isRecord(value) {
|
|
17
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
18
|
+
}
|
|
19
|
+
function parseBoolean(value) {
|
|
20
|
+
return typeof value === "boolean" ? value : undefined;
|
|
21
|
+
}
|
|
22
|
+
function parseEnvironmentBoolean(value) {
|
|
23
|
+
if (value === undefined)
|
|
24
|
+
return undefined;
|
|
25
|
+
switch (value.toLowerCase()) {
|
|
26
|
+
case "1":
|
|
27
|
+
case "true":
|
|
28
|
+
return true;
|
|
29
|
+
case "0":
|
|
30
|
+
case "false":
|
|
31
|
+
return false;
|
|
32
|
+
default:
|
|
33
|
+
return undefined;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
function parseNonEmptyString(value) {
|
|
37
|
+
return typeof value === "string" && value.length > 0 ? value : undefined;
|
|
38
|
+
}
|
|
39
|
+
/** Exact full commands only: string entries are trimmed, non-strings and empties are dropped. */
|
|
40
|
+
function parseDenyCommands(value) {
|
|
41
|
+
if (!Array.isArray(value))
|
|
42
|
+
return undefined;
|
|
43
|
+
return value
|
|
44
|
+
.filter((entry) => typeof entry === "string")
|
|
45
|
+
.map((entry) => entry.trim())
|
|
46
|
+
.filter((command) => command.length > 0);
|
|
47
|
+
}
|
|
48
|
+
/** Comma-separated exact full commands; a missing or empty value leaves settings untouched. */
|
|
49
|
+
function parseEnvironmentDenyCommands(value) {
|
|
50
|
+
if (value === undefined || value.length === 0)
|
|
51
|
+
return undefined;
|
|
52
|
+
return value
|
|
53
|
+
.split(",")
|
|
54
|
+
.map((entry) => entry.trim())
|
|
55
|
+
.filter((command) => command.length > 0);
|
|
56
|
+
}
|
|
57
|
+
function parseIsoString(value) {
|
|
58
|
+
if (typeof value !== "string" || !/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{3})?Z$/.test(value)) {
|
|
59
|
+
return undefined;
|
|
60
|
+
}
|
|
61
|
+
return Number.isNaN(Date.parse(value)) ? undefined : value;
|
|
62
|
+
}
|
|
63
|
+
function parseExecutionMode(value) {
|
|
64
|
+
return value === "agent" || value === "plan" ? value : undefined;
|
|
65
|
+
}
|
|
66
|
+
function parseResumeMode(value) {
|
|
67
|
+
return value === "auto" || value === "off" ? value : undefined;
|
|
68
|
+
}
|
|
69
|
+
function parsePositiveFiniteNumber(value) {
|
|
70
|
+
return typeof value === "number" && Number.isFinite(value) && value > 0 ? value : undefined;
|
|
71
|
+
}
|
|
72
|
+
function parseEnvironmentPositiveFiniteNumber(value) {
|
|
73
|
+
if (value === undefined || value.length === 0)
|
|
74
|
+
return undefined;
|
|
75
|
+
const parsed = Number(value);
|
|
76
|
+
return Number.isFinite(parsed) && parsed > 0 ? parsed : undefined;
|
|
77
|
+
}
|
|
78
|
+
function parseProviderSettings(value) {
|
|
79
|
+
if (!isRecord(value))
|
|
80
|
+
return {};
|
|
81
|
+
const enabled = parseBoolean(value.enabled);
|
|
82
|
+
const executablePath = parseNonEmptyString(value.executablePath);
|
|
83
|
+
const forceExecution = parseBoolean(value.forceExecution);
|
|
84
|
+
const noApprovalAcknowledgedAt = parseIsoString(value.noApprovalAcknowledgedAt);
|
|
85
|
+
const executionMode = parseExecutionMode(value.executionMode);
|
|
86
|
+
const resumeMode = parseResumeMode(value.resumeMode);
|
|
87
|
+
const pinnedAccount = parseNonEmptyString(value.pinnedAccount);
|
|
88
|
+
const contextRecapOnModelSwitch = parseBoolean(value.contextRecapOnModelSwitch);
|
|
89
|
+
const modelCatalogTtlHours = parsePositiveFiniteNumber(value.modelCatalogTtlHours);
|
|
90
|
+
const sandboxMode = parseNonEmptyString(value.sandboxMode);
|
|
91
|
+
const denyCommands = parseDenyCommands(value.denyCommands);
|
|
92
|
+
return {
|
|
93
|
+
...(enabled !== undefined ? { enabled } : {}),
|
|
94
|
+
...(executablePath !== undefined ? { executablePath } : {}),
|
|
95
|
+
...(forceExecution !== undefined ? { forceExecution } : {}),
|
|
96
|
+
...(noApprovalAcknowledgedAt !== undefined ? { noApprovalAcknowledgedAt } : {}),
|
|
97
|
+
...(executionMode !== undefined ? { executionMode } : {}),
|
|
98
|
+
...(resumeMode !== undefined ? { resumeMode } : {}),
|
|
99
|
+
...(pinnedAccount !== undefined ? { pinnedAccount } : {}),
|
|
100
|
+
...(contextRecapOnModelSwitch !== undefined ? { contextRecapOnModelSwitch } : {}),
|
|
101
|
+
...(modelCatalogTtlHours !== undefined ? { modelCatalogTtlHours } : {}),
|
|
102
|
+
...(sandboxMode !== undefined ? { sandboxMode } : {}),
|
|
103
|
+
...(denyCommands !== undefined ? { denyCommands } : {}),
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
function parseEnvironmentSettings(environment) {
|
|
107
|
+
const executablePath = parseNonEmptyString(environment.SENPI_CURSOR_CLI_OAUTH_EXECUTABLE) ??
|
|
108
|
+
parseNonEmptyString(environment.CURSOR_AGENT_EXECUTABLE);
|
|
109
|
+
const enabled = parseEnvironmentBoolean(environment.SENPI_CURSOR_CLI_OAUTH_ENABLED);
|
|
110
|
+
const forceExecution = parseEnvironmentBoolean(environment.SENPI_CURSOR_CLI_OAUTH_FORCE);
|
|
111
|
+
const executionMode = parseExecutionMode(environment.SENPI_CURSOR_CLI_OAUTH_EXECUTION_MODE);
|
|
112
|
+
const resumeMode = parseResumeMode(environment.SENPI_CURSOR_CLI_OAUTH_RESUME);
|
|
113
|
+
const pinnedAccount = parseNonEmptyString(environment.SENPI_CURSOR_CLI_OAUTH_PINNED_ACCOUNT);
|
|
114
|
+
const contextRecapOnModelSwitch = parseEnvironmentBoolean(environment.SENPI_CURSOR_CLI_OAUTH_RECAP);
|
|
115
|
+
const modelCatalogTtlHours = parseEnvironmentPositiveFiniteNumber(environment.SENPI_CURSOR_CLI_OAUTH_MODEL_CATALOG_TTL_HOURS);
|
|
116
|
+
const sandboxMode = parseNonEmptyString(environment.SENPI_CURSOR_CLI_OAUTH_SANDBOX_MODE);
|
|
117
|
+
const denyCommands = parseEnvironmentDenyCommands(environment.SENPI_CURSOR_CLI_OAUTH_DENY_COMMANDS);
|
|
118
|
+
return {
|
|
119
|
+
...(executablePath !== undefined ? { executablePath } : {}),
|
|
120
|
+
...(enabled !== undefined ? { enabled } : {}),
|
|
121
|
+
...(forceExecution !== undefined ? { forceExecution } : {}),
|
|
122
|
+
...(executionMode !== undefined ? { executionMode } : {}),
|
|
123
|
+
...(resumeMode !== undefined ? { resumeMode } : {}),
|
|
124
|
+
...(pinnedAccount !== undefined ? { pinnedAccount } : {}),
|
|
125
|
+
...(contextRecapOnModelSwitch !== undefined ? { contextRecapOnModelSwitch } : {}),
|
|
126
|
+
...(modelCatalogTtlHours !== undefined ? { modelCatalogTtlHours } : {}),
|
|
127
|
+
...(sandboxMode !== undefined ? { sandboxMode } : {}),
|
|
128
|
+
...(denyCommands !== undefined ? { denyCommands } : {}),
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
function resolveSettings(...layers) {
|
|
132
|
+
return Object.assign({}, DEFAULT_SETTINGS, ...layers);
|
|
133
|
+
}
|
|
134
|
+
/** Parse one provider settings block with environment values taking precedence. */
|
|
135
|
+
export function parseCursorCliOauthProviderSettings(value, environment) {
|
|
136
|
+
return resolveSettings(parseProviderSettings(value), parseEnvironmentSettings(environment));
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Build the probe-owned sandbox allowlist validator without hardcoding modes in settings parsing.
|
|
140
|
+
* Each distinct rejected mode is reported once through the supplied warning hook.
|
|
141
|
+
*/
|
|
142
|
+
export function createCursorCliOauthSandboxModeValidator(acceptedModes, onWarning) {
|
|
143
|
+
const warnedModes = new Set();
|
|
144
|
+
return (value) => {
|
|
145
|
+
if (value === undefined || acceptedModes.has(value))
|
|
146
|
+
return value;
|
|
147
|
+
if (!warnedModes.has(value)) {
|
|
148
|
+
warnedModes.add(value);
|
|
149
|
+
onWarning(`Ignoring unrecognized Cursor CLI OAuth sandbox mode: ${value}`);
|
|
150
|
+
}
|
|
151
|
+
return undefined;
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
/** Load global and project settings afresh, with env values taking final precedence. */
|
|
155
|
+
export function loadCursorCliOauthProviderSettingsFromDisk(cwd) {
|
|
156
|
+
const settingsManager = SettingsManager.create(cwd, getAgentDir());
|
|
157
|
+
const global = settingsManager.getGlobalSettings();
|
|
158
|
+
const project = settingsManager.getProjectSettings();
|
|
159
|
+
return resolveSettings(parseProviderSettings(global.cursorCliOauthProvider), parseProviderSettings(project.cursorCliOauthProvider), parseEnvironmentSettings(process.env));
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Read-modify-write `noApprovalAcknowledgedAt` into the provider block of the
|
|
163
|
+
* global settings file, preserving every other key. An unparseable file is
|
|
164
|
+
* reported instead of silently clobbered, so an acknowledgement can never
|
|
165
|
+
* claim success while leaving the settings unwritten.
|
|
166
|
+
*/
|
|
167
|
+
export function persistCursorCliNoApprovalAcknowledgement(cwd, acknowledgedAt) {
|
|
168
|
+
const storage = new FileSettingsStorage(cwd, getAgentDir());
|
|
169
|
+
storage.selectSource("global");
|
|
170
|
+
storage.withLock("global", (current) => {
|
|
171
|
+
let root;
|
|
172
|
+
try {
|
|
173
|
+
root = current === undefined ? {} : parseSettingsJson(current);
|
|
174
|
+
}
|
|
175
|
+
catch (error) {
|
|
176
|
+
throw new Error(`Cannot persist the cursor-cli-oauth acknowledgement: the settings file is unparseable (${error instanceof Error ? error.message : String(error)})`);
|
|
177
|
+
}
|
|
178
|
+
const provider = typeof root.cursorCliOauthProvider === "object" &&
|
|
179
|
+
root.cursorCliOauthProvider !== null &&
|
|
180
|
+
!Array.isArray(root.cursorCliOauthProvider)
|
|
181
|
+
? { ...root.cursorCliOauthProvider }
|
|
182
|
+
: {};
|
|
183
|
+
return JSON.stringify({ ...root, cursorCliOauthProvider: { ...provider, noApprovalAcknowledgedAt: acknowledgedAt } }, null, 2);
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/cursor-cli-oauth/settings.ts"],"names":[],"mappings":"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","sourcesContent":["import { getAgentDir } from \"../../../../config.ts\";\nimport { FileSettingsStorage, parseSettingsJson, type Settings, SettingsManager } from \"../../../settings-manager.ts\";\n\nexport type CursorCliOauthExecutionMode = \"agent\" | \"plan\";\nexport type CursorCliOauthResumeMode = \"auto\" | \"off\";\n\nexport interface CursorCliOauthProviderSettings {\n\treadonly enabled: boolean;\n\treadonly executablePath: string | undefined;\n\treadonly forceExecution: boolean;\n\treadonly noApprovalAcknowledgedAt: string | undefined;\n\treadonly executionMode: CursorCliOauthExecutionMode;\n\treadonly resumeMode: CursorCliOauthResumeMode;\n\treadonly pinnedAccount: string | undefined;\n\treadonly contextRecapOnModelSwitch: boolean;\n\treadonly modelCatalogTtlHours: number;\n\treadonly sandboxMode: string | undefined;\n\t/** Exact full commands the spawned CLI must refuse; globs are not supported. */\n\treadonly denyCommands?: string[];\n}\n\ntype SettingsWithCursorCliOauthProvider = Settings & {\n\tcursorCliOauthProvider?: unknown;\n};\n\ntype Environment = Readonly<Record<string, string | undefined>>;\ntype ParsedSettings = Partial<CursorCliOauthProviderSettings>;\n\nconst DEFAULT_SETTINGS: CursorCliOauthProviderSettings = {\n\tenabled: false,\n\texecutablePath: undefined,\n\tforceExecution: true,\n\tnoApprovalAcknowledgedAt: undefined,\n\texecutionMode: \"agent\",\n\tresumeMode: \"auto\",\n\tpinnedAccount: undefined,\n\tcontextRecapOnModelSwitch: true,\n\tmodelCatalogTtlHours: 24,\n\tsandboxMode: undefined,\n\tdenyCommands: [],\n};\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction parseBoolean(value: unknown): boolean | undefined {\n\treturn typeof value === \"boolean\" ? value : undefined;\n}\n\nfunction parseEnvironmentBoolean(value: string | undefined): boolean | undefined {\n\tif (value === undefined) return undefined;\n\tswitch (value.toLowerCase()) {\n\t\tcase \"1\":\n\t\tcase \"true\":\n\t\t\treturn true;\n\t\tcase \"0\":\n\t\tcase \"false\":\n\t\t\treturn false;\n\t\tdefault:\n\t\t\treturn undefined;\n\t}\n}\n\nfunction parseNonEmptyString(value: unknown): string | undefined {\n\treturn typeof value === \"string\" && value.length > 0 ? value : undefined;\n}\n\n/** Exact full commands only: string entries are trimmed, non-strings and empties are dropped. */\nfunction parseDenyCommands(value: unknown): string[] | undefined {\n\tif (!Array.isArray(value)) return undefined;\n\treturn value\n\t\t.filter((entry): entry is string => typeof entry === \"string\")\n\t\t.map((entry) => entry.trim())\n\t\t.filter((command) => command.length > 0);\n}\n\n/** Comma-separated exact full commands; a missing or empty value leaves settings untouched. */\nfunction parseEnvironmentDenyCommands(value: string | undefined): string[] | undefined {\n\tif (value === undefined || value.length === 0) return undefined;\n\treturn value\n\t\t.split(\",\")\n\t\t.map((entry) => entry.trim())\n\t\t.filter((command) => command.length > 0);\n}\n\nfunction parseIsoString(value: unknown): string | undefined {\n\tif (typeof value !== \"string\" || !/^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{3})?Z$/.test(value)) {\n\t\treturn undefined;\n\t}\n\treturn Number.isNaN(Date.parse(value)) ? undefined : value;\n}\n\nfunction parseExecutionMode(value: unknown): CursorCliOauthExecutionMode | undefined {\n\treturn value === \"agent\" || value === \"plan\" ? value : undefined;\n}\n\nfunction parseResumeMode(value: unknown): CursorCliOauthResumeMode | undefined {\n\treturn value === \"auto\" || value === \"off\" ? value : undefined;\n}\n\nfunction parsePositiveFiniteNumber(value: unknown): number | undefined {\n\treturn typeof value === \"number\" && Number.isFinite(value) && value > 0 ? value : undefined;\n}\n\nfunction parseEnvironmentPositiveFiniteNumber(value: string | undefined): number | undefined {\n\tif (value === undefined || value.length === 0) return undefined;\n\tconst parsed = Number(value);\n\treturn Number.isFinite(parsed) && parsed > 0 ? parsed : undefined;\n}\n\nfunction parseProviderSettings(value: unknown): ParsedSettings {\n\tif (!isRecord(value)) return {};\n\tconst enabled = parseBoolean(value.enabled);\n\tconst executablePath = parseNonEmptyString(value.executablePath);\n\tconst forceExecution = parseBoolean(value.forceExecution);\n\tconst noApprovalAcknowledgedAt = parseIsoString(value.noApprovalAcknowledgedAt);\n\tconst executionMode = parseExecutionMode(value.executionMode);\n\tconst resumeMode = parseResumeMode(value.resumeMode);\n\tconst pinnedAccount = parseNonEmptyString(value.pinnedAccount);\n\tconst contextRecapOnModelSwitch = parseBoolean(value.contextRecapOnModelSwitch);\n\tconst modelCatalogTtlHours = parsePositiveFiniteNumber(value.modelCatalogTtlHours);\n\tconst sandboxMode = parseNonEmptyString(value.sandboxMode);\n\tconst denyCommands = parseDenyCommands(value.denyCommands);\n\treturn {\n\t\t...(enabled !== undefined ? { enabled } : {}),\n\t\t...(executablePath !== undefined ? { executablePath } : {}),\n\t\t...(forceExecution !== undefined ? { forceExecution } : {}),\n\t\t...(noApprovalAcknowledgedAt !== undefined ? { noApprovalAcknowledgedAt } : {}),\n\t\t...(executionMode !== undefined ? { executionMode } : {}),\n\t\t...(resumeMode !== undefined ? { resumeMode } : {}),\n\t\t...(pinnedAccount !== undefined ? { pinnedAccount } : {}),\n\t\t...(contextRecapOnModelSwitch !== undefined ? { contextRecapOnModelSwitch } : {}),\n\t\t...(modelCatalogTtlHours !== undefined ? { modelCatalogTtlHours } : {}),\n\t\t...(sandboxMode !== undefined ? { sandboxMode } : {}),\n\t\t...(denyCommands !== undefined ? { denyCommands } : {}),\n\t};\n}\n\nfunction parseEnvironmentSettings(environment: Environment): ParsedSettings {\n\tconst executablePath =\n\t\tparseNonEmptyString(environment.SENPI_CURSOR_CLI_OAUTH_EXECUTABLE) ??\n\t\tparseNonEmptyString(environment.CURSOR_AGENT_EXECUTABLE);\n\tconst enabled = parseEnvironmentBoolean(environment.SENPI_CURSOR_CLI_OAUTH_ENABLED);\n\tconst forceExecution = parseEnvironmentBoolean(environment.SENPI_CURSOR_CLI_OAUTH_FORCE);\n\tconst executionMode = parseExecutionMode(environment.SENPI_CURSOR_CLI_OAUTH_EXECUTION_MODE);\n\tconst resumeMode = parseResumeMode(environment.SENPI_CURSOR_CLI_OAUTH_RESUME);\n\tconst pinnedAccount = parseNonEmptyString(environment.SENPI_CURSOR_CLI_OAUTH_PINNED_ACCOUNT);\n\tconst contextRecapOnModelSwitch = parseEnvironmentBoolean(environment.SENPI_CURSOR_CLI_OAUTH_RECAP);\n\tconst modelCatalogTtlHours = parseEnvironmentPositiveFiniteNumber(\n\t\tenvironment.SENPI_CURSOR_CLI_OAUTH_MODEL_CATALOG_TTL_HOURS,\n\t);\n\tconst sandboxMode = parseNonEmptyString(environment.SENPI_CURSOR_CLI_OAUTH_SANDBOX_MODE);\n\tconst denyCommands = parseEnvironmentDenyCommands(environment.SENPI_CURSOR_CLI_OAUTH_DENY_COMMANDS);\n\treturn {\n\t\t...(executablePath !== undefined ? { executablePath } : {}),\n\t\t...(enabled !== undefined ? { enabled } : {}),\n\t\t...(forceExecution !== undefined ? { forceExecution } : {}),\n\t\t...(executionMode !== undefined ? { executionMode } : {}),\n\t\t...(resumeMode !== undefined ? { resumeMode } : {}),\n\t\t...(pinnedAccount !== undefined ? { pinnedAccount } : {}),\n\t\t...(contextRecapOnModelSwitch !== undefined ? { contextRecapOnModelSwitch } : {}),\n\t\t...(modelCatalogTtlHours !== undefined ? { modelCatalogTtlHours } : {}),\n\t\t...(sandboxMode !== undefined ? { sandboxMode } : {}),\n\t\t...(denyCommands !== undefined ? { denyCommands } : {}),\n\t};\n}\n\nfunction resolveSettings(...layers: readonly ParsedSettings[]): CursorCliOauthProviderSettings {\n\treturn Object.assign({}, DEFAULT_SETTINGS, ...layers);\n}\n\n/** Parse one provider settings block with environment values taking precedence. */\nexport function parseCursorCliOauthProviderSettings(\n\tvalue: unknown,\n\tenvironment: Environment,\n): CursorCliOauthProviderSettings {\n\treturn resolveSettings(parseProviderSettings(value), parseEnvironmentSettings(environment));\n}\n\n/**\n * Build the probe-owned sandbox allowlist validator without hardcoding modes in settings parsing.\n * Each distinct rejected mode is reported once through the supplied warning hook.\n */\nexport function createCursorCliOauthSandboxModeValidator(\n\tacceptedModes: ReadonlySet<string>,\n\tonWarning: (message: string) => void,\n): (value: string | undefined) => string | undefined {\n\tconst warnedModes = new Set<string>();\n\treturn (value) => {\n\t\tif (value === undefined || acceptedModes.has(value)) return value;\n\t\tif (!warnedModes.has(value)) {\n\t\t\twarnedModes.add(value);\n\t\t\tonWarning(`Ignoring unrecognized Cursor CLI OAuth sandbox mode: ${value}`);\n\t\t}\n\t\treturn undefined;\n\t};\n}\n\n/** Load global and project settings afresh, with env values taking final precedence. */\nexport function loadCursorCliOauthProviderSettingsFromDisk(cwd: string): CursorCliOauthProviderSettings {\n\tconst settingsManager = SettingsManager.create(cwd, getAgentDir());\n\tconst global = settingsManager.getGlobalSettings() as SettingsWithCursorCliOauthProvider;\n\tconst project = settingsManager.getProjectSettings() as SettingsWithCursorCliOauthProvider;\n\treturn resolveSettings(\n\t\tparseProviderSettings(global.cursorCliOauthProvider),\n\t\tparseProviderSettings(project.cursorCliOauthProvider),\n\t\tparseEnvironmentSettings(process.env),\n\t);\n}\n\n/**\n * Read-modify-write `noApprovalAcknowledgedAt` into the provider block of the\n * global settings file, preserving every other key. An unparseable file is\n * reported instead of silently clobbered, so an acknowledgement can never\n * claim success while leaving the settings unwritten.\n */\nexport function persistCursorCliNoApprovalAcknowledgement(cwd: string, acknowledgedAt: string): void {\n\tconst storage = new FileSettingsStorage(cwd, getAgentDir());\n\tstorage.selectSource(\"global\");\n\tstorage.withLock(\"global\", (current) => {\n\t\tlet root: Record<string, unknown>;\n\t\ttry {\n\t\t\troot = current === undefined ? {} : parseSettingsJson(current);\n\t\t} catch (error) {\n\t\t\tthrow new Error(\n\t\t\t\t`Cannot persist the cursor-cli-oauth acknowledgement: the settings file is unparseable (${error instanceof Error ? error.message : String(error)})`,\n\t\t\t);\n\t\t}\n\t\tconst provider =\n\t\t\ttypeof root.cursorCliOauthProvider === \"object\" &&\n\t\t\troot.cursorCliOauthProvider !== null &&\n\t\t\t!Array.isArray(root.cursorCliOauthProvider)\n\t\t\t\t? { ...(root.cursorCliOauthProvider as Record<string, unknown>) }\n\t\t\t\t: {};\n\t\treturn JSON.stringify(\n\t\t\t{ ...root, cursorCliOauthProvider: { ...provider, noApprovalAcknowledgedAt: acknowledgedAt } },\n\t\t\tnull,\n\t\t\t2,\n\t\t);\n\t});\n}\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type CursorCliArgsInput = {
|
|
2
|
+
readonly prompt: string;
|
|
3
|
+
readonly model?: string;
|
|
4
|
+
readonly resumeChatId?: string;
|
|
5
|
+
readonly force?: boolean;
|
|
6
|
+
readonly executionMode?: "agent" | "plan";
|
|
7
|
+
readonly sandboxMode?: string;
|
|
8
|
+
};
|
|
9
|
+
/** Serialize one Cursor CLI print-mode invocation without applying execution policy. */
|
|
10
|
+
export declare function buildCursorCliArgs({ prompt, model, resumeChatId, force, executionMode, sandboxMode, }: CursorCliArgsInput): string[];
|
|
11
|
+
//# sourceMappingURL=spawn-args.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spawn-args.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/cursor-cli-oauth/spawn-args.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAAG;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC1C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,wFAAwF;AACxF,wBAAgB,kBAAkB,CAAC,EAClC,MAAM,EACN,KAAK,EACL,YAAY,EACZ,KAAK,EACL,aAAa,EACb,WAAW,GACX,EAAE,kBAAkB,GAAG,MAAM,EAAE,CAc/B"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/** Serialize one Cursor CLI print-mode invocation without applying execution policy. */
|
|
2
|
+
export function buildCursorCliArgs({ prompt, model, resumeChatId, force, executionMode, sandboxMode, }) {
|
|
3
|
+
return [
|
|
4
|
+
"-p",
|
|
5
|
+
prompt,
|
|
6
|
+
"--output-format",
|
|
7
|
+
"stream-json",
|
|
8
|
+
"--stream-partial-output",
|
|
9
|
+
"--trust",
|
|
10
|
+
...(model ? ["--model", model] : []),
|
|
11
|
+
...(resumeChatId ? ["--resume", resumeChatId] : []),
|
|
12
|
+
...(force ? ["--force"] : []),
|
|
13
|
+
...(executionMode === "plan" ? ["--mode", "plan"] : []),
|
|
14
|
+
...(sandboxMode ? ["--sandbox", sandboxMode] : []),
|
|
15
|
+
];
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=spawn-args.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spawn-args.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/cursor-cli-oauth/spawn-args.ts"],"names":[],"mappings":"AASA,wFAAwF;AACxF,MAAM,UAAU,kBAAkB,CAAC,EAClC,MAAM,EACN,KAAK,EACL,YAAY,EACZ,KAAK,EACL,aAAa,EACb,WAAW,GACS;IACpB,OAAO;QACN,IAAI;QACJ,MAAM;QACN,iBAAiB;QACjB,aAAa;QACb,yBAAyB;QACzB,SAAS;QACT,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACpC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACnD,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7B,GAAG,CAAC,aAAa,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAClD,CAAC;AACH,CAAC","sourcesContent":["export type CursorCliArgsInput = {\n\treadonly prompt: string;\n\treadonly model?: string;\n\treadonly resumeChatId?: string;\n\treadonly force?: boolean;\n\treadonly executionMode?: \"agent\" | \"plan\";\n\treadonly sandboxMode?: string;\n};\n\n/** Serialize one Cursor CLI print-mode invocation without applying execution policy. */\nexport function buildCursorCliArgs({\n\tprompt,\n\tmodel,\n\tresumeChatId,\n\tforce,\n\texecutionMode,\n\tsandboxMode,\n}: CursorCliArgsInput): string[] {\n\treturn [\n\t\t\"-p\",\n\t\tprompt,\n\t\t\"--output-format\",\n\t\t\"stream-json\",\n\t\t\"--stream-partial-output\",\n\t\t\"--trust\",\n\t\t...(model ? [\"--model\", model] : []),\n\t\t...(resumeChatId ? [\"--resume\", resumeChatId] : []),\n\t\t...(force ? [\"--force\"] : []),\n\t\t...(executionMode === \"plan\" ? [\"--mode\", \"plan\"] : []),\n\t\t...(sandboxMode ? [\"--sandbox\", sandboxMode] : []),\n\t];\n}\n"]}
|