@athenaintel/react 0.57.2 → 0.60.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +795 -12
- package/dist/agent-runtime/src/addressed-agents.cjs +16 -0
- package/dist/agent-runtime/src/addressed-agents.cjs.map +1 -0
- package/dist/agent-runtime/src/addressed-agents.d.ts +30 -0
- package/dist/agent-runtime/src/addressed-agents.js +16 -0
- package/dist/agent-runtime/src/addressed-agents.js.map +1 -0
- package/dist/agent-runtime/src/answer-label.cjs +4 -3
- package/dist/agent-runtime/src/answer-label.cjs.map +1 -1
- package/dist/agent-runtime/src/answer-label.d.ts +13 -6
- package/dist/agent-runtime/src/answer-label.js +4 -3
- package/dist/agent-runtime/src/answer-label.js.map +1 -1
- package/dist/agent-runtime/src/chat-outbox-attachments.cjs.map +1 -1
- package/dist/agent-runtime/src/chat-outbox-attachments.d.ts +1 -1
- package/dist/agent-runtime/src/chat-outbox-attachments.js.map +1 -1
- package/dist/agent-runtime/src/chat-outbox-entry.cjs +101 -0
- package/dist/agent-runtime/src/chat-outbox-entry.cjs.map +1 -0
- package/dist/agent-runtime/src/chat-outbox-entry.d.ts +99 -0
- package/dist/agent-runtime/src/chat-outbox-entry.js +101 -0
- package/dist/agent-runtime/src/chat-outbox-entry.js.map +1 -0
- package/dist/agent-runtime/src/chat-outbox-legacy.cjs +252 -0
- package/dist/agent-runtime/src/chat-outbox-legacy.cjs.map +1 -0
- package/dist/agent-runtime/src/chat-outbox-legacy.d.ts +96 -0
- package/dist/agent-runtime/src/chat-outbox-legacy.js +252 -0
- package/dist/agent-runtime/src/chat-outbox-legacy.js.map +1 -0
- package/dist/agent-runtime/src/chat-outbox-policy.cjs +30 -0
- package/dist/agent-runtime/src/chat-outbox-policy.cjs.map +1 -0
- package/dist/agent-runtime/src/chat-outbox-policy.d.ts +42 -0
- package/dist/agent-runtime/src/chat-outbox-policy.js +30 -0
- package/dist/agent-runtime/src/chat-outbox-policy.js.map +1 -0
- package/dist/agent-runtime/src/chat-outbox-storage.cjs +306 -0
- package/dist/agent-runtime/src/chat-outbox-storage.cjs.map +1 -0
- package/dist/agent-runtime/src/chat-outbox-storage.d.ts +194 -0
- package/dist/agent-runtime/src/chat-outbox-storage.js +306 -0
- package/dist/agent-runtime/src/chat-outbox-storage.js.map +1 -0
- package/dist/agent-runtime/src/chat-outbox-thread.cjs +21 -94
- package/dist/agent-runtime/src/chat-outbox-thread.cjs.map +1 -1
- package/dist/agent-runtime/src/chat-outbox-thread.d.ts +22 -18
- package/dist/agent-runtime/src/chat-outbox-thread.js +21 -94
- package/dist/agent-runtime/src/chat-outbox-thread.js.map +1 -1
- package/dist/agent-runtime/src/chat-outbox.cjs +492 -547
- package/dist/agent-runtime/src/chat-outbox.cjs.map +1 -1
- package/dist/agent-runtime/src/chat-outbox.d.ts +110 -142
- package/dist/agent-runtime/src/chat-outbox.js +492 -547
- package/dist/agent-runtime/src/chat-outbox.js.map +1 -1
- package/dist/agent-runtime/src/composer-markdown.cjs +0 -16
- package/dist/agent-runtime/src/composer-markdown.cjs.map +1 -1
- package/dist/agent-runtime/src/composer-markdown.d.ts +1 -1
- package/dist/agent-runtime/src/composer-markdown.js +1 -17
- package/dist/agent-runtime/src/composer-markdown.js.map +1 -1
- package/dist/agent-runtime/src/deep-agent-transport-recipe.cjs +3 -1
- package/dist/agent-runtime/src/deep-agent-transport-recipe.cjs.map +1 -1
- package/dist/agent-runtime/src/deep-agent-transport-recipe.d.ts +8 -1
- package/dist/agent-runtime/src/deep-agent-transport-recipe.js +3 -1
- package/dist/agent-runtime/src/deep-agent-transport-recipe.js.map +1 -1
- package/dist/agent-runtime/src/dictation-preferences.d.ts +356 -0
- package/dist/agent-runtime/src/dictation-record.d.ts +279 -0
- package/dist/agent-runtime/src/dictation-session.d.ts +106 -7
- package/dist/agent-runtime/src/dictation-snippets.d.ts +9 -0
- package/dist/agent-runtime/src/dictation-transfer.d.ts +142 -0
- package/dist/agent-runtime/src/edit-command.cjs.map +1 -1
- package/dist/agent-runtime/src/edit-command.d.ts +1 -1
- package/dist/agent-runtime/src/edit-command.js.map +1 -1
- package/dist/agent-runtime/src/errors.cjs +1 -0
- package/dist/agent-runtime/src/errors.cjs.map +1 -1
- package/dist/agent-runtime/src/errors.js +1 -0
- package/dist/agent-runtime/src/errors.js.map +1 -1
- package/dist/agent-runtime/src/generated/runconfig-contract.cjs +24 -0
- package/dist/agent-runtime/src/generated/runconfig-contract.cjs.map +1 -1
- package/dist/agent-runtime/src/generated/runconfig-contract.d.ts +3 -3
- package/dist/agent-runtime/src/generated/runconfig-contract.js +24 -0
- package/dist/agent-runtime/src/generated/runconfig-contract.js.map +1 -1
- package/dist/agent-runtime/src/index.d.ts +14 -8
- package/dist/agent-runtime/src/lane-follow.cjs +289 -0
- package/dist/agent-runtime/src/lane-follow.cjs.map +1 -0
- package/dist/agent-runtime/src/lane-follow.js +289 -0
- package/dist/agent-runtime/src/lane-follow.js.map +1 -0
- package/dist/agent-runtime/src/lane-images.cjs +387 -0
- package/dist/agent-runtime/src/lane-images.cjs.map +1 -0
- package/dist/agent-runtime/src/lane-images.js +387 -0
- package/dist/agent-runtime/src/lane-images.js.map +1 -0
- package/dist/agent-runtime/src/message-window.js +1 -1
- package/dist/agent-runtime/src/messages.cjs +19 -1
- package/dist/agent-runtime/src/messages.cjs.map +1 -1
- package/dist/agent-runtime/src/messages.d.ts +8 -0
- package/dist/agent-runtime/src/messages.js +21 -3
- package/dist/agent-runtime/src/messages.js.map +1 -1
- package/dist/agent-runtime/src/named-agents.cjs +301 -0
- package/dist/agent-runtime/src/named-agents.cjs.map +1 -0
- package/dist/agent-runtime/src/named-agents.d.ts +246 -0
- package/dist/agent-runtime/src/named-agents.js +301 -0
- package/dist/agent-runtime/src/named-agents.js.map +1 -0
- package/dist/agent-runtime/src/offline-status.cjs.map +1 -1
- package/dist/agent-runtime/src/offline-status.d.ts +93 -2
- package/dist/agent-runtime/src/offline-status.js.map +1 -1
- package/dist/agent-runtime/src/ptc-subcalls.cjs +41 -0
- package/dist/agent-runtime/src/ptc-subcalls.cjs.map +1 -0
- package/dist/agent-runtime/src/ptc-subcalls.js +41 -0
- package/dist/agent-runtime/src/ptc-subcalls.js.map +1 -0
- package/dist/agent-runtime/src/queue.cjs +2 -2
- package/dist/agent-runtime/src/queue.cjs.map +1 -1
- package/dist/agent-runtime/src/queue.d.ts +20 -25
- package/dist/agent-runtime/src/queue.js +2 -2
- package/dist/agent-runtime/src/queue.js.map +1 -1
- package/dist/agent-runtime/src/quota-safe-local-storage-session.cjs +314 -84
- package/dist/agent-runtime/src/quota-safe-local-storage-session.cjs.map +1 -1
- package/dist/agent-runtime/src/quota-safe-local-storage-session.d.ts +137 -40
- package/dist/agent-runtime/src/quota-safe-local-storage-session.js +318 -88
- package/dist/agent-runtime/src/quota-safe-local-storage-session.js.map +1 -1
- package/dist/agent-runtime/src/run-send.cjs +54 -0
- package/dist/agent-runtime/src/run-send.cjs.map +1 -0
- package/dist/agent-runtime/src/run-send.d.ts +51 -0
- package/dist/agent-runtime/src/run-send.js +54 -0
- package/dist/agent-runtime/src/run-send.js.map +1 -0
- package/dist/agent-runtime/src/running-tool-placeholder.cjs +6 -0
- package/dist/agent-runtime/src/running-tool-placeholder.cjs.map +1 -1
- package/dist/agent-runtime/src/running-tool-placeholder.js +6 -0
- package/dist/agent-runtime/src/running-tool-placeholder.js.map +1 -1
- package/dist/agent-runtime/src/runtime.d.ts +9 -5
- package/dist/agent-runtime/src/sealed-idb.cjs +64 -0
- package/dist/agent-runtime/src/sealed-idb.cjs.map +1 -1
- package/dist/agent-runtime/src/sealed-idb.d.ts +16 -0
- package/dist/agent-runtime/src/sealed-idb.js +64 -0
- package/dist/agent-runtime/src/sealed-idb.js.map +1 -1
- package/dist/agent-runtime/src/send-recovery.cjs +90 -118
- package/dist/agent-runtime/src/send-recovery.cjs.map +1 -1
- package/dist/agent-runtime/src/send-recovery.d.ts +25 -29
- package/dist/agent-runtime/src/send-recovery.js +90 -118
- package/dist/agent-runtime/src/send-recovery.js.map +1 -1
- package/dist/agent-runtime/src/statewire-diagnostics.d.ts +4 -1
- package/dist/agent-runtime/src/statewire-held-sends.cjs +191 -0
- package/dist/agent-runtime/src/statewire-held-sends.cjs.map +1 -0
- package/dist/agent-runtime/src/statewire-held-sends.d.ts +119 -0
- package/dist/agent-runtime/src/statewire-held-sends.js +191 -0
- package/dist/agent-runtime/src/statewire-held-sends.js.map +1 -0
- package/dist/agent-runtime/src/statewire-state.cjs +4 -0
- package/dist/agent-runtime/src/statewire-state.cjs.map +1 -1
- package/dist/agent-runtime/src/statewire-state.js +4 -0
- package/dist/agent-runtime/src/statewire-state.js.map +1 -1
- package/dist/agent-runtime/src/statewire-transport.cjs +8 -2
- package/dist/agent-runtime/src/statewire-transport.cjs.map +1 -1
- package/dist/agent-runtime/src/statewire-transport.d.ts +14 -5
- package/dist/agent-runtime/src/statewire-transport.js +8 -2
- package/dist/agent-runtime/src/statewire-transport.js.map +1 -1
- package/dist/agent-runtime/src/subagent-transcripts.cjs +1 -23
- package/dist/agent-runtime/src/subagent-transcripts.cjs.map +1 -1
- package/dist/agent-runtime/src/subagent-transcripts.js +3 -25
- package/dist/agent-runtime/src/subagent-transcripts.js.map +1 -1
- package/dist/agent-runtime/src/subagents.cjs +22 -29
- package/dist/agent-runtime/src/subagents.cjs.map +1 -1
- package/dist/agent-runtime/src/subagents.js +23 -30
- package/dist/agent-runtime/src/subagents.js.map +1 -1
- package/dist/agent-runtime/src/thread-extras.cjs +27 -19
- package/dist/agent-runtime/src/thread-extras.cjs.map +1 -1
- package/dist/agent-runtime/src/thread-extras.d.ts +19 -6
- package/dist/agent-runtime/src/thread-extras.js +27 -19
- package/dist/agent-runtime/src/thread-extras.js.map +1 -1
- package/dist/agent-runtime/src/thread-handoff-flow-machine.d.ts +8 -8
- package/dist/agent-runtime/src/tool-metadata.cjs +19 -0
- package/dist/agent-runtime/src/tool-metadata.cjs.map +1 -1
- package/dist/agent-runtime/src/tool-metadata.js +19 -0
- package/dist/agent-runtime/src/tool-metadata.js.map +1 -1
- package/dist/agent-runtime/src/tool-names.cjs +21 -0
- package/dist/agent-runtime/src/tool-names.cjs.map +1 -1
- package/dist/agent-runtime/src/tool-names.d.ts +8 -0
- package/dist/agent-runtime/src/tool-names.js +21 -0
- package/dist/agent-runtime/src/tool-names.js.map +1 -1
- package/dist/agent-runtime/src/typed-interrupt-kinds.cjs +247 -0
- package/dist/agent-runtime/src/typed-interrupt-kinds.cjs.map +1 -0
- package/dist/agent-runtime/src/typed-interrupt-kinds.d.ts +173 -0
- package/dist/agent-runtime/src/typed-interrupt-kinds.js +247 -0
- package/dist/agent-runtime/src/typed-interrupt-kinds.js.map +1 -0
- package/dist/agent-runtime/src/typed-interrupts.cjs +48 -0
- package/dist/agent-runtime/src/typed-interrupts.cjs.map +1 -0
- package/dist/agent-runtime/src/typed-interrupts.d.ts +75 -0
- package/dist/agent-runtime/src/typed-interrupts.js +48 -0
- package/dist/agent-runtime/src/typed-interrupts.js.map +1 -0
- package/dist/agent-runtime/src/types.d.ts +1 -1
- package/dist/agent-runtime/src/use-conversation-list.cjs +1 -0
- package/dist/agent-runtime/src/use-conversation-list.cjs.map +1 -1
- package/dist/agent-runtime/src/use-conversation-list.d.ts +7 -0
- package/dist/agent-runtime/src/use-conversation-list.js +1 -0
- package/dist/agent-runtime/src/use-conversation-list.js.map +1 -1
- package/dist/agent-runtime/src/use-deep-agent-chat-outbox.cjs +46 -29
- package/dist/agent-runtime/src/use-deep-agent-chat-outbox.cjs.map +1 -1
- package/dist/agent-runtime/src/use-deep-agent-chat-outbox.d.ts +14 -22
- package/dist/agent-runtime/src/use-deep-agent-chat-outbox.js +46 -29
- package/dist/agent-runtime/src/use-deep-agent-chat-outbox.js.map +1 -1
- package/dist/agent-runtime/src/use-deep-agent-runtime.cjs +78 -14
- package/dist/agent-runtime/src/use-deep-agent-runtime.cjs.map +1 -1
- package/dist/agent-runtime/src/use-deep-agent-runtime.d.ts +34 -7
- package/dist/agent-runtime/src/use-deep-agent-runtime.js +79 -15
- package/dist/agent-runtime/src/use-deep-agent-runtime.js.map +1 -1
- package/dist/agent-runtime/src/use-deep-agent-thread.cjs +16 -1
- package/dist/agent-runtime/src/use-deep-agent-thread.cjs.map +1 -1
- package/dist/agent-runtime/src/use-deep-agent-thread.d.ts +7 -2
- package/dist/agent-runtime/src/use-deep-agent-thread.js +16 -1
- package/dist/agent-runtime/src/use-deep-agent-thread.js.map +1 -1
- package/dist/agent-runtime/src/use-deep-agent-voice.cjs +30 -4
- package/dist/agent-runtime/src/use-deep-agent-voice.cjs.map +1 -1
- package/dist/agent-runtime/src/use-deep-agent-voice.d.ts +22 -4
- package/dist/agent-runtime/src/use-deep-agent-voice.js +30 -4
- package/dist/agent-runtime/src/use-deep-agent-voice.js.map +1 -1
- package/dist/agent-runtime/src/withdrawn-turns.d.ts +5 -4
- package/dist/agent-runtime/src/word-device-fit.d.ts +174 -0
- package/dist/agent-runtime/src/work-in.d.ts +127 -0
- package/dist/assets/AthenaAssetEmbed.cjs.map +1 -1
- package/dist/assets/AthenaAssetEmbed.d.ts +6 -1
- package/dist/assets/AthenaAssetEmbed.js.map +1 -1
- package/dist/assets/asset-panel-store.cjs +13 -5
- package/dist/assets/asset-panel-store.cjs.map +1 -1
- package/dist/assets/asset-panel-store.d.ts +33 -2
- package/dist/assets/asset-panel-store.js +13 -5
- package/dist/assets/asset-panel-store.js.map +1 -1
- package/dist/auth/AthenaCredentialSourceContext.cjs +11 -0
- package/dist/auth/AthenaCredentialSourceContext.cjs.map +1 -1
- package/dist/auth/AthenaCredentialSourceContext.d.ts +6 -0
- package/dist/auth/AthenaCredentialSourceContext.js +11 -0
- package/dist/auth/AthenaCredentialSourceContext.js.map +1 -1
- package/dist/auth/account-identity.cjs +13 -2
- package/dist/auth/account-identity.cjs.map +1 -1
- package/dist/auth/account-identity.d.ts +9 -0
- package/dist/auth/account-identity.js +13 -2
- package/dist/auth/account-identity.js.map +1 -1
- package/dist/auth/credential-source.cjs +20 -4
- package/dist/auth/credential-source.cjs.map +1 -1
- package/dist/auth/credential-source.d.ts +9 -0
- package/dist/auth/credential-source.js +20 -4
- package/dist/auth/credential-source.js.map +1 -1
- package/dist/catalog/chat-pickers.cjs +31 -0
- package/dist/catalog/chat-pickers.cjs.map +1 -1
- package/dist/catalog/chat-pickers.d.ts +17 -0
- package/dist/catalog/chat-pickers.js +33 -2
- package/dist/catalog/chat-pickers.js.map +1 -1
- package/dist/catalog/runtime-catalog.cjs +63 -3
- package/dist/catalog/runtime-catalog.cjs.map +1 -1
- package/dist/catalog/runtime-catalog.d.ts +63 -3
- package/dist/catalog/runtime-catalog.js +64 -4
- package/dist/catalog/runtime-catalog.js.map +1 -1
- package/dist/chat/AthenaChat.cjs +301 -98
- package/dist/chat/AthenaChat.cjs.map +1 -1
- package/dist/chat/AthenaChat.d.ts +80 -4
- package/dist/chat/AthenaChat.js +302 -99
- package/dist/chat/AthenaChat.js.map +1 -1
- package/dist/chat/StatewireApprovalCard.cjs +35 -5
- package/dist/chat/StatewireApprovalCard.cjs.map +1 -1
- package/dist/chat/StatewireApprovalCard.d.ts +55 -2
- package/dist/chat/StatewireApprovalCard.js +37 -7
- package/dist/chat/StatewireApprovalCard.js.map +1 -1
- package/dist/chat/StatewireQueuedMessages.cjs +17 -2
- package/dist/chat/StatewireQueuedMessages.cjs.map +1 -1
- package/dist/chat/StatewireQueuedMessages.d.ts +8 -45
- package/dist/chat/StatewireQueuedMessages.js +18 -3
- package/dist/chat/StatewireQueuedMessages.js.map +1 -1
- package/dist/chat/chat-agent-mentions.cjs +70 -0
- package/dist/chat/chat-agent-mentions.cjs.map +1 -0
- package/dist/chat/chat-agent-mentions.d.ts +13 -0
- package/dist/chat/chat-agent-mentions.js +70 -0
- package/dist/chat/chat-agent-mentions.js.map +1 -0
- package/dist/chat/composer-actions.cjs +12 -0
- package/dist/chat/composer-actions.cjs.map +1 -0
- package/dist/chat/composer-actions.d.ts +22 -0
- package/dist/chat/composer-actions.js +12 -0
- package/dist/chat/composer-actions.js.map +1 -0
- package/dist/chat/follow-up-suggestions.cjs +185 -0
- package/dist/chat/follow-up-suggestions.cjs.map +1 -0
- package/dist/chat/follow-up-suggestions.d.ts +64 -0
- package/dist/chat/follow-up-suggestions.js +185 -0
- package/dist/chat/follow-up-suggestions.js.map +1 -0
- package/dist/chat/super-grouping/ToolTimeline.cjs +4 -3
- package/dist/chat/super-grouping/ToolTimeline.cjs.map +1 -1
- package/dist/chat/super-grouping/ToolTimeline.d.ts +7 -3
- package/dist/chat/super-grouping/ToolTimeline.js +4 -3
- package/dist/chat/super-grouping/ToolTimeline.js.map +1 -1
- package/dist/chat/turn-changes.cjs +284 -0
- package/dist/chat/turn-changes.cjs.map +1 -0
- package/dist/chat/turn-changes.d.ts +130 -0
- package/dist/chat/turn-changes.js +284 -0
- package/dist/chat/turn-changes.js.map +1 -0
- package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.cjs +31 -0
- package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.cjs.map +1 -0
- package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.d.ts +31 -0
- package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.js +31 -0
- package/dist/chat/typed-interrupts/StatewireTypedInterruptCard.js.map +1 -0
- package/dist/chat/typed-interrupts/approval-cards.cjs +250 -0
- package/dist/chat/typed-interrupts/approval-cards.cjs.map +1 -0
- package/dist/chat/typed-interrupts/approval-cards.d.ts +22 -0
- package/dist/chat/typed-interrupts/approval-cards.js +250 -0
- package/dist/chat/typed-interrupts/approval-cards.js.map +1 -0
- package/dist/chat/typed-interrupts/form-cards.cjs +289 -0
- package/dist/chat/typed-interrupts/form-cards.cjs.map +1 -0
- package/dist/chat/typed-interrupts/form-cards.d.ts +6 -0
- package/dist/chat/typed-interrupts/form-cards.js +289 -0
- package/dist/chat/typed-interrupts/form-cards.js.map +1 -0
- package/dist/chat/typed-interrupts/interrupt-card-shell.cjs +182 -0
- package/dist/chat/typed-interrupts/interrupt-card-shell.cjs.map +1 -0
- package/dist/chat/typed-interrupts/interrupt-card-shell.d.ts +47 -0
- package/dist/chat/typed-interrupts/interrupt-card-shell.js +182 -0
- package/dist/chat/typed-interrupts/interrupt-card-shell.js.map +1 -0
- package/dist/chat/typed-interrupts/json-schema-form.cjs +388 -0
- package/dist/chat/typed-interrupts/json-schema-form.cjs.map +1 -0
- package/dist/chat/typed-interrupts/json-schema-form.d.ts +33 -0
- package/dist/chat/typed-interrupts/json-schema-form.js +388 -0
- package/dist/chat/typed-interrupts/json-schema-form.js.map +1 -0
- package/dist/chat/typed-interrupts/questionnaire-card.cjs +449 -0
- package/dist/chat/typed-interrupts/questionnaire-card.cjs.map +1 -0
- package/dist/chat/typed-interrupts/questionnaire-card.d.ts +20 -0
- package/dist/chat/typed-interrupts/questionnaire-card.js +449 -0
- package/dist/chat/typed-interrupts/questionnaire-card.js.map +1 -0
- package/dist/chat/typed-interrupts/request-file-card.cjs +159 -0
- package/dist/chat/typed-interrupts/request-file-card.cjs.map +1 -0
- package/dist/chat/typed-interrupts/request-file-card.d.ts +2 -0
- package/dist/chat/typed-interrupts/request-file-card.js +159 -0
- package/dist/chat/typed-interrupts/request-file-card.js.map +1 -0
- package/dist/chat/typed-interrupts/toolkit-selection-card.cjs +189 -0
- package/dist/chat/typed-interrupts/toolkit-selection-card.cjs.map +1 -0
- package/dist/chat/typed-interrupts/toolkit-selection-card.d.ts +23 -0
- package/dist/chat/typed-interrupts/toolkit-selection-card.js +189 -0
- package/dist/chat/typed-interrupts/toolkit-selection-card.js.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-body.cjs +26 -0
- package/dist/chat/typed-interrupts/typed-interrupt-body.cjs.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-body.d.ts +3 -0
- package/dist/chat/typed-interrupts/typed-interrupt-body.js +26 -0
- package/dist/chat/typed-interrupts/typed-interrupt-body.js.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-graphql.cjs +105 -0
- package/dist/chat/typed-interrupts/typed-interrupt-graphql.cjs.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-graphql.d.ts +29 -0
- package/dist/chat/typed-interrupts/typed-interrupt-graphql.js +105 -0
- package/dist/chat/typed-interrupts/typed-interrupt-graphql.js.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-notice.cjs +70 -0
- package/dist/chat/typed-interrupts/typed-interrupt-notice.cjs.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-notice.d.ts +45 -0
- package/dist/chat/typed-interrupts/typed-interrupt-notice.js +70 -0
- package/dist/chat/typed-interrupts/typed-interrupt-notice.js.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-panel.cjs +76 -0
- package/dist/chat/typed-interrupts/typed-interrupt-panel.cjs.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-panel.d.ts +11 -0
- package/dist/chat/typed-interrupts/typed-interrupt-panel.js +76 -0
- package/dist/chat/typed-interrupts/typed-interrupt-panel.js.map +1 -0
- package/dist/chat/typed-interrupts/typed-interrupt-types.d.ts +46 -0
- package/dist/chat/typed-interrupts/use-interrupt-draft.cjs +106 -0
- package/dist/chat/typed-interrupts/use-interrupt-draft.cjs.map +1 -0
- package/dist/chat/typed-interrupts/use-interrupt-draft.d.ts +29 -0
- package/dist/chat/typed-interrupts/use-interrupt-draft.js +106 -0
- package/dist/chat/typed-interrupts/use-interrupt-draft.js.map +1 -0
- package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.cjs +231 -0
- package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.cjs.map +1 -0
- package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.d.ts +66 -0
- package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.js +231 -0
- package/dist/chat/typed-interrupts/use-statewire-typed-interrupt.js.map +1 -0
- package/dist/chat-ui/composer/composer-named-agents.cjs +13 -0
- package/dist/chat-ui/composer/composer-named-agents.cjs.map +1 -0
- package/dist/chat-ui/composer/composer-named-agents.d.ts +20 -0
- package/dist/chat-ui/composer/composer-named-agents.js +13 -0
- package/dist/chat-ui/composer/composer-named-agents.js.map +1 -0
- package/dist/chat-ui/composer/slash-command-menu.cjs +143 -0
- package/dist/chat-ui/composer/slash-command-menu.cjs.map +1 -0
- package/dist/chat-ui/composer/slash-command-menu.d.ts +19 -0
- package/dist/chat-ui/composer/slash-command-menu.js +143 -0
- package/dist/chat-ui/composer/slash-command-menu.js.map +1 -0
- package/dist/chat-ui/composer/slash-commands-extension.cjs +51 -0
- package/dist/chat-ui/composer/slash-commands-extension.cjs.map +1 -0
- package/dist/chat-ui/composer/slash-commands-extension.d.ts +39 -0
- package/dist/chat-ui/composer/slash-commands-extension.js +51 -0
- package/dist/chat-ui/composer/slash-commands-extension.js.map +1 -0
- package/dist/chat-ui/composer/slash-commands.cjs +74 -0
- package/dist/chat-ui/composer/slash-commands.cjs.map +1 -0
- package/dist/chat-ui/composer/slash-commands.d.ts +82 -0
- package/dist/chat-ui/composer/slash-commands.js +74 -0
- package/dist/chat-ui/composer/slash-commands.js.map +1 -0
- package/dist/chat-ui/composer/tiptap-composer.cjs +135 -9
- package/dist/chat-ui/composer/tiptap-composer.cjs.map +1 -1
- package/dist/chat-ui/composer/tiptap-composer.d.ts +61 -2
- package/dist/chat-ui/composer/tiptap-composer.js +135 -9
- package/dist/chat-ui/composer/tiptap-composer.js.map +1 -1
- package/dist/chat-ui/index.cjs +5 -0
- package/dist/chat-ui/index.cjs.map +1 -1
- package/dist/chat-ui/index.d.ts +4 -2
- package/dist/chat-ui/index.js +5 -0
- package/dist/chat-ui/index.js.map +1 -1
- package/dist/chat-ui/mentions/mention-chip.cjs +10 -4
- package/dist/chat-ui/mentions/mention-chip.cjs.map +1 -1
- package/dist/chat-ui/mentions/mention-chip.js +11 -5
- package/dist/chat-ui/mentions/mention-chip.js.map +1 -1
- package/dist/chat-ui/mentions/mention-extension.cjs +8 -1
- package/dist/chat-ui/mentions/mention-extension.cjs.map +1 -1
- package/dist/chat-ui/mentions/mention-extension.js +8 -1
- package/dist/chat-ui/mentions/mention-extension.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/components/get-scope-name.cjs +1 -0
- package/dist/chat-ui/mentions/suggestions/components/get-scope-name.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/components/get-scope-name.js +1 -0
- package/dist/chat-ui/mentions/suggestions/components/get-scope-name.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/components/mention-icon.cjs +20 -2
- package/dist/chat-ui/mentions/suggestions/components/mention-icon.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/components/mention-icon.d.ts +10 -1
- package/dist/chat-ui/mentions/suggestions/components/mention-icon.js +22 -4
- package/dist/chat-ui/mentions/suggestions/components/mention-icon.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/components/menu-item.cjs +1 -1
- package/dist/chat-ui/mentions/suggestions/components/menu-item.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/components/menu-item.js +1 -1
- package/dist/chat-ui/mentions/suggestions/components/menu-item.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/api-client.cjs +45 -0
- package/dist/chat-ui/mentions/suggestions/data/api-client.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/api-client.d.ts +48 -0
- package/dist/chat-ui/mentions/suggestions/data/api-client.js +45 -0
- package/dist/chat-ui/mentions/suggestions/data/api-client.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icon-names.generated.cjs +89 -0
- package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icon-names.generated.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icon-names.generated.d.ts +8 -0
- package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icon-names.generated.js +89 -0
- package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icon-names.generated.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icons.cjs +140 -116
- package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icons.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icons.d.ts +46 -12
- package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icons.js +141 -117
- package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icons.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs +272 -25
- package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/sources/index.d.ts +88 -10
- package/dist/chat-ui/mentions/suggestions/data/sources/index.js +274 -27
- package/dist/chat-ui/mentions/suggestions/data/sources/index.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/types.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/types.d.ts +27 -1
- package/dist/chat-ui/mentions/suggestions/data/types.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs +56 -5
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.d.ts +26 -6
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js +57 -6
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.cjs +34 -17
- package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.d.ts +19 -1
- package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.js +35 -18
- package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.js.map +1 -1
- package/dist/chat-ui/mentions/use-asset-icon-app-url.cjs +12 -0
- package/dist/chat-ui/mentions/use-asset-icon-app-url.cjs.map +1 -0
- package/dist/chat-ui/mentions/use-asset-icon-app-url.d.ts +8 -0
- package/dist/chat-ui/mentions/use-asset-icon-app-url.js +12 -0
- package/dist/chat-ui/mentions/use-asset-icon-app-url.js.map +1 -0
- package/dist/chat-ui/statewire.d.ts +1 -1
- package/dist/chat-ui/thread/statewire-history-edge.cjs +15 -0
- package/dist/chat-ui/thread/statewire-history-edge.cjs.map +1 -1
- package/dist/chat-ui/thread/statewire-history-edge.d.ts +4 -1
- package/dist/chat-ui/thread/statewire-history-edge.js +15 -0
- package/dist/chat-ui/thread/statewire-history-edge.js.map +1 -1
- package/dist/collab/client.cjs +41 -6
- package/dist/collab/client.cjs.map +1 -1
- package/dist/collab/client.d.ts +38 -7
- package/dist/collab/client.js +41 -6
- package/dist/collab/client.js.map +1 -1
- package/dist/composer/ComposerAttachedReferences.cjs +119 -0
- package/dist/composer/ComposerAttachedReferences.cjs.map +1 -0
- package/dist/composer/ComposerAttachedReferences.d.ts +26 -0
- package/dist/composer/ComposerAttachedReferences.js +119 -0
- package/dist/composer/ComposerAttachedReferences.js.map +1 -0
- package/dist/composer/ComposerNamedAgents.cjs +63 -0
- package/dist/composer/ComposerNamedAgents.cjs.map +1 -0
- package/dist/composer/ComposerNamedAgents.d.ts +16 -0
- package/dist/composer/ComposerNamedAgents.js +63 -0
- package/dist/composer/ComposerNamedAgents.js.map +1 -0
- package/dist/composer/attached-references.cjs +159 -0
- package/dist/composer/attached-references.cjs.map +1 -0
- package/dist/composer/attached-references.d.ts +86 -0
- package/dist/composer/attached-references.js +159 -0
- package/dist/composer/attached-references.js.map +1 -0
- package/dist/composer/build-composed-message.cjs +14 -7
- package/dist/composer/build-composed-message.cjs.map +1 -1
- package/dist/composer/build-composed-message.d.ts +6 -1
- package/dist/composer/build-composed-message.js +14 -7
- package/dist/composer/build-composed-message.js.map +1 -1
- package/dist/composer/composer-handoff.cjs +6 -2
- package/dist/composer/composer-handoff.cjs.map +1 -1
- package/dist/composer/composer-handoff.d.ts +7 -1
- package/dist/composer/composer-handoff.js +6 -2
- package/dist/composer/composer-handoff.js.map +1 -1
- package/dist/composer/folder-upload.cjs +149 -0
- package/dist/composer/folder-upload.cjs.map +1 -0
- package/dist/composer/folder-upload.d.ts +79 -0
- package/dist/composer/folder-upload.js +149 -0
- package/dist/composer/folder-upload.js.map +1 -0
- package/dist/composer/index.d.ts +1 -1
- package/dist/composer/staged-message-metadata.cjs +12 -0
- package/dist/composer/staged-message-metadata.cjs.map +1 -0
- package/dist/composer/staged-message-metadata.d.ts +15 -0
- package/dist/composer/staged-message-metadata.js +12 -0
- package/dist/composer/staged-message-metadata.js.map +1 -0
- package/dist/composer/useAttachToChat.cjs +35 -0
- package/dist/composer/useAttachToChat.cjs.map +1 -0
- package/dist/composer/useAttachToChat.d.ts +54 -0
- package/dist/composer/useAttachToChat.js +35 -0
- package/dist/composer/useAttachToChat.js.map +1 -0
- package/dist/composer/useAttachedReferencesComposerProps.cjs +19 -0
- package/dist/composer/useAttachedReferencesComposerProps.cjs.map +1 -0
- package/dist/composer/useAttachedReferencesComposerProps.d.ts +12 -0
- package/dist/composer/useAttachedReferencesComposerProps.js +19 -0
- package/dist/composer/useAttachedReferencesComposerProps.js.map +1 -0
- package/dist/composer/useFileUpload.cjs +95 -7
- package/dist/composer/useFileUpload.cjs.map +1 -1
- package/dist/composer/useFileUpload.d.ts +21 -2
- package/dist/composer/useFileUpload.js +95 -7
- package/dist/composer/useFileUpload.js.map +1 -1
- package/dist/data/athena-api-error.cjs +125 -0
- package/dist/data/athena-api-error.cjs.map +1 -0
- package/dist/data/athena-api-error.d.ts +96 -0
- package/dist/data/athena-api-error.js +125 -0
- package/dist/data/athena-api-error.js.map +1 -0
- package/dist/data/athena-data-client.cjs +106 -0
- package/dist/data/athena-data-client.cjs.map +1 -0
- package/dist/data/athena-data-client.d.ts +74 -0
- package/dist/data/athena-data-client.js +106 -0
- package/dist/data/athena-data-client.js.map +1 -0
- package/dist/data/athena-member.cjs +93 -0
- package/dist/data/athena-member.cjs.map +1 -0
- package/dist/data/athena-member.d.ts +125 -0
- package/dist/data/athena-member.js +93 -0
- package/dist/data/athena-member.js.map +1 -0
- package/dist/data/athena-request.cjs +460 -0
- package/dist/data/athena-request.cjs.map +1 -0
- package/dist/data/athena-request.d.ts +120 -0
- package/dist/data/athena-request.js +460 -0
- package/dist/data/athena-request.js.map +1 -0
- package/dist/data/use-athena-fetch.cjs +14 -0
- package/dist/data/use-athena-fetch.cjs.map +1 -0
- package/dist/data/use-athena-fetch.d.ts +19 -0
- package/dist/data/use-athena-fetch.js +14 -0
- package/dist/data/use-athena-fetch.js.map +1 -0
- package/dist/data/use-athena-graphql.cjs +66 -0
- package/dist/data/use-athena-graphql.cjs.map +1 -0
- package/dist/data/use-athena-graphql.d.ts +56 -0
- package/dist/data/use-athena-graphql.js +66 -0
- package/dist/data/use-athena-graphql.js.map +1 -0
- package/dist/data/use-athena-rest.cjs +33 -0
- package/dist/data/use-athena-rest.cjs.map +1 -0
- package/dist/data/use-athena-rest.d.ts +21 -0
- package/dist/data/use-athena-rest.js +33 -0
- package/dist/data/use-athena-rest.js.map +1 -0
- package/dist/data/use-semantic-query.cjs +44 -0
- package/dist/data/use-semantic-query.cjs.map +1 -0
- package/dist/data/use-semantic-query.d.ts +92 -0
- package/dist/data/use-semantic-query.js +44 -0
- package/dist/data/use-semantic-query.js.map +1 -0
- package/dist/diagnostics/athena-diagnostics.cjs.map +1 -1
- package/dist/diagnostics/athena-diagnostics.d.ts +5 -1
- package/dist/diagnostics/athena-diagnostics.js.map +1 -1
- package/dist/diagnostics/errors.cjs +7 -0
- package/dist/diagnostics/errors.cjs.map +1 -1
- package/dist/diagnostics/errors.d.ts +7 -0
- package/dist/diagnostics/errors.js +7 -0
- package/dist/diagnostics/errors.js.map +1 -1
- package/dist/index.cjs +155 -11
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +72 -13
- package/dist/index.js +148 -4
- package/dist/index.js.map +1 -1
- package/dist/keryx-http/src/initial-sync.cjs +64 -16
- package/dist/keryx-http/src/initial-sync.cjs.map +1 -1
- package/dist/keryx-http/src/initial-sync.d.ts +31 -1
- package/dist/keryx-http/src/initial-sync.js +64 -16
- package/dist/keryx-http/src/initial-sync.js.map +1 -1
- package/dist/keryx-http/src/own-awareness.cjs +20 -0
- package/dist/keryx-http/src/own-awareness.cjs.map +1 -0
- package/dist/keryx-http/src/own-awareness.d.ts +50 -0
- package/dist/keryx-http/src/own-awareness.js +20 -0
- package/dist/keryx-http/src/own-awareness.js.map +1 -0
- package/dist/keryx-http/src/update-attributions.cjs +26 -1
- package/dist/keryx-http/src/update-attributions.cjs.map +1 -1
- package/dist/keryx-http/src/update-attributions.d.ts +10 -1
- package/dist/keryx-http/src/update-attributions.js +26 -1
- package/dist/keryx-http/src/update-attributions.js.map +1 -1
- package/dist/offline/chat-outbox.cjs +262 -26
- package/dist/offline/chat-outbox.cjs.map +1 -1
- package/dist/offline/chat-outbox.d.ts +90 -12
- package/dist/offline/chat-outbox.js +263 -27
- package/dist/offline/chat-outbox.js.map +1 -1
- package/dist/provider/AthenaProvider.cjs +60 -22
- package/dist/provider/AthenaProvider.cjs.map +1 -1
- package/dist/provider/AthenaProvider.d.ts +24 -8
- package/dist/provider/AthenaProvider.js +61 -23
- package/dist/provider/AthenaProvider.js.map +1 -1
- package/dist/react/package.json.cjs +1 -1
- package/dist/react/package.json.js +1 -1
- package/dist/references/src/anchors/parse.cjs +11 -1
- package/dist/references/src/anchors/parse.cjs.map +1 -1
- package/dist/references/src/anchors/parse.js +11 -1
- package/dist/references/src/anchors/parse.js.map +1 -1
- package/dist/references/src/anchors/schemas.d.ts +1 -0
- package/dist/references/src/anchors/serialize.cjs +1 -0
- package/dist/references/src/anchors/serialize.cjs.map +1 -1
- package/dist/references/src/anchors/serialize.js +1 -0
- package/dist/references/src/anchors/serialize.js.map +1 -1
- package/dist/references/src/anchors/types.cjs +5 -0
- package/dist/references/src/anchors/types.cjs.map +1 -1
- package/dist/references/src/anchors/types.d.ts +9 -0
- package/dist/references/src/anchors/types.js +5 -0
- package/dist/references/src/anchors/types.js.map +1 -1
- package/dist/references/src/attachable.cjs +149 -0
- package/dist/references/src/attachable.cjs.map +1 -0
- package/dist/references/src/attachable.d.ts +87 -0
- package/dist/references/src/attachable.js +149 -0
- package/dist/references/src/attachable.js.map +1 -0
- package/dist/references/src/schemas.d.ts +2 -0
- package/dist/runtime/StatewirePlanModeLaneSync.cjs +93 -0
- package/dist/runtime/StatewirePlanModeLaneSync.cjs.map +1 -0
- package/dist/runtime/StatewirePlanModeLaneSync.d.ts +34 -0
- package/dist/runtime/StatewirePlanModeLaneSync.js +93 -0
- package/dist/runtime/StatewirePlanModeLaneSync.js.map +1 -0
- package/dist/runtime/StatewireThreadConfigLaneSync.cjs +2 -0
- package/dist/runtime/StatewireThreadConfigLaneSync.cjs.map +1 -1
- package/dist/runtime/StatewireThreadConfigLaneSync.d.ts +4 -0
- package/dist/runtime/StatewireThreadConfigLaneSync.js +2 -0
- package/dist/runtime/StatewireThreadConfigLaneSync.js.map +1 -1
- package/dist/runtime/statewire-plan-mode.cjs +71 -0
- package/dist/runtime/statewire-plan-mode.cjs.map +1 -0
- package/dist/runtime/statewire-plan-mode.d.ts +88 -0
- package/dist/runtime/statewire-plan-mode.js +71 -0
- package/dist/runtime/statewire-plan-mode.js.map +1 -0
- package/dist/runtime/statewire-run-config.cjs +3 -1
- package/dist/runtime/statewire-run-config.cjs.map +1 -1
- package/dist/runtime/statewire-run-config.d.ts +7 -0
- package/dist/runtime/statewire-run-config.js +3 -1
- package/dist/runtime/statewire-run-config.js.map +1 -1
- package/dist/runtime/statewire-session-key.cjs +11 -5
- package/dist/runtime/statewire-session-key.cjs.map +1 -1
- package/dist/runtime/statewire-session-key.d.ts +22 -10
- package/dist/runtime/statewire-session-key.js +11 -5
- package/dist/runtime/statewire-session-key.js.map +1 -1
- package/dist/runtime/useAthenaStatewireRuntime.cjs +64 -9
- package/dist/runtime/useAthenaStatewireRuntime.cjs.map +1 -1
- package/dist/runtime/useAthenaStatewireRuntime.d.ts +26 -10
- package/dist/runtime/useAthenaStatewireRuntime.js +66 -11
- package/dist/runtime/useAthenaStatewireRuntime.js.map +1 -1
- package/dist/search/useAthenaAssets.cjs +394 -0
- package/dist/search/useAthenaAssets.cjs.map +1 -0
- package/dist/search/useAthenaAssets.d.ts +186 -0
- package/dist/search/useAthenaAssets.js +394 -0
- package/dist/search/useAthenaAssets.js.map +1 -0
- package/dist/sheet-range/index.cjs +4 -0
- package/dist/sheet-range/index.cjs.map +1 -1
- package/dist/sheet-range/index.d.ts +4 -2
- package/dist/sheet-range/index.js +4 -0
- package/dist/sheet-range/index.js.map +1 -1
- package/dist/sheet-range/query-range.cjs +102 -0
- package/dist/sheet-range/query-range.cjs.map +1 -0
- package/dist/sheet-range/query-range.d.ts +46 -0
- package/dist/sheet-range/query-range.js +102 -0
- package/dist/sheet-range/query-range.js.map +1 -0
- package/dist/styles.css +1 -1
- package/dist/subagents/index.cjs +49 -0
- package/dist/subagents/index.cjs.map +1 -0
- package/dist/subagents/index.d.ts +16 -0
- package/dist/subagents/index.js +49 -0
- package/dist/subagents/index.js.map +1 -0
- package/dist/subagents/lane-follow.cjs +19 -0
- package/dist/subagents/lane-follow.cjs.map +1 -0
- package/dist/subagents/lane-follow.d.ts +9 -0
- package/dist/subagents/lane-follow.js +19 -0
- package/dist/subagents/lane-follow.js.map +1 -0
- package/dist/subagents/lane-model.cjs +178 -0
- package/dist/subagents/lane-model.cjs.map +1 -0
- package/dist/subagents/lane-model.d.ts +140 -0
- package/dist/subagents/lane-model.js +178 -0
- package/dist/subagents/lane-model.js.map +1 -0
- package/dist/subagents/lane-parts.cjs +517 -0
- package/dist/subagents/lane-parts.cjs.map +1 -0
- package/dist/subagents/lane-parts.d.ts +130 -0
- package/dist/subagents/lane-parts.js +517 -0
- package/dist/subagents/lane-parts.js.map +1 -0
- package/dist/subagents/subagent-lane-group.cjs +215 -0
- package/dist/subagents/subagent-lane-group.cjs.map +1 -0
- package/dist/subagents/subagent-lane-group.d.ts +67 -0
- package/dist/subagents/subagent-lane-group.js +215 -0
- package/dist/subagents/subagent-lane-group.js.map +1 -0
- package/dist/subagents/subagent-transcript-drawer.cjs +431 -0
- package/dist/subagents/subagent-transcript-drawer.cjs.map +1 -0
- package/dist/subagents/subagent-transcript-drawer.d.ts +78 -0
- package/dist/subagents/subagent-transcript-drawer.js +431 -0
- package/dist/subagents/subagent-transcript-drawer.js.map +1 -0
- package/dist/subagents/task-subagent-group.cjs +115 -0
- package/dist/subagents/task-subagent-group.cjs.map +1 -0
- package/dist/subagents/task-subagent-group.d.ts +36 -0
- package/dist/subagents/task-subagent-group.js +115 -0
- package/dist/subagents/task-subagent-group.js.map +1 -0
- package/dist/subagents/use-omitted-images-in-view.cjs +68 -0
- package/dist/subagents/use-omitted-images-in-view.cjs.map +1 -0
- package/dist/subagents/use-omitted-images-in-view.d.ts +21 -0
- package/dist/subagents/use-omitted-images-in-view.js +68 -0
- package/dist/subagents/use-omitted-images-in-view.js.map +1 -0
- package/dist/threads/Inbox.cjs +2 -2
- package/dist/threads/Inbox.cjs.map +1 -1
- package/dist/threads/SessionList.cjs +6 -6
- package/dist/threads/SessionList.cjs.map +1 -1
- package/dist/threads/SessionsPage.cjs +13 -7
- package/dist/threads/SessionsPage.cjs.map +1 -1
- package/dist/threads/SessionsPage.d.ts +10 -1
- package/dist/threads/SessionsPage.js +9 -3
- package/dist/threads/SessionsPage.js.map +1 -1
- package/dist/threads/session-list-model.cjs.map +1 -1
- package/dist/threads/session-list-model.d.ts +2 -1
- package/dist/threads/session-list-model.js.map +1 -1
- package/dist/threads/session-row-parts.cjs +3 -3
- package/dist/threads/session-row-parts.cjs.map +1 -1
- package/dist/threads/sessions-page-model.cjs +13 -5
- package/dist/threads/sessions-page-model.cjs.map +1 -1
- package/dist/threads/sessions-page-model.d.ts +7 -0
- package/dist/threads/sessions-page-model.js +11 -3
- package/dist/threads/sessions-page-model.js.map +1 -1
- package/dist/threads/sessions-page-storage.cjs +8 -8
- package/dist/threads/sessions-page-storage.cjs.map +1 -1
- package/dist/threads/sessions-page-storage.d.ts +5 -1
- package/dist/threads/sessions-page-storage.js +8 -8
- package/dist/threads/sessions-page-storage.js.map +1 -1
- package/dist/threads/statewire-thread-list.cjs +14 -2
- package/dist/threads/statewire-thread-list.cjs.map +1 -1
- package/dist/threads/statewire-thread-list.d.ts +11 -2
- package/dist/threads/statewire-thread-list.js +14 -2
- package/dist/threads/statewire-thread-list.js.map +1 -1
- package/dist/threads/use-athena-sessions.cjs +1 -0
- package/dist/threads/use-athena-sessions.cjs.map +1 -1
- package/dist/threads/use-athena-sessions.d.ts +7 -0
- package/dist/threads/use-athena-sessions.js +1 -0
- package/dist/threads/use-athena-sessions.js.map +1 -1
- package/dist/threads/use-athena-thread-agent.cjs +31 -0
- package/dist/threads/use-athena-thread-agent.cjs.map +1 -0
- package/dist/threads/use-athena-thread-agent.d.ts +38 -0
- package/dist/threads/use-athena-thread-agent.js +31 -0
- package/dist/threads/use-athena-thread-agent.js.map +1 -0
- package/dist/threads/use-athena-thread-plan-mode.cjs +18 -0
- package/dist/threads/use-athena-thread-plan-mode.cjs.map +1 -0
- package/dist/threads/use-athena-thread-plan-mode.d.ts +18 -0
- package/dist/threads/use-athena-thread-plan-mode.js +18 -0
- package/dist/threads/use-athena-thread-plan-mode.js.map +1 -0
- package/dist/threads/use-rest-conversation-history.d.ts +1 -0
- package/dist/tools/agent-creations.cjs +97 -0
- package/dist/tools/agent-creations.cjs.map +1 -0
- package/dist/tools/agent-creations.d.ts +38 -0
- package/dist/tools/agent-creations.js +97 -0
- package/dist/tools/agent-creations.js.map +1 -0
- package/dist/tools/agent-highlights.cjs +100 -0
- package/dist/tools/agent-highlights.cjs.map +1 -0
- package/dist/tools/agent-highlights.d.ts +57 -0
- package/dist/tools/agent-highlights.js +100 -0
- package/dist/tools/agent-highlights.js.map +1 -0
- package/dist/tools/append-document-tool-ui.cjs +1 -0
- package/dist/tools/append-document-tool-ui.cjs.map +1 -1
- package/dist/tools/append-document-tool-ui.d.ts +7 -0
- package/dist/tools/append-document-tool-ui.js +2 -1
- package/dist/tools/append-document-tool-ui.js.map +1 -1
- package/dist/tools/auto-open-tools.cjs +144 -71
- package/dist/tools/auto-open-tools.cjs.map +1 -1
- package/dist/tools/auto-open-tools.d.ts +131 -1
- package/dist/tools/auto-open-tools.js +145 -72
- package/dist/tools/auto-open-tools.js.map +1 -1
- package/dist/tools/browser-tool-uis.cjs +594 -0
- package/dist/tools/browser-tool-uis.cjs.map +1 -0
- package/dist/tools/browser-tool-uis.d.ts +8 -0
- package/dist/tools/browser-tool-uis.js +594 -0
- package/dist/tools/browser-tool-uis.js.map +1 -0
- package/dist/tools/computer-asset-tool-uis.cjs +313 -0
- package/dist/tools/computer-asset-tool-uis.cjs.map +1 -0
- package/dist/tools/computer-asset-tool-uis.d.ts +5 -0
- package/dist/tools/computer-asset-tool-uis.js +313 -0
- package/dist/tools/computer-asset-tool-uis.js.map +1 -0
- package/dist/tools/document-edit-tool-uis.cjs +218 -0
- package/dist/tools/document-edit-tool-uis.cjs.map +1 -0
- package/dist/tools/document-edit-tool-uis.d.ts +40 -0
- package/dist/tools/document-edit-tool-uis.js +218 -0
- package/dist/tools/document-edit-tool-uis.js.map +1 -0
- package/dist/tools/drive-tool-uis.cjs +429 -0
- package/dist/tools/drive-tool-uis.cjs.map +1 -0
- package/dist/tools/drive-tool-uis.d.ts +121 -0
- package/dist/tools/drive-tool-uis.js +429 -0
- package/dist/tools/drive-tool-uis.js.map +1 -0
- package/dist/tools/email-calendar-tool-uis.cjs +789 -0
- package/dist/tools/email-calendar-tool-uis.cjs.map +1 -0
- package/dist/tools/email-calendar-tool-uis.d.ts +129 -0
- package/dist/tools/email-calendar-tool-uis.js +789 -0
- package/dist/tools/email-calendar-tool-uis.js.map +1 -0
- package/dist/tools/ontology-tool-uis.cjs +83 -0
- package/dist/tools/ontology-tool-uis.cjs.map +1 -0
- package/dist/tools/ontology-tool-uis.d.ts +9 -0
- package/dist/tools/ontology-tool-uis.js +83 -0
- package/dist/tools/ontology-tool-uis.js.map +1 -0
- package/dist/tools/orchestration-tool-uis.cjs +586 -0
- package/dist/tools/orchestration-tool-uis.cjs.map +1 -0
- package/dist/tools/orchestration-tool-uis.d.ts +141 -0
- package/dist/tools/orchestration-tool-uis.js +586 -0
- package/dist/tools/orchestration-tool-uis.js.map +1 -0
- package/dist/tools/presentation-edit-tool-uis.cjs +516 -0
- package/dist/tools/presentation-edit-tool-uis.cjs.map +1 -0
- package/dist/tools/presentation-edit-tool-uis.d.ts +73 -0
- package/dist/tools/presentation-edit-tool-uis.js +516 -0
- package/dist/tools/presentation-edit-tool-uis.js.map +1 -0
- package/dist/tools/project-tool-uis.cjs +213 -0
- package/dist/tools/project-tool-uis.cjs.map +1 -0
- package/dist/tools/project-tool-uis.d.ts +14 -0
- package/dist/tools/project-tool-uis.js +213 -0
- package/dist/tools/project-tool-uis.js.map +1 -0
- package/dist/tools/sandbox-tool-uis.cjs +491 -0
- package/dist/tools/sandbox-tool-uis.cjs.map +1 -0
- package/dist/tools/sandbox-tool-uis.d.ts +116 -0
- package/dist/tools/sandbox-tool-uis.js +491 -0
- package/dist/tools/sandbox-tool-uis.js.map +1 -0
- package/dist/tools/sheet-query-tool-ui.cjs +138 -0
- package/dist/tools/sheet-query-tool-ui.cjs.map +1 -0
- package/dist/tools/sheet-query-tool-ui.d.ts +15 -0
- package/dist/tools/sheet-query-tool-ui.js +138 -0
- package/dist/tools/sheet-query-tool-ui.js.map +1 -0
- package/dist/tools/studio-screenshot-tool-uis.cjs +262 -0
- package/dist/tools/studio-screenshot-tool-uis.cjs.map +1 -0
- package/dist/tools/studio-screenshot-tool-uis.d.ts +52 -0
- package/dist/tools/studio-screenshot-tool-uis.js +262 -0
- package/dist/tools/studio-screenshot-tool-uis.js.map +1 -0
- package/dist/tools/subagent-task-tool-ui.cjs +24 -475
- package/dist/tools/subagent-task-tool-ui.cjs.map +1 -1
- package/dist/tools/subagent-task-tool-ui.d.ts +19 -103
- package/dist/tools/subagent-task-tool-ui.js +28 -479
- package/dist/tools/subagent-task-tool-ui.js.map +1 -1
- package/dist/tools/tool-summary.cjs +36 -0
- package/dist/tools/tool-summary.cjs.map +1 -1
- package/dist/tools/tool-summary.js +36 -0
- package/dist/tools/tool-summary.js.map +1 -1
- package/dist/tools/tool-uis.cjs +181 -53
- package/dist/tools/tool-uis.cjs.map +1 -1
- package/dist/tools/tool-uis.d.ts +40 -0
- package/dist/tools/tool-uis.js +183 -55
- package/dist/tools/tool-uis.js.map +1 -1
- package/dist/typed-interrupts/index.cjs +15 -0
- package/dist/typed-interrupts/index.cjs.map +1 -0
- package/dist/typed-interrupts/index.d.ts +20 -0
- package/dist/typed-interrupts/index.js +15 -0
- package/dist/typed-interrupts/index.js.map +1 -0
- package/dist/version.cjs +4 -0
- package/dist/version.cjs.map +1 -1
- package/dist/version.d.ts +9 -0
- package/dist/version.js +4 -0
- package/dist/version.js.map +1 -1
- package/dist/workbench/live-desktop-api.cjs +2 -1
- package/dist/workbench/live-desktop-api.cjs.map +1 -1
- package/dist/workbench/live-desktop-api.js +2 -1
- package/dist/workbench/live-desktop-api.js.map +1 -1
- package/dist/workbench/session-workbench-panes.cjs +6 -6
- package/dist/workbench/session-workbench-panes.cjs.map +1 -1
- package/dist/workbench/session-workspace-api.cjs +7 -2
- package/dist/workbench/session-workspace-api.cjs.map +1 -1
- package/dist/workbench/session-workspace-api.d.ts +10 -0
- package/dist/workbench/session-workspace-api.js +7 -2
- package/dist/workbench/session-workspace-api.js.map +1 -1
- package/package.json +28 -6
- package/dist/agent-runtime/src/chat-outbox-store.cjs +0 -510
- package/dist/agent-runtime/src/chat-outbox-store.cjs.map +0 -1
- package/dist/agent-runtime/src/chat-outbox-store.d.ts +0 -210
- package/dist/agent-runtime/src/chat-outbox-store.js +0 -510
- package/dist/agent-runtime/src/chat-outbox-store.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.cjs","sources":["../../../../../references/src/anchors/parse.ts"],"sourcesContent":["import { fileLineRangeAnchorProblem } from './file-line-range';\nimport type {\n Anchor,\n AnchorType,\n FileLineRangeAnchor,\n QueryResultRelationship,\n SemanticQueryAnchor,\n SqlQueryAnchor,\n} from './types';\nimport { isAnchorType, LEGACY_ANCHOR_TYPES } from './types';\n\n/**\n * Parse snake_case URL query parameters into a camelCase Anchor object.\n *\n * Expects `params` to contain `anchor=<type>` plus type-specific params.\n * Returns `undefined` if the anchor type is missing or unrecognized.\n */\nexport function parseAnchorFromParams(params: URLSearchParams): Anchor | undefined {\n const rawType = params.get('anchor');\n const anchorType = rawType == null ? undefined : (LEGACY_ANCHOR_TYPES[rawType] ?? rawType);\n if (!anchorType || !isAnchorType(anchorType)) return undefined;\n\n return parseAnchorByType(anchorType, params);\n}\n\nfunction requireString(params: URLSearchParams, key: string, ...legacyKeys: string[]): string {\n const value = params.get(key) ?? legacyKeys.map((k) => params.get(k)).find((v) => v != null);\n if (value == null) throw new Error(`Missing required anchor param: ${key}`);\n return value;\n}\n\nfunction requireNonEmptyString(params: URLSearchParams, key: string, ...legacyKeys: string[]): string {\n const value = requireString(params, key, ...legacyKeys);\n if (value.trim().length === 0) throw new Error(`Anchor param must be non-empty: ${key}`);\n return value;\n}\n\nfunction requireInt(params: URLSearchParams, key: string): number {\n const raw = requireString(params, key);\n const n = Number.parseInt(raw, 10);\n if (Number.isNaN(n)) throw new Error(`Invalid integer for anchor param ${key}: ${raw}`);\n return n;\n}\n\nconst POSITIVE_INT = /^[1-9]\\d*$/;\n\n/** Strict 1-based ordinal: the whole value must be digits, no leading zeros, ≥ 1. */\nfunction requirePositiveInt(params: URLSearchParams, key: string): number {\n const raw = requireString(params, key).trim();\n if (!POSITIVE_INT.test(raw)) {\n throw new Error(`Anchor param must be a positive integer: ${key}: ${raw}`);\n }\n return Number(raw);\n}\n\n/**\n * One value for `key`, refused when the parameter repeats. Clio's strict\n * anchor parser refuses a repeated parameter; `URLSearchParams.get` would\n * silently keep the first one.\n */\nfunction requireSingle(params: URLSearchParams, key: string): string {\n const values = params.getAll(key);\n const [value] = values;\n if (value == null) throw new Error(`Missing required anchor param: ${key}`);\n if (values.length > 1) throw new Error(`Anchor param must not repeat: ${key}`);\n return value;\n}\n\nconst ASCII_DECIMAL = /^\\d+$/;\n/** Python's `int()` refuses a decimal string longer than this (`sys.get_int_max_str_digits()`). */\nconst PYTHON_INT_MAX_STR_DIGITS = 4300;\n\n/**\n * A line number as Clio's anchor parser reads it: ASCII decimal digits only\n * (a Unicode digit, a sign, or a numeral too long for Python's `int()` is\n * malformed). The `[1, MAX_LINE_NUMBER]` bound is `fileLineRangeAnchorProblem`'s;\n * every numeral `Number()` cannot hold exactly also exceeds that bound, so no\n * separate integer-precision check is observable here.\n */\nfunction requireAsciiDecimal(params: URLSearchParams, key: string): number {\n const raw = requireSingle(params, key);\n if (!ASCII_DECIMAL.test(raw)) {\n throw new Error(`Anchor param must be an ASCII decimal: ${key}: ${raw}`);\n }\n if (raw.length > PYTHON_INT_MAX_STR_DIGITS) {\n throw new Error(`Anchor param is too long to be an integer: ${key}`);\n }\n return Number(raw);\n}\n\n/**\n * `anchor=file_line_range&path=…&start_line=…&end_line=…` (any parameter\n * order), refused on any rule Clio's `LineRangeLocator` refuses so a malformed\n * or unstorable anchor never resolves to a wrong file or line.\n *\n * Wire strictness mirrors Clio's anchor parser as far as `URLSearchParams`\n * can observe it: a repeated `path` / `start_line` / `end_line` is refused,\n * and so is a path containing U+FFFD — what `URLSearchParams` makes of a\n * malformed percent-escape, which Clio refuses outright (this also refuses a\n * literal `%EF%BF%BD`, which Clio would accept; nothing sensible puts U+FFFD\n * in a path). A stray `&&` or a pair without `=` is malformed to Clio but\n * invisible here — `URLSearchParams` drops or normalizes it before this parser\n * runs — so the parity claim stops at what the transport lets through.\n */\nfunction parseFileLineRange(params: URLSearchParams): FileLineRangeAnchor {\n const path = requireSingle(params, 'path');\n if (path.includes('\\uFFFD')) {\n throw new Error('path must not contain U+FFFD (a malformed percent-escape)');\n }\n const anchor: FileLineRangeAnchor = {\n type: 'file_line_range',\n path,\n startLine: requireAsciiDecimal(params, 'start_line'),\n endLine: requireAsciiDecimal(params, 'end_line'),\n };\n const problem = fileLineRangeAnchorProblem(anchor);\n if (problem) throw new Error(problem);\n return anchor;\n}\n\n/**\n * Parse a sheet_id that may be a numeric ID (common) or a string ID (legacy).\n * Legacy content sometimes stored sheetId as a string (e.g. \"sheet_1\").\n * Returns a number when possible, falling back to 0 for non-numeric values\n * to avoid silently dropping the entire anchor.\n */\nfunction parseSheetId(params: URLSearchParams): number {\n const raw = requireString(params, 'sheet_id');\n const n = Number.parseInt(raw, 10);\n return Number.isNaN(n) ? 0 : n;\n}\n\nfunction requireFloat(params: URLSearchParams, key: string): number {\n const raw = requireString(params, key);\n const n = Number.parseFloat(raw);\n if (Number.isNaN(n)) throw new Error(`Invalid number for anchor param ${key}: ${raw}`);\n return n;\n}\n\n/** Parse a JSON object param. Throws (caught upstream → undefined anchor) on non-objects. */\nfunction parseJsonObject(raw: string): Record<string, unknown> {\n const parsed: unknown = JSON.parse(raw);\n if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {\n throw new Error('Expected a JSON object');\n }\n return parsed as Record<string, unknown>;\n}\n\n/** Parse a JSON string-map param (e.g. a row key), coercing all values to strings. */\nfunction parseStringRecord(raw: string): Record<string, string> {\n return Object.fromEntries(\n Object.entries(parseJsonObject(raw)).map(([key, value]) => [key, String(value)])\n );\n}\n\n/**\n * An optional provenance map param. Provenance only adds information, so an\n * unreadable value is dropped instead of failing the whole anchor.\n */\nfunction parseOptionalStringRecord(raw: string | null): Record<string, string> | undefined {\n if (raw == null) return undefined;\n try {\n return parseStringRecord(raw);\n } catch {\n return undefined;\n }\n}\n\n/**\n * The engine shift-log frontier a `sheet_range` anchor was taken at (writer id → seq, a JSON object\n * of non-negative integers). It only adds information — a range without one resolves to its stored\n * A1 — so an unreadable value is dropped instead of failing the whole anchor. An empty object is a\n * real frontier (a document with no structural edit journaled yet) and is kept.\n */\nfunction parseOptionalShiftLogFrontier(raw: string | null): Record<string, number> | undefined {\n if (raw == null) return undefined;\n try {\n const frontier: Record<string, number> = {};\n for (const [writer, seq] of Object.entries(parseJsonObject(raw))) {\n if (typeof seq !== 'number' || !Number.isInteger(seq) || seq < 0) return undefined;\n frontier[writer] = seq;\n }\n return frontier;\n } catch {\n return undefined;\n }\n}\n\nfunction parseRelationship(raw: string | null): QueryResultRelationship | undefined {\n return raw === 'exact' || raw === 'supporting' ? raw : undefined;\n}\n\nfunction parseAnchorByType(anchorType: AnchorType, params: URLSearchParams): Anchor | undefined {\n try {\n switch (anchorType) {\n case 'cell':\n return { type: 'cell', cellId: requireString(params, 'cell_id') };\n\n case 'cell_range':\n return {\n type: 'cell_range',\n startCellId: requireString(params, 'start_cell_id'),\n endCellId: requireString(params, 'end_cell_id'),\n };\n\n case 'comment':\n return {\n type: 'comment',\n threadId: requireString(params, 'thread_id'),\n commentId: requireString(params, 'comment_id'),\n };\n\n case 'comment_thread':\n return {\n type: 'comment_thread',\n threadId: requireString(params, 'thread_id'),\n };\n\n case 'file_line_range':\n return parseFileLineRange(params);\n\n case 'line':\n return { type: 'line', line: requireInt(params, 'line') };\n\n case 'line_range':\n return {\n type: 'line_range',\n startLine: requireInt(params, 'start_line'),\n endLine: requireInt(params, 'end_line'),\n };\n\n case 'msg':\n return { type: 'msg', messageId: requireNonEmptyString(params, 'msg_id', 'message_id') };\n\n case 'msg_range':\n return {\n type: 'msg_range',\n startMessageId: requireNonEmptyString(params, 'start_msg_id', 'start_message_id'),\n endMessageId: requireNonEmptyString(params, 'end_msg_id', 'end_message_id'),\n };\n\n case 'msg_block': {\n const hash = params.get('hash');\n return {\n type: 'msg_block',\n messageId: requireNonEmptyString(params, 'msg_id'),\n block: requirePositiveInt(params, 'block'),\n ...(hash ? { hash } : {}),\n };\n }\n\n case 'msg_section': {\n const nth = params.get('nth') != null ? requirePositiveInt(params, 'nth') : undefined;\n return {\n type: 'msg_section',\n messageId: requireNonEmptyString(params, 'msg_id'),\n heading: requireNonEmptyString(params, 'heading'),\n ...(nth != null ? { nth } : {}),\n };\n }\n\n case 'msg_text': {\n const block = params.get('block') != null ? requirePositiveInt(params, 'block') : undefined;\n const prefix = params.get('prefix');\n const suffix = params.get('suffix');\n return {\n type: 'msg_text',\n messageId: requireNonEmptyString(params, 'msg_id'),\n text: requireNonEmptyString(params, 'text'),\n ...(block != null ? { block } : {}),\n ...(prefix ? { prefix } : {}),\n ...(suffix ? { suffix } : {}),\n };\n }\n\n case 'page':\n return { type: 'page', page: requireInt(params, 'page') };\n\n case 'page_range':\n return {\n type: 'page_range',\n startPage: requireInt(params, 'start_page'),\n endPage: requireInt(params, 'end_page'),\n };\n\n case 'page_rect': {\n const unitRaw = params.get('unit');\n return {\n type: 'page_rect',\n page: requireInt(params, 'page'),\n x: requireFloat(params, 'x'),\n y: requireFloat(params, 'y'),\n width: requireFloat(params, 'width'),\n height: requireFloat(params, 'height'),\n ...(unitRaw === 'percent' || unitRaw === 'point' ? { unit: unitRaw } : {}),\n };\n }\n\n case 'page_text': {\n const prefix = params.get('prefix');\n const suffix = params.get('suffix');\n const hash = params.get('hash');\n return {\n type: 'page_text',\n page: requireInt(params, 'page'),\n text: requireString(params, 'text'),\n ...(prefix ? { prefix } : {}),\n ...(suffix ? { suffix } : {}),\n ...(hash ? { hash } : {}),\n };\n }\n\n case 'path': {\n const line = params.get('line') != null ? requireInt(params, 'line') : undefined;\n const column =\n line != null && params.get('column') != null ? requireInt(params, 'column') : undefined;\n return {\n type: 'path',\n path: requireString(params, 'path'),\n ...(line != null ? { line } : {}),\n ...(column != null ? { column } : {}),\n };\n }\n\n case 'pixel_range':\n return {\n type: 'pixel_range',\n x: requireFloat(params, 'x'),\n y: requireFloat(params, 'y'),\n width: requireFloat(params, 'width'),\n height: requireFloat(params, 'height'),\n };\n case 'pm_node':\n return { type: 'pm_node', nodeId: requireString(params, 'node_id') };\n\n case 'pm_node_range':\n return {\n type: 'pm_node_range',\n startNodeId: requireString(params, 'start_node_id'),\n endNodeId: requireString(params, 'end_node_id'),\n };\n\n case 'pm_mark':\n return { type: 'pm_mark', markId: requireString(params, 'mark_id') };\n\n case 'rect':\n return {\n type: 'rect',\n x: requireFloat(params, 'x'),\n y: requireFloat(params, 'y'),\n width: requireFloat(params, 'width'),\n height: requireFloat(params, 'height'),\n };\n\n case 'section': {\n const topic = params.get('topic') != null ? requirePositiveInt(params, 'topic') : undefined;\n return {\n type: 'section',\n section: requireString(params, 'section'),\n ...(topic != null ? { topic } : {}),\n };\n }\n\n case 'semantic_query': {\n const anchor: SemanticQueryAnchor = {\n type: 'semantic_query',\n query: parseJsonObject(requireString(params, 'query')),\n };\n const field = params.get('field');\n if (field != null) anchor.field = field;\n const rowKey = params.get('row_key');\n if (rowKey != null) anchor.rowKey = parseStringRecord(rowKey);\n if (params.get('row_index') != null) anchor.rowIndex = requireInt(params, 'row_index');\n const relationship = parseRelationship(params.get('relationship'));\n if (relationship != null) anchor.relationship = relationship;\n if (params.get('schema_version') != null) {\n anchor.schemaVersion = requireInt(params, 'schema_version');\n }\n const schemaHash = params.get('schema_hash');\n if (schemaHash != null) anchor.schemaHash = schemaHash;\n const sourceSnapshots = parseOptionalStringRecord(params.get('source_snapshots'));\n if (sourceSnapshots != null) anchor.sourceSnapshots = sourceSnapshots;\n const dataAsOf = params.get('data_as_of');\n if (dataAsOf != null) anchor.dataAsOf = dataAsOf;\n return anchor;\n }\n\n case 'shape': {\n const shapeIds = requireString(params, 'shape_ids')\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (shapeIds.length === 0) {\n throw new Error('Anchor param must be non-empty: shape_ids');\n }\n const shapeSlideId = params.get('slide_id');\n const shapeSlideIndexRaw = params.get('slide_index');\n return {\n type: 'shape',\n shapeIds,\n ...(shapeSlideId != null ? { slideId: shapeSlideId } : {}),\n ...(shapeSlideIndexRaw != null\n ? { slideIndex: requireInt(params, 'slide_index') }\n : {}),\n };\n }\n\n case 'sheet_cell': {\n const chartId = params.get('chart');\n return {\n type: 'sheet_cell',\n sheetId: parseSheetId(params),\n cell: requireString(params, 'cell'),\n ...(chartId ? { chartId } : {}),\n };\n }\n\n case 'sheet_range': {\n const frontier = parseOptionalShiftLogFrontier(params.get('frontier'));\n return {\n type: 'sheet_range',\n sheetId: parseSheetId(params),\n range: requireString(params, 'range'),\n ...(frontier ? { frontier } : {}),\n };\n }\n\n case 'sheet_tab':\n return {\n type: 'sheet_tab',\n sheetId: parseSheetId(params),\n };\n\n case 'sheet_table': {\n const fallbackRange = params.get('fallback_range');\n return {\n type: 'sheet_table',\n sheetId: parseSheetId(params),\n tableName: requireString(params, 'table_name'),\n ...(fallbackRange != null ? { fallbackRange } : {}),\n };\n }\n\n case 'lakehouse_table': {\n const tableUuid = params.get('table_uuid');\n const snapshotId = params.get('snapshot_id');\n return {\n type: 'lakehouse_table',\n table: requireString(params, 'table'),\n ...(tableUuid ? { tableUuid } : {}),\n ...(snapshotId ? { snapshotId } : {}),\n };\n }\n\n case 'slide': {\n let slideId = params.get('slide_id');\n let slideIndex = params.get('slide_index') != null ? requireInt(params, 'slide_index') : undefined;\n // Forgiving alias: anchor=slide&slide=<value>. An integer is a 1-based\n // position (matching the \"Slide N\" headers agents see in deck reads);\n // anything else is treated as a slide id.\n const bareSlide = params.get('slide');\n if (bareSlide != null && slideId == null && slideIndex == null) {\n const n = Number.parseInt(bareSlide, 10);\n if (Number.isNaN(n)) {\n slideId = bareSlide;\n } else {\n slideIndex = n;\n }\n }\n if (slideId == null && slideIndex == null) {\n throw new Error('Provide slide_id and/or slide_index (1-based)');\n }\n return {\n type: 'slide',\n ...(slideId != null ? { slideId } : {}),\n ...(slideIndex != null ? { slideIndex } : {}),\n };\n }\n\n case 'sql_query': {\n const anchor: SqlQueryAnchor = { type: 'sql_query' };\n const sql = params.get('sql');\n if (sql != null) anchor.sql = sql;\n const snippetId = params.get('query_snippet_asset_id');\n if (snippetId != null) anchor.querySnippetAssetId = snippetId;\n const dialect = params.get('dialect');\n if (dialect != null) anchor.dialect = dialect;\n const field = params.get('field');\n if (field != null) anchor.field = field;\n const rowKey = params.get('row_key');\n if (rowKey != null) anchor.rowKey = parseStringRecord(rowKey);\n if (params.get('row_index') != null) anchor.rowIndex = requireInt(params, 'row_index');\n const relationship = parseRelationship(params.get('relationship'));\n if (relationship != null) anchor.relationship = relationship;\n // A sql_query anchor with no SQL and no snippet reference carries no\n // provenance — reject it rather than emit a payload-less shell.\n if (anchor.sql === undefined && anchor.querySnippetAssetId === undefined) {\n return undefined;\n }\n return anchor;\n }\n\n case 'time':\n return { type: 'time', time: requireString(params, 'time') };\n\n case 'time_range':\n return {\n type: 'time_range',\n startTime: requireString(params, 'start_time'),\n endTime: requireString(params, 'end_time'),\n };\n\n case 'tool_call': {\n const messageId = params.get('msg_id') ?? params.get('message_id');\n return {\n type: 'tool_call',\n toolCallId: requireString(params, 'tool_call_id'),\n ...(messageId ? { messageId } : {}),\n };\n }\n\n default:\n return undefined;\n }\n } catch {\n return undefined;\n }\n}\n"],"names":["LEGACY_ANCHOR_TYPES","isAnchorType","fileLineRangeAnchorProblem"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parse.cjs","sources":["../../../../../references/src/anchors/parse.ts"],"sourcesContent":["import { fileLineRangeAnchorProblem } from './file-line-range';\nimport type {\n Anchor,\n AnchorType,\n FileLineRangeAnchor,\n QueryResultRelationship,\n SemanticQueryAnchor,\n SqlQueryAnchor,\n} from './types';\nimport { isAnchorType, LEGACY_ANCHOR_TYPES } from './types';\n\n/**\n * Parse snake_case URL query parameters into a camelCase Anchor object.\n *\n * Expects `params` to contain `anchor=<type>` plus type-specific params.\n * Returns `undefined` if the anchor type is missing or unrecognized.\n */\nexport function parseAnchorFromParams(params: URLSearchParams): Anchor | undefined {\n const rawType = params.get('anchor');\n const anchorType = rawType == null ? undefined : (LEGACY_ANCHOR_TYPES[rawType] ?? rawType);\n if (!anchorType || !isAnchorType(anchorType)) return undefined;\n\n return parseAnchorByType(anchorType, params);\n}\n\nfunction requireString(params: URLSearchParams, key: string, ...legacyKeys: string[]): string {\n const value = params.get(key) ?? legacyKeys.map((k) => params.get(k)).find((v) => v != null);\n if (value == null) throw new Error(`Missing required anchor param: ${key}`);\n return value;\n}\n\nfunction requireNonEmptyString(params: URLSearchParams, key: string, ...legacyKeys: string[]): string {\n const value = requireString(params, key, ...legacyKeys);\n if (value.trim().length === 0) throw new Error(`Anchor param must be non-empty: ${key}`);\n return value;\n}\n\nfunction requireInt(params: URLSearchParams, key: string): number {\n const raw = requireString(params, key);\n const n = Number.parseInt(raw, 10);\n if (Number.isNaN(n)) throw new Error(`Invalid integer for anchor param ${key}: ${raw}`);\n return n;\n}\n\nconst POSITIVE_INT = /^[1-9]\\d*$/;\n\n/** Strict 1-based ordinal: the whole value must be digits, no leading zeros, ≥ 1. */\nfunction requirePositiveInt(params: URLSearchParams, key: string): number {\n const raw = requireString(params, key).trim();\n if (!POSITIVE_INT.test(raw)) {\n throw new Error(`Anchor param must be a positive integer: ${key}: ${raw}`);\n }\n return Number(raw);\n}\n\n/**\n * One value for `key`, refused when the parameter repeats. Clio's strict\n * anchor parser refuses a repeated parameter; `URLSearchParams.get` would\n * silently keep the first one.\n */\nfunction requireSingle(params: URLSearchParams, key: string): string {\n const values = params.getAll(key);\n const [value] = values;\n if (value == null) throw new Error(`Missing required anchor param: ${key}`);\n if (values.length > 1) throw new Error(`Anchor param must not repeat: ${key}`);\n return value;\n}\n\nconst ASCII_DECIMAL = /^\\d+$/;\n/** Python's `int()` refuses a decimal string longer than this (`sys.get_int_max_str_digits()`). */\nconst PYTHON_INT_MAX_STR_DIGITS = 4300;\n\n/**\n * A line number as Clio's anchor parser reads it: ASCII decimal digits only\n * (a Unicode digit, a sign, or a numeral too long for Python's `int()` is\n * malformed). The `[1, MAX_LINE_NUMBER]` bound is `fileLineRangeAnchorProblem`'s;\n * every numeral `Number()` cannot hold exactly also exceeds that bound, so no\n * separate integer-precision check is observable here.\n */\nfunction requireAsciiDecimal(params: URLSearchParams, key: string): number {\n const raw = requireSingle(params, key);\n if (!ASCII_DECIMAL.test(raw)) {\n throw new Error(`Anchor param must be an ASCII decimal: ${key}: ${raw}`);\n }\n if (raw.length > PYTHON_INT_MAX_STR_DIGITS) {\n throw new Error(`Anchor param is too long to be an integer: ${key}`);\n }\n return Number(raw);\n}\n\n/**\n * `anchor=file_line_range&path=…&start_line=…&end_line=…` (any parameter\n * order), refused on any rule Clio's `LineRangeLocator` refuses so a malformed\n * or unstorable anchor never resolves to a wrong file or line.\n *\n * Wire strictness mirrors Clio's anchor parser as far as `URLSearchParams`\n * can observe it: a repeated `path` / `start_line` / `end_line` is refused,\n * and so is a path containing U+FFFD — what `URLSearchParams` makes of a\n * malformed percent-escape, which Clio refuses outright (this also refuses a\n * literal `%EF%BF%BD`, which Clio would accept; nothing sensible puts U+FFFD\n * in a path). A stray `&&` or a pair without `=` is malformed to Clio but\n * invisible here — `URLSearchParams` drops or normalizes it before this parser\n * runs — so the parity claim stops at what the transport lets through.\n */\nfunction parseFileLineRange(params: URLSearchParams): FileLineRangeAnchor {\n const path = requireSingle(params, 'path');\n if (path.includes('\\uFFFD')) {\n throw new Error('path must not contain U+FFFD (a malformed percent-escape)');\n }\n const anchor: FileLineRangeAnchor = {\n type: 'file_line_range',\n path,\n startLine: requireAsciiDecimal(params, 'start_line'),\n endLine: requireAsciiDecimal(params, 'end_line'),\n };\n const problem = fileLineRangeAnchorProblem(anchor);\n if (problem) throw new Error(problem);\n return anchor;\n}\n\n/**\n * Parse a sheet_id that may be a numeric ID (common) or a string ID (legacy).\n * Legacy content sometimes stored sheetId as a string (e.g. \"sheet_1\").\n * Returns a number when possible, falling back to 0 for non-numeric values\n * to avoid silently dropping the entire anchor.\n */\nfunction parseSheetId(params: URLSearchParams): number {\n const raw = requireString(params, 'sheet_id');\n const n = Number.parseInt(raw, 10);\n return Number.isNaN(n) ? 0 : n;\n}\n\nfunction requireFloat(params: URLSearchParams, key: string): number {\n const raw = requireString(params, key);\n const n = Number.parseFloat(raw);\n if (Number.isNaN(n)) throw new Error(`Invalid number for anchor param ${key}: ${raw}`);\n return n;\n}\n\n/** Parse a JSON object param. Throws (caught upstream → undefined anchor) on non-objects. */\nfunction parseJsonObject(raw: string): Record<string, unknown> {\n const parsed: unknown = JSON.parse(raw);\n if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {\n throw new Error('Expected a JSON object');\n }\n return parsed as Record<string, unknown>;\n}\n\n/** Parse a JSON string-map param (e.g. a row key), coercing all values to strings. */\nfunction parseStringRecord(raw: string): Record<string, string> {\n return Object.fromEntries(\n Object.entries(parseJsonObject(raw)).map(([key, value]) => [key, String(value)])\n );\n}\n\n/**\n * An optional provenance map param. Provenance only adds information, so an\n * unreadable value is dropped instead of failing the whole anchor.\n */\nfunction parseOptionalStringRecord(raw: string | null): Record<string, string> | undefined {\n if (raw == null) return undefined;\n try {\n return parseStringRecord(raw);\n } catch {\n return undefined;\n }\n}\n\n/**\n * The engine shift-log frontier a `sheet_range` anchor was taken at (writer id → seq, a JSON object\n * of non-negative integers). It only adds information — a range without one resolves to its stored\n * A1 — so an unreadable value is dropped instead of failing the whole anchor. An empty object is a\n * real frontier (a document with no structural edit journaled yet) and is kept.\n */\nfunction parseOptionalShiftLogFrontier(raw: string | null): Record<string, number> | undefined {\n if (raw == null) return undefined;\n try {\n const frontier: Record<string, number> = {};\n for (const [writer, seq] of Object.entries(parseJsonObject(raw))) {\n if (typeof seq !== 'number' || !Number.isInteger(seq) || seq < 0) return undefined;\n frontier[writer] = seq;\n }\n return frontier;\n } catch {\n return undefined;\n }\n}\n\n/** The longest `stable_range` kept: an engine line anchor is a few dozen characters. */\nconst MAX_STABLE_RANGE_CHARS = 512;\nconst STABLE_RANGE = /^[A-Za-z0-9+/]+={0,2}$/;\n\n/**\n * The engine line anchor a `sheet_range` anchor carries on a stable-ids (v5) document (standard\n * padded base64, `SpreadsheetEngine.anchorRange`). Like the frontier it only adds information, so a\n * value that is not one is dropped instead of failing the whole anchor.\n */\nfunction parseOptionalStableRange(raw: string | null | undefined): string | undefined {\n if (raw == null || raw.length > MAX_STABLE_RANGE_CHARS || !STABLE_RANGE.test(raw)) {\n return undefined;\n }\n return raw;\n}\n\nfunction parseRelationship(raw: string | null): QueryResultRelationship | undefined {\n return raw === 'exact' || raw === 'supporting' ? raw : undefined;\n}\n\nfunction parseAnchorByType(anchorType: AnchorType, params: URLSearchParams): Anchor | undefined {\n try {\n switch (anchorType) {\n case 'cell':\n return { type: 'cell', cellId: requireString(params, 'cell_id') };\n\n case 'cell_range':\n return {\n type: 'cell_range',\n startCellId: requireString(params, 'start_cell_id'),\n endCellId: requireString(params, 'end_cell_id'),\n };\n\n case 'comment':\n return {\n type: 'comment',\n threadId: requireString(params, 'thread_id'),\n commentId: requireString(params, 'comment_id'),\n };\n\n case 'comment_thread':\n return {\n type: 'comment_thread',\n threadId: requireString(params, 'thread_id'),\n };\n\n case 'file_line_range':\n return parseFileLineRange(params);\n\n case 'line':\n return { type: 'line', line: requireInt(params, 'line') };\n\n case 'line_range':\n return {\n type: 'line_range',\n startLine: requireInt(params, 'start_line'),\n endLine: requireInt(params, 'end_line'),\n };\n\n case 'msg':\n return { type: 'msg', messageId: requireNonEmptyString(params, 'msg_id', 'message_id') };\n\n case 'msg_range':\n return {\n type: 'msg_range',\n startMessageId: requireNonEmptyString(params, 'start_msg_id', 'start_message_id'),\n endMessageId: requireNonEmptyString(params, 'end_msg_id', 'end_message_id'),\n };\n\n case 'msg_block': {\n const hash = params.get('hash');\n return {\n type: 'msg_block',\n messageId: requireNonEmptyString(params, 'msg_id'),\n block: requirePositiveInt(params, 'block'),\n ...(hash ? { hash } : {}),\n };\n }\n\n case 'msg_section': {\n const nth = params.get('nth') != null ? requirePositiveInt(params, 'nth') : undefined;\n return {\n type: 'msg_section',\n messageId: requireNonEmptyString(params, 'msg_id'),\n heading: requireNonEmptyString(params, 'heading'),\n ...(nth != null ? { nth } : {}),\n };\n }\n\n case 'msg_text': {\n const block = params.get('block') != null ? requirePositiveInt(params, 'block') : undefined;\n const prefix = params.get('prefix');\n const suffix = params.get('suffix');\n return {\n type: 'msg_text',\n messageId: requireNonEmptyString(params, 'msg_id'),\n text: requireNonEmptyString(params, 'text'),\n ...(block != null ? { block } : {}),\n ...(prefix ? { prefix } : {}),\n ...(suffix ? { suffix } : {}),\n };\n }\n\n case 'page':\n return { type: 'page', page: requireInt(params, 'page') };\n\n case 'page_range':\n return {\n type: 'page_range',\n startPage: requireInt(params, 'start_page'),\n endPage: requireInt(params, 'end_page'),\n };\n\n case 'page_rect': {\n const unitRaw = params.get('unit');\n return {\n type: 'page_rect',\n page: requireInt(params, 'page'),\n x: requireFloat(params, 'x'),\n y: requireFloat(params, 'y'),\n width: requireFloat(params, 'width'),\n height: requireFloat(params, 'height'),\n ...(unitRaw === 'percent' || unitRaw === 'point' ? { unit: unitRaw } : {}),\n };\n }\n\n case 'page_text': {\n const prefix = params.get('prefix');\n const suffix = params.get('suffix');\n const hash = params.get('hash');\n return {\n type: 'page_text',\n page: requireInt(params, 'page'),\n text: requireString(params, 'text'),\n ...(prefix ? { prefix } : {}),\n ...(suffix ? { suffix } : {}),\n ...(hash ? { hash } : {}),\n };\n }\n\n case 'path': {\n const line = params.get('line') != null ? requireInt(params, 'line') : undefined;\n const column =\n line != null && params.get('column') != null ? requireInt(params, 'column') : undefined;\n return {\n type: 'path',\n path: requireString(params, 'path'),\n ...(line != null ? { line } : {}),\n ...(column != null ? { column } : {}),\n };\n }\n\n case 'pixel_range':\n return {\n type: 'pixel_range',\n x: requireFloat(params, 'x'),\n y: requireFloat(params, 'y'),\n width: requireFloat(params, 'width'),\n height: requireFloat(params, 'height'),\n };\n case 'pm_node':\n return { type: 'pm_node', nodeId: requireString(params, 'node_id') };\n\n case 'pm_node_range':\n return {\n type: 'pm_node_range',\n startNodeId: requireString(params, 'start_node_id'),\n endNodeId: requireString(params, 'end_node_id'),\n };\n\n case 'pm_mark':\n return { type: 'pm_mark', markId: requireString(params, 'mark_id') };\n\n case 'rect':\n return {\n type: 'rect',\n x: requireFloat(params, 'x'),\n y: requireFloat(params, 'y'),\n width: requireFloat(params, 'width'),\n height: requireFloat(params, 'height'),\n };\n\n case 'section': {\n const topic = params.get('topic') != null ? requirePositiveInt(params, 'topic') : undefined;\n return {\n type: 'section',\n section: requireString(params, 'section'),\n ...(topic != null ? { topic } : {}),\n };\n }\n\n case 'semantic_query': {\n const anchor: SemanticQueryAnchor = {\n type: 'semantic_query',\n query: parseJsonObject(requireString(params, 'query')),\n };\n const field = params.get('field');\n if (field != null) anchor.field = field;\n const rowKey = params.get('row_key');\n if (rowKey != null) anchor.rowKey = parseStringRecord(rowKey);\n if (params.get('row_index') != null) anchor.rowIndex = requireInt(params, 'row_index');\n const relationship = parseRelationship(params.get('relationship'));\n if (relationship != null) anchor.relationship = relationship;\n if (params.get('schema_version') != null) {\n anchor.schemaVersion = requireInt(params, 'schema_version');\n }\n const schemaHash = params.get('schema_hash');\n if (schemaHash != null) anchor.schemaHash = schemaHash;\n const sourceSnapshots = parseOptionalStringRecord(params.get('source_snapshots'));\n if (sourceSnapshots != null) anchor.sourceSnapshots = sourceSnapshots;\n const dataAsOf = params.get('data_as_of');\n if (dataAsOf != null) anchor.dataAsOf = dataAsOf;\n return anchor;\n }\n\n case 'shape': {\n const shapeIds = requireString(params, 'shape_ids')\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (shapeIds.length === 0) {\n throw new Error('Anchor param must be non-empty: shape_ids');\n }\n const shapeSlideId = params.get('slide_id');\n const shapeSlideIndexRaw = params.get('slide_index');\n return {\n type: 'shape',\n shapeIds,\n ...(shapeSlideId != null ? { slideId: shapeSlideId } : {}),\n ...(shapeSlideIndexRaw != null\n ? { slideIndex: requireInt(params, 'slide_index') }\n : {}),\n };\n }\n\n case 'sheet_cell': {\n const chartId = params.get('chart');\n return {\n type: 'sheet_cell',\n sheetId: parseSheetId(params),\n cell: requireString(params, 'cell'),\n ...(chartId ? { chartId } : {}),\n };\n }\n\n case 'sheet_range': {\n const frontier = parseOptionalShiftLogFrontier(params.get('frontier'));\n const stableRange = parseOptionalStableRange(params.get('stable_range'));\n return {\n type: 'sheet_range',\n sheetId: parseSheetId(params),\n range: requireString(params, 'range'),\n ...(frontier ? { frontier } : {}),\n ...(stableRange ? { stableRange } : {}),\n };\n }\n\n case 'sheet_tab':\n return {\n type: 'sheet_tab',\n sheetId: parseSheetId(params),\n };\n\n case 'sheet_table': {\n const fallbackRange = params.get('fallback_range');\n return {\n type: 'sheet_table',\n sheetId: parseSheetId(params),\n tableName: requireString(params, 'table_name'),\n ...(fallbackRange != null ? { fallbackRange } : {}),\n };\n }\n\n case 'lakehouse_table': {\n const tableUuid = params.get('table_uuid');\n const snapshotId = params.get('snapshot_id');\n return {\n type: 'lakehouse_table',\n table: requireString(params, 'table'),\n ...(tableUuid ? { tableUuid } : {}),\n ...(snapshotId ? { snapshotId } : {}),\n };\n }\n\n case 'slide': {\n let slideId = params.get('slide_id');\n let slideIndex = params.get('slide_index') != null ? requireInt(params, 'slide_index') : undefined;\n // Forgiving alias: anchor=slide&slide=<value>. An integer is a 1-based\n // position (matching the \"Slide N\" headers agents see in deck reads);\n // anything else is treated as a slide id.\n const bareSlide = params.get('slide');\n if (bareSlide != null && slideId == null && slideIndex == null) {\n const n = Number.parseInt(bareSlide, 10);\n if (Number.isNaN(n)) {\n slideId = bareSlide;\n } else {\n slideIndex = n;\n }\n }\n if (slideId == null && slideIndex == null) {\n throw new Error('Provide slide_id and/or slide_index (1-based)');\n }\n return {\n type: 'slide',\n ...(slideId != null ? { slideId } : {}),\n ...(slideIndex != null ? { slideIndex } : {}),\n };\n }\n\n case 'sql_query': {\n const anchor: SqlQueryAnchor = { type: 'sql_query' };\n const sql = params.get('sql');\n if (sql != null) anchor.sql = sql;\n const snippetId = params.get('query_snippet_asset_id');\n if (snippetId != null) anchor.querySnippetAssetId = snippetId;\n const dialect = params.get('dialect');\n if (dialect != null) anchor.dialect = dialect;\n const field = params.get('field');\n if (field != null) anchor.field = field;\n const rowKey = params.get('row_key');\n if (rowKey != null) anchor.rowKey = parseStringRecord(rowKey);\n if (params.get('row_index') != null) anchor.rowIndex = requireInt(params, 'row_index');\n const relationship = parseRelationship(params.get('relationship'));\n if (relationship != null) anchor.relationship = relationship;\n // A sql_query anchor with no SQL and no snippet reference carries no\n // provenance — reject it rather than emit a payload-less shell.\n if (anchor.sql === undefined && anchor.querySnippetAssetId === undefined) {\n return undefined;\n }\n return anchor;\n }\n\n case 'time':\n return { type: 'time', time: requireString(params, 'time') };\n\n case 'time_range':\n return {\n type: 'time_range',\n startTime: requireString(params, 'start_time'),\n endTime: requireString(params, 'end_time'),\n };\n\n case 'tool_call': {\n const messageId = params.get('msg_id') ?? params.get('message_id');\n return {\n type: 'tool_call',\n toolCallId: requireString(params, 'tool_call_id'),\n ...(messageId ? { messageId } : {}),\n };\n }\n\n default:\n return undefined;\n }\n } catch {\n return undefined;\n }\n}\n"],"names":["LEGACY_ANCHOR_TYPES","isAnchorType","fileLineRangeAnchorProblem"],"mappings":"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"}
|
|
@@ -108,6 +108,14 @@ function parseOptionalShiftLogFrontier(raw) {
|
|
|
108
108
|
return void 0;
|
|
109
109
|
}
|
|
110
110
|
}
|
|
111
|
+
const MAX_STABLE_RANGE_CHARS = 512;
|
|
112
|
+
const STABLE_RANGE = /^[A-Za-z0-9+/]+={0,2}$/;
|
|
113
|
+
function parseOptionalStableRange(raw) {
|
|
114
|
+
if (raw == null || raw.length > MAX_STABLE_RANGE_CHARS || !STABLE_RANGE.test(raw)) {
|
|
115
|
+
return void 0;
|
|
116
|
+
}
|
|
117
|
+
return raw;
|
|
118
|
+
}
|
|
111
119
|
function parseRelationship(raw) {
|
|
112
120
|
return raw === "exact" || raw === "supporting" ? raw : void 0;
|
|
113
121
|
}
|
|
@@ -307,11 +315,13 @@ function parseAnchorByType(anchorType, params) {
|
|
|
307
315
|
}
|
|
308
316
|
case "sheet_range": {
|
|
309
317
|
const frontier = parseOptionalShiftLogFrontier(params.get("frontier"));
|
|
318
|
+
const stableRange = parseOptionalStableRange(params.get("stable_range"));
|
|
310
319
|
return {
|
|
311
320
|
type: "sheet_range",
|
|
312
321
|
sheetId: parseSheetId(params),
|
|
313
322
|
range: requireString(params, "range"),
|
|
314
|
-
...frontier ? { frontier } : {}
|
|
323
|
+
...frontier ? { frontier } : {},
|
|
324
|
+
...stableRange ? { stableRange } : {}
|
|
315
325
|
};
|
|
316
326
|
}
|
|
317
327
|
case "sheet_tab":
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.js","sources":["../../../../../references/src/anchors/parse.ts"],"sourcesContent":["import { fileLineRangeAnchorProblem } from './file-line-range';\nimport type {\n Anchor,\n AnchorType,\n FileLineRangeAnchor,\n QueryResultRelationship,\n SemanticQueryAnchor,\n SqlQueryAnchor,\n} from './types';\nimport { isAnchorType, LEGACY_ANCHOR_TYPES } from './types';\n\n/**\n * Parse snake_case URL query parameters into a camelCase Anchor object.\n *\n * Expects `params` to contain `anchor=<type>` plus type-specific params.\n * Returns `undefined` if the anchor type is missing or unrecognized.\n */\nexport function parseAnchorFromParams(params: URLSearchParams): Anchor | undefined {\n const rawType = params.get('anchor');\n const anchorType = rawType == null ? undefined : (LEGACY_ANCHOR_TYPES[rawType] ?? rawType);\n if (!anchorType || !isAnchorType(anchorType)) return undefined;\n\n return parseAnchorByType(anchorType, params);\n}\n\nfunction requireString(params: URLSearchParams, key: string, ...legacyKeys: string[]): string {\n const value = params.get(key) ?? legacyKeys.map((k) => params.get(k)).find((v) => v != null);\n if (value == null) throw new Error(`Missing required anchor param: ${key}`);\n return value;\n}\n\nfunction requireNonEmptyString(params: URLSearchParams, key: string, ...legacyKeys: string[]): string {\n const value = requireString(params, key, ...legacyKeys);\n if (value.trim().length === 0) throw new Error(`Anchor param must be non-empty: ${key}`);\n return value;\n}\n\nfunction requireInt(params: URLSearchParams, key: string): number {\n const raw = requireString(params, key);\n const n = Number.parseInt(raw, 10);\n if (Number.isNaN(n)) throw new Error(`Invalid integer for anchor param ${key}: ${raw}`);\n return n;\n}\n\nconst POSITIVE_INT = /^[1-9]\\d*$/;\n\n/** Strict 1-based ordinal: the whole value must be digits, no leading zeros, ≥ 1. */\nfunction requirePositiveInt(params: URLSearchParams, key: string): number {\n const raw = requireString(params, key).trim();\n if (!POSITIVE_INT.test(raw)) {\n throw new Error(`Anchor param must be a positive integer: ${key}: ${raw}`);\n }\n return Number(raw);\n}\n\n/**\n * One value for `key`, refused when the parameter repeats. Clio's strict\n * anchor parser refuses a repeated parameter; `URLSearchParams.get` would\n * silently keep the first one.\n */\nfunction requireSingle(params: URLSearchParams, key: string): string {\n const values = params.getAll(key);\n const [value] = values;\n if (value == null) throw new Error(`Missing required anchor param: ${key}`);\n if (values.length > 1) throw new Error(`Anchor param must not repeat: ${key}`);\n return value;\n}\n\nconst ASCII_DECIMAL = /^\\d+$/;\n/** Python's `int()` refuses a decimal string longer than this (`sys.get_int_max_str_digits()`). */\nconst PYTHON_INT_MAX_STR_DIGITS = 4300;\n\n/**\n * A line number as Clio's anchor parser reads it: ASCII decimal digits only\n * (a Unicode digit, a sign, or a numeral too long for Python's `int()` is\n * malformed). The `[1, MAX_LINE_NUMBER]` bound is `fileLineRangeAnchorProblem`'s;\n * every numeral `Number()` cannot hold exactly also exceeds that bound, so no\n * separate integer-precision check is observable here.\n */\nfunction requireAsciiDecimal(params: URLSearchParams, key: string): number {\n const raw = requireSingle(params, key);\n if (!ASCII_DECIMAL.test(raw)) {\n throw new Error(`Anchor param must be an ASCII decimal: ${key}: ${raw}`);\n }\n if (raw.length > PYTHON_INT_MAX_STR_DIGITS) {\n throw new Error(`Anchor param is too long to be an integer: ${key}`);\n }\n return Number(raw);\n}\n\n/**\n * `anchor=file_line_range&path=…&start_line=…&end_line=…` (any parameter\n * order), refused on any rule Clio's `LineRangeLocator` refuses so a malformed\n * or unstorable anchor never resolves to a wrong file or line.\n *\n * Wire strictness mirrors Clio's anchor parser as far as `URLSearchParams`\n * can observe it: a repeated `path` / `start_line` / `end_line` is refused,\n * and so is a path containing U+FFFD — what `URLSearchParams` makes of a\n * malformed percent-escape, which Clio refuses outright (this also refuses a\n * literal `%EF%BF%BD`, which Clio would accept; nothing sensible puts U+FFFD\n * in a path). A stray `&&` or a pair without `=` is malformed to Clio but\n * invisible here — `URLSearchParams` drops or normalizes it before this parser\n * runs — so the parity claim stops at what the transport lets through.\n */\nfunction parseFileLineRange(params: URLSearchParams): FileLineRangeAnchor {\n const path = requireSingle(params, 'path');\n if (path.includes('\\uFFFD')) {\n throw new Error('path must not contain U+FFFD (a malformed percent-escape)');\n }\n const anchor: FileLineRangeAnchor = {\n type: 'file_line_range',\n path,\n startLine: requireAsciiDecimal(params, 'start_line'),\n endLine: requireAsciiDecimal(params, 'end_line'),\n };\n const problem = fileLineRangeAnchorProblem(anchor);\n if (problem) throw new Error(problem);\n return anchor;\n}\n\n/**\n * Parse a sheet_id that may be a numeric ID (common) or a string ID (legacy).\n * Legacy content sometimes stored sheetId as a string (e.g. \"sheet_1\").\n * Returns a number when possible, falling back to 0 for non-numeric values\n * to avoid silently dropping the entire anchor.\n */\nfunction parseSheetId(params: URLSearchParams): number {\n const raw = requireString(params, 'sheet_id');\n const n = Number.parseInt(raw, 10);\n return Number.isNaN(n) ? 0 : n;\n}\n\nfunction requireFloat(params: URLSearchParams, key: string): number {\n const raw = requireString(params, key);\n const n = Number.parseFloat(raw);\n if (Number.isNaN(n)) throw new Error(`Invalid number for anchor param ${key}: ${raw}`);\n return n;\n}\n\n/** Parse a JSON object param. Throws (caught upstream → undefined anchor) on non-objects. */\nfunction parseJsonObject(raw: string): Record<string, unknown> {\n const parsed: unknown = JSON.parse(raw);\n if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {\n throw new Error('Expected a JSON object');\n }\n return parsed as Record<string, unknown>;\n}\n\n/** Parse a JSON string-map param (e.g. a row key), coercing all values to strings. */\nfunction parseStringRecord(raw: string): Record<string, string> {\n return Object.fromEntries(\n Object.entries(parseJsonObject(raw)).map(([key, value]) => [key, String(value)])\n );\n}\n\n/**\n * An optional provenance map param. Provenance only adds information, so an\n * unreadable value is dropped instead of failing the whole anchor.\n */\nfunction parseOptionalStringRecord(raw: string | null): Record<string, string> | undefined {\n if (raw == null) return undefined;\n try {\n return parseStringRecord(raw);\n } catch {\n return undefined;\n }\n}\n\n/**\n * The engine shift-log frontier a `sheet_range` anchor was taken at (writer id → seq, a JSON object\n * of non-negative integers). It only adds information — a range without one resolves to its stored\n * A1 — so an unreadable value is dropped instead of failing the whole anchor. An empty object is a\n * real frontier (a document with no structural edit journaled yet) and is kept.\n */\nfunction parseOptionalShiftLogFrontier(raw: string | null): Record<string, number> | undefined {\n if (raw == null) return undefined;\n try {\n const frontier: Record<string, number> = {};\n for (const [writer, seq] of Object.entries(parseJsonObject(raw))) {\n if (typeof seq !== 'number' || !Number.isInteger(seq) || seq < 0) return undefined;\n frontier[writer] = seq;\n }\n return frontier;\n } catch {\n return undefined;\n }\n}\n\nfunction parseRelationship(raw: string | null): QueryResultRelationship | undefined {\n return raw === 'exact' || raw === 'supporting' ? raw : undefined;\n}\n\nfunction parseAnchorByType(anchorType: AnchorType, params: URLSearchParams): Anchor | undefined {\n try {\n switch (anchorType) {\n case 'cell':\n return { type: 'cell', cellId: requireString(params, 'cell_id') };\n\n case 'cell_range':\n return {\n type: 'cell_range',\n startCellId: requireString(params, 'start_cell_id'),\n endCellId: requireString(params, 'end_cell_id'),\n };\n\n case 'comment':\n return {\n type: 'comment',\n threadId: requireString(params, 'thread_id'),\n commentId: requireString(params, 'comment_id'),\n };\n\n case 'comment_thread':\n return {\n type: 'comment_thread',\n threadId: requireString(params, 'thread_id'),\n };\n\n case 'file_line_range':\n return parseFileLineRange(params);\n\n case 'line':\n return { type: 'line', line: requireInt(params, 'line') };\n\n case 'line_range':\n return {\n type: 'line_range',\n startLine: requireInt(params, 'start_line'),\n endLine: requireInt(params, 'end_line'),\n };\n\n case 'msg':\n return { type: 'msg', messageId: requireNonEmptyString(params, 'msg_id', 'message_id') };\n\n case 'msg_range':\n return {\n type: 'msg_range',\n startMessageId: requireNonEmptyString(params, 'start_msg_id', 'start_message_id'),\n endMessageId: requireNonEmptyString(params, 'end_msg_id', 'end_message_id'),\n };\n\n case 'msg_block': {\n const hash = params.get('hash');\n return {\n type: 'msg_block',\n messageId: requireNonEmptyString(params, 'msg_id'),\n block: requirePositiveInt(params, 'block'),\n ...(hash ? { hash } : {}),\n };\n }\n\n case 'msg_section': {\n const nth = params.get('nth') != null ? requirePositiveInt(params, 'nth') : undefined;\n return {\n type: 'msg_section',\n messageId: requireNonEmptyString(params, 'msg_id'),\n heading: requireNonEmptyString(params, 'heading'),\n ...(nth != null ? { nth } : {}),\n };\n }\n\n case 'msg_text': {\n const block = params.get('block') != null ? requirePositiveInt(params, 'block') : undefined;\n const prefix = params.get('prefix');\n const suffix = params.get('suffix');\n return {\n type: 'msg_text',\n messageId: requireNonEmptyString(params, 'msg_id'),\n text: requireNonEmptyString(params, 'text'),\n ...(block != null ? { block } : {}),\n ...(prefix ? { prefix } : {}),\n ...(suffix ? { suffix } : {}),\n };\n }\n\n case 'page':\n return { type: 'page', page: requireInt(params, 'page') };\n\n case 'page_range':\n return {\n type: 'page_range',\n startPage: requireInt(params, 'start_page'),\n endPage: requireInt(params, 'end_page'),\n };\n\n case 'page_rect': {\n const unitRaw = params.get('unit');\n return {\n type: 'page_rect',\n page: requireInt(params, 'page'),\n x: requireFloat(params, 'x'),\n y: requireFloat(params, 'y'),\n width: requireFloat(params, 'width'),\n height: requireFloat(params, 'height'),\n ...(unitRaw === 'percent' || unitRaw === 'point' ? { unit: unitRaw } : {}),\n };\n }\n\n case 'page_text': {\n const prefix = params.get('prefix');\n const suffix = params.get('suffix');\n const hash = params.get('hash');\n return {\n type: 'page_text',\n page: requireInt(params, 'page'),\n text: requireString(params, 'text'),\n ...(prefix ? { prefix } : {}),\n ...(suffix ? { suffix } : {}),\n ...(hash ? { hash } : {}),\n };\n }\n\n case 'path': {\n const line = params.get('line') != null ? requireInt(params, 'line') : undefined;\n const column =\n line != null && params.get('column') != null ? requireInt(params, 'column') : undefined;\n return {\n type: 'path',\n path: requireString(params, 'path'),\n ...(line != null ? { line } : {}),\n ...(column != null ? { column } : {}),\n };\n }\n\n case 'pixel_range':\n return {\n type: 'pixel_range',\n x: requireFloat(params, 'x'),\n y: requireFloat(params, 'y'),\n width: requireFloat(params, 'width'),\n height: requireFloat(params, 'height'),\n };\n case 'pm_node':\n return { type: 'pm_node', nodeId: requireString(params, 'node_id') };\n\n case 'pm_node_range':\n return {\n type: 'pm_node_range',\n startNodeId: requireString(params, 'start_node_id'),\n endNodeId: requireString(params, 'end_node_id'),\n };\n\n case 'pm_mark':\n return { type: 'pm_mark', markId: requireString(params, 'mark_id') };\n\n case 'rect':\n return {\n type: 'rect',\n x: requireFloat(params, 'x'),\n y: requireFloat(params, 'y'),\n width: requireFloat(params, 'width'),\n height: requireFloat(params, 'height'),\n };\n\n case 'section': {\n const topic = params.get('topic') != null ? requirePositiveInt(params, 'topic') : undefined;\n return {\n type: 'section',\n section: requireString(params, 'section'),\n ...(topic != null ? { topic } : {}),\n };\n }\n\n case 'semantic_query': {\n const anchor: SemanticQueryAnchor = {\n type: 'semantic_query',\n query: parseJsonObject(requireString(params, 'query')),\n };\n const field = params.get('field');\n if (field != null) anchor.field = field;\n const rowKey = params.get('row_key');\n if (rowKey != null) anchor.rowKey = parseStringRecord(rowKey);\n if (params.get('row_index') != null) anchor.rowIndex = requireInt(params, 'row_index');\n const relationship = parseRelationship(params.get('relationship'));\n if (relationship != null) anchor.relationship = relationship;\n if (params.get('schema_version') != null) {\n anchor.schemaVersion = requireInt(params, 'schema_version');\n }\n const schemaHash = params.get('schema_hash');\n if (schemaHash != null) anchor.schemaHash = schemaHash;\n const sourceSnapshots = parseOptionalStringRecord(params.get('source_snapshots'));\n if (sourceSnapshots != null) anchor.sourceSnapshots = sourceSnapshots;\n const dataAsOf = params.get('data_as_of');\n if (dataAsOf != null) anchor.dataAsOf = dataAsOf;\n return anchor;\n }\n\n case 'shape': {\n const shapeIds = requireString(params, 'shape_ids')\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (shapeIds.length === 0) {\n throw new Error('Anchor param must be non-empty: shape_ids');\n }\n const shapeSlideId = params.get('slide_id');\n const shapeSlideIndexRaw = params.get('slide_index');\n return {\n type: 'shape',\n shapeIds,\n ...(shapeSlideId != null ? { slideId: shapeSlideId } : {}),\n ...(shapeSlideIndexRaw != null\n ? { slideIndex: requireInt(params, 'slide_index') }\n : {}),\n };\n }\n\n case 'sheet_cell': {\n const chartId = params.get('chart');\n return {\n type: 'sheet_cell',\n sheetId: parseSheetId(params),\n cell: requireString(params, 'cell'),\n ...(chartId ? { chartId } : {}),\n };\n }\n\n case 'sheet_range': {\n const frontier = parseOptionalShiftLogFrontier(params.get('frontier'));\n return {\n type: 'sheet_range',\n sheetId: parseSheetId(params),\n range: requireString(params, 'range'),\n ...(frontier ? { frontier } : {}),\n };\n }\n\n case 'sheet_tab':\n return {\n type: 'sheet_tab',\n sheetId: parseSheetId(params),\n };\n\n case 'sheet_table': {\n const fallbackRange = params.get('fallback_range');\n return {\n type: 'sheet_table',\n sheetId: parseSheetId(params),\n tableName: requireString(params, 'table_name'),\n ...(fallbackRange != null ? { fallbackRange } : {}),\n };\n }\n\n case 'lakehouse_table': {\n const tableUuid = params.get('table_uuid');\n const snapshotId = params.get('snapshot_id');\n return {\n type: 'lakehouse_table',\n table: requireString(params, 'table'),\n ...(tableUuid ? { tableUuid } : {}),\n ...(snapshotId ? { snapshotId } : {}),\n };\n }\n\n case 'slide': {\n let slideId = params.get('slide_id');\n let slideIndex = params.get('slide_index') != null ? requireInt(params, 'slide_index') : undefined;\n // Forgiving alias: anchor=slide&slide=<value>. An integer is a 1-based\n // position (matching the \"Slide N\" headers agents see in deck reads);\n // anything else is treated as a slide id.\n const bareSlide = params.get('slide');\n if (bareSlide != null && slideId == null && slideIndex == null) {\n const n = Number.parseInt(bareSlide, 10);\n if (Number.isNaN(n)) {\n slideId = bareSlide;\n } else {\n slideIndex = n;\n }\n }\n if (slideId == null && slideIndex == null) {\n throw new Error('Provide slide_id and/or slide_index (1-based)');\n }\n return {\n type: 'slide',\n ...(slideId != null ? { slideId } : {}),\n ...(slideIndex != null ? { slideIndex } : {}),\n };\n }\n\n case 'sql_query': {\n const anchor: SqlQueryAnchor = { type: 'sql_query' };\n const sql = params.get('sql');\n if (sql != null) anchor.sql = sql;\n const snippetId = params.get('query_snippet_asset_id');\n if (snippetId != null) anchor.querySnippetAssetId = snippetId;\n const dialect = params.get('dialect');\n if (dialect != null) anchor.dialect = dialect;\n const field = params.get('field');\n if (field != null) anchor.field = field;\n const rowKey = params.get('row_key');\n if (rowKey != null) anchor.rowKey = parseStringRecord(rowKey);\n if (params.get('row_index') != null) anchor.rowIndex = requireInt(params, 'row_index');\n const relationship = parseRelationship(params.get('relationship'));\n if (relationship != null) anchor.relationship = relationship;\n // A sql_query anchor with no SQL and no snippet reference carries no\n // provenance — reject it rather than emit a payload-less shell.\n if (anchor.sql === undefined && anchor.querySnippetAssetId === undefined) {\n return undefined;\n }\n return anchor;\n }\n\n case 'time':\n return { type: 'time', time: requireString(params, 'time') };\n\n case 'time_range':\n return {\n type: 'time_range',\n startTime: requireString(params, 'start_time'),\n endTime: requireString(params, 'end_time'),\n };\n\n case 'tool_call': {\n const messageId = params.get('msg_id') ?? params.get('message_id');\n return {\n type: 'tool_call',\n toolCallId: requireString(params, 'tool_call_id'),\n ...(messageId ? { messageId } : {}),\n };\n }\n\n default:\n return undefined;\n }\n } catch {\n return undefined;\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parse.js","sources":["../../../../../references/src/anchors/parse.ts"],"sourcesContent":["import { fileLineRangeAnchorProblem } from './file-line-range';\nimport type {\n Anchor,\n AnchorType,\n FileLineRangeAnchor,\n QueryResultRelationship,\n SemanticQueryAnchor,\n SqlQueryAnchor,\n} from './types';\nimport { isAnchorType, LEGACY_ANCHOR_TYPES } from './types';\n\n/**\n * Parse snake_case URL query parameters into a camelCase Anchor object.\n *\n * Expects `params` to contain `anchor=<type>` plus type-specific params.\n * Returns `undefined` if the anchor type is missing or unrecognized.\n */\nexport function parseAnchorFromParams(params: URLSearchParams): Anchor | undefined {\n const rawType = params.get('anchor');\n const anchorType = rawType == null ? undefined : (LEGACY_ANCHOR_TYPES[rawType] ?? rawType);\n if (!anchorType || !isAnchorType(anchorType)) return undefined;\n\n return parseAnchorByType(anchorType, params);\n}\n\nfunction requireString(params: URLSearchParams, key: string, ...legacyKeys: string[]): string {\n const value = params.get(key) ?? legacyKeys.map((k) => params.get(k)).find((v) => v != null);\n if (value == null) throw new Error(`Missing required anchor param: ${key}`);\n return value;\n}\n\nfunction requireNonEmptyString(params: URLSearchParams, key: string, ...legacyKeys: string[]): string {\n const value = requireString(params, key, ...legacyKeys);\n if (value.trim().length === 0) throw new Error(`Anchor param must be non-empty: ${key}`);\n return value;\n}\n\nfunction requireInt(params: URLSearchParams, key: string): number {\n const raw = requireString(params, key);\n const n = Number.parseInt(raw, 10);\n if (Number.isNaN(n)) throw new Error(`Invalid integer for anchor param ${key}: ${raw}`);\n return n;\n}\n\nconst POSITIVE_INT = /^[1-9]\\d*$/;\n\n/** Strict 1-based ordinal: the whole value must be digits, no leading zeros, ≥ 1. */\nfunction requirePositiveInt(params: URLSearchParams, key: string): number {\n const raw = requireString(params, key).trim();\n if (!POSITIVE_INT.test(raw)) {\n throw new Error(`Anchor param must be a positive integer: ${key}: ${raw}`);\n }\n return Number(raw);\n}\n\n/**\n * One value for `key`, refused when the parameter repeats. Clio's strict\n * anchor parser refuses a repeated parameter; `URLSearchParams.get` would\n * silently keep the first one.\n */\nfunction requireSingle(params: URLSearchParams, key: string): string {\n const values = params.getAll(key);\n const [value] = values;\n if (value == null) throw new Error(`Missing required anchor param: ${key}`);\n if (values.length > 1) throw new Error(`Anchor param must not repeat: ${key}`);\n return value;\n}\n\nconst ASCII_DECIMAL = /^\\d+$/;\n/** Python's `int()` refuses a decimal string longer than this (`sys.get_int_max_str_digits()`). */\nconst PYTHON_INT_MAX_STR_DIGITS = 4300;\n\n/**\n * A line number as Clio's anchor parser reads it: ASCII decimal digits only\n * (a Unicode digit, a sign, or a numeral too long for Python's `int()` is\n * malformed). The `[1, MAX_LINE_NUMBER]` bound is `fileLineRangeAnchorProblem`'s;\n * every numeral `Number()` cannot hold exactly also exceeds that bound, so no\n * separate integer-precision check is observable here.\n */\nfunction requireAsciiDecimal(params: URLSearchParams, key: string): number {\n const raw = requireSingle(params, key);\n if (!ASCII_DECIMAL.test(raw)) {\n throw new Error(`Anchor param must be an ASCII decimal: ${key}: ${raw}`);\n }\n if (raw.length > PYTHON_INT_MAX_STR_DIGITS) {\n throw new Error(`Anchor param is too long to be an integer: ${key}`);\n }\n return Number(raw);\n}\n\n/**\n * `anchor=file_line_range&path=…&start_line=…&end_line=…` (any parameter\n * order), refused on any rule Clio's `LineRangeLocator` refuses so a malformed\n * or unstorable anchor never resolves to a wrong file or line.\n *\n * Wire strictness mirrors Clio's anchor parser as far as `URLSearchParams`\n * can observe it: a repeated `path` / `start_line` / `end_line` is refused,\n * and so is a path containing U+FFFD — what `URLSearchParams` makes of a\n * malformed percent-escape, which Clio refuses outright (this also refuses a\n * literal `%EF%BF%BD`, which Clio would accept; nothing sensible puts U+FFFD\n * in a path). A stray `&&` or a pair without `=` is malformed to Clio but\n * invisible here — `URLSearchParams` drops or normalizes it before this parser\n * runs — so the parity claim stops at what the transport lets through.\n */\nfunction parseFileLineRange(params: URLSearchParams): FileLineRangeAnchor {\n const path = requireSingle(params, 'path');\n if (path.includes('\\uFFFD')) {\n throw new Error('path must not contain U+FFFD (a malformed percent-escape)');\n }\n const anchor: FileLineRangeAnchor = {\n type: 'file_line_range',\n path,\n startLine: requireAsciiDecimal(params, 'start_line'),\n endLine: requireAsciiDecimal(params, 'end_line'),\n };\n const problem = fileLineRangeAnchorProblem(anchor);\n if (problem) throw new Error(problem);\n return anchor;\n}\n\n/**\n * Parse a sheet_id that may be a numeric ID (common) or a string ID (legacy).\n * Legacy content sometimes stored sheetId as a string (e.g. \"sheet_1\").\n * Returns a number when possible, falling back to 0 for non-numeric values\n * to avoid silently dropping the entire anchor.\n */\nfunction parseSheetId(params: URLSearchParams): number {\n const raw = requireString(params, 'sheet_id');\n const n = Number.parseInt(raw, 10);\n return Number.isNaN(n) ? 0 : n;\n}\n\nfunction requireFloat(params: URLSearchParams, key: string): number {\n const raw = requireString(params, key);\n const n = Number.parseFloat(raw);\n if (Number.isNaN(n)) throw new Error(`Invalid number for anchor param ${key}: ${raw}`);\n return n;\n}\n\n/** Parse a JSON object param. Throws (caught upstream → undefined anchor) on non-objects. */\nfunction parseJsonObject(raw: string): Record<string, unknown> {\n const parsed: unknown = JSON.parse(raw);\n if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {\n throw new Error('Expected a JSON object');\n }\n return parsed as Record<string, unknown>;\n}\n\n/** Parse a JSON string-map param (e.g. a row key), coercing all values to strings. */\nfunction parseStringRecord(raw: string): Record<string, string> {\n return Object.fromEntries(\n Object.entries(parseJsonObject(raw)).map(([key, value]) => [key, String(value)])\n );\n}\n\n/**\n * An optional provenance map param. Provenance only adds information, so an\n * unreadable value is dropped instead of failing the whole anchor.\n */\nfunction parseOptionalStringRecord(raw: string | null): Record<string, string> | undefined {\n if (raw == null) return undefined;\n try {\n return parseStringRecord(raw);\n } catch {\n return undefined;\n }\n}\n\n/**\n * The engine shift-log frontier a `sheet_range` anchor was taken at (writer id → seq, a JSON object\n * of non-negative integers). It only adds information — a range without one resolves to its stored\n * A1 — so an unreadable value is dropped instead of failing the whole anchor. An empty object is a\n * real frontier (a document with no structural edit journaled yet) and is kept.\n */\nfunction parseOptionalShiftLogFrontier(raw: string | null): Record<string, number> | undefined {\n if (raw == null) return undefined;\n try {\n const frontier: Record<string, number> = {};\n for (const [writer, seq] of Object.entries(parseJsonObject(raw))) {\n if (typeof seq !== 'number' || !Number.isInteger(seq) || seq < 0) return undefined;\n frontier[writer] = seq;\n }\n return frontier;\n } catch {\n return undefined;\n }\n}\n\n/** The longest `stable_range` kept: an engine line anchor is a few dozen characters. */\nconst MAX_STABLE_RANGE_CHARS = 512;\nconst STABLE_RANGE = /^[A-Za-z0-9+/]+={0,2}$/;\n\n/**\n * The engine line anchor a `sheet_range` anchor carries on a stable-ids (v5) document (standard\n * padded base64, `SpreadsheetEngine.anchorRange`). Like the frontier it only adds information, so a\n * value that is not one is dropped instead of failing the whole anchor.\n */\nfunction parseOptionalStableRange(raw: string | null | undefined): string | undefined {\n if (raw == null || raw.length > MAX_STABLE_RANGE_CHARS || !STABLE_RANGE.test(raw)) {\n return undefined;\n }\n return raw;\n}\n\nfunction parseRelationship(raw: string | null): QueryResultRelationship | undefined {\n return raw === 'exact' || raw === 'supporting' ? raw : undefined;\n}\n\nfunction parseAnchorByType(anchorType: AnchorType, params: URLSearchParams): Anchor | undefined {\n try {\n switch (anchorType) {\n case 'cell':\n return { type: 'cell', cellId: requireString(params, 'cell_id') };\n\n case 'cell_range':\n return {\n type: 'cell_range',\n startCellId: requireString(params, 'start_cell_id'),\n endCellId: requireString(params, 'end_cell_id'),\n };\n\n case 'comment':\n return {\n type: 'comment',\n threadId: requireString(params, 'thread_id'),\n commentId: requireString(params, 'comment_id'),\n };\n\n case 'comment_thread':\n return {\n type: 'comment_thread',\n threadId: requireString(params, 'thread_id'),\n };\n\n case 'file_line_range':\n return parseFileLineRange(params);\n\n case 'line':\n return { type: 'line', line: requireInt(params, 'line') };\n\n case 'line_range':\n return {\n type: 'line_range',\n startLine: requireInt(params, 'start_line'),\n endLine: requireInt(params, 'end_line'),\n };\n\n case 'msg':\n return { type: 'msg', messageId: requireNonEmptyString(params, 'msg_id', 'message_id') };\n\n case 'msg_range':\n return {\n type: 'msg_range',\n startMessageId: requireNonEmptyString(params, 'start_msg_id', 'start_message_id'),\n endMessageId: requireNonEmptyString(params, 'end_msg_id', 'end_message_id'),\n };\n\n case 'msg_block': {\n const hash = params.get('hash');\n return {\n type: 'msg_block',\n messageId: requireNonEmptyString(params, 'msg_id'),\n block: requirePositiveInt(params, 'block'),\n ...(hash ? { hash } : {}),\n };\n }\n\n case 'msg_section': {\n const nth = params.get('nth') != null ? requirePositiveInt(params, 'nth') : undefined;\n return {\n type: 'msg_section',\n messageId: requireNonEmptyString(params, 'msg_id'),\n heading: requireNonEmptyString(params, 'heading'),\n ...(nth != null ? { nth } : {}),\n };\n }\n\n case 'msg_text': {\n const block = params.get('block') != null ? requirePositiveInt(params, 'block') : undefined;\n const prefix = params.get('prefix');\n const suffix = params.get('suffix');\n return {\n type: 'msg_text',\n messageId: requireNonEmptyString(params, 'msg_id'),\n text: requireNonEmptyString(params, 'text'),\n ...(block != null ? { block } : {}),\n ...(prefix ? { prefix } : {}),\n ...(suffix ? { suffix } : {}),\n };\n }\n\n case 'page':\n return { type: 'page', page: requireInt(params, 'page') };\n\n case 'page_range':\n return {\n type: 'page_range',\n startPage: requireInt(params, 'start_page'),\n endPage: requireInt(params, 'end_page'),\n };\n\n case 'page_rect': {\n const unitRaw = params.get('unit');\n return {\n type: 'page_rect',\n page: requireInt(params, 'page'),\n x: requireFloat(params, 'x'),\n y: requireFloat(params, 'y'),\n width: requireFloat(params, 'width'),\n height: requireFloat(params, 'height'),\n ...(unitRaw === 'percent' || unitRaw === 'point' ? { unit: unitRaw } : {}),\n };\n }\n\n case 'page_text': {\n const prefix = params.get('prefix');\n const suffix = params.get('suffix');\n const hash = params.get('hash');\n return {\n type: 'page_text',\n page: requireInt(params, 'page'),\n text: requireString(params, 'text'),\n ...(prefix ? { prefix } : {}),\n ...(suffix ? { suffix } : {}),\n ...(hash ? { hash } : {}),\n };\n }\n\n case 'path': {\n const line = params.get('line') != null ? requireInt(params, 'line') : undefined;\n const column =\n line != null && params.get('column') != null ? requireInt(params, 'column') : undefined;\n return {\n type: 'path',\n path: requireString(params, 'path'),\n ...(line != null ? { line } : {}),\n ...(column != null ? { column } : {}),\n };\n }\n\n case 'pixel_range':\n return {\n type: 'pixel_range',\n x: requireFloat(params, 'x'),\n y: requireFloat(params, 'y'),\n width: requireFloat(params, 'width'),\n height: requireFloat(params, 'height'),\n };\n case 'pm_node':\n return { type: 'pm_node', nodeId: requireString(params, 'node_id') };\n\n case 'pm_node_range':\n return {\n type: 'pm_node_range',\n startNodeId: requireString(params, 'start_node_id'),\n endNodeId: requireString(params, 'end_node_id'),\n };\n\n case 'pm_mark':\n return { type: 'pm_mark', markId: requireString(params, 'mark_id') };\n\n case 'rect':\n return {\n type: 'rect',\n x: requireFloat(params, 'x'),\n y: requireFloat(params, 'y'),\n width: requireFloat(params, 'width'),\n height: requireFloat(params, 'height'),\n };\n\n case 'section': {\n const topic = params.get('topic') != null ? requirePositiveInt(params, 'topic') : undefined;\n return {\n type: 'section',\n section: requireString(params, 'section'),\n ...(topic != null ? { topic } : {}),\n };\n }\n\n case 'semantic_query': {\n const anchor: SemanticQueryAnchor = {\n type: 'semantic_query',\n query: parseJsonObject(requireString(params, 'query')),\n };\n const field = params.get('field');\n if (field != null) anchor.field = field;\n const rowKey = params.get('row_key');\n if (rowKey != null) anchor.rowKey = parseStringRecord(rowKey);\n if (params.get('row_index') != null) anchor.rowIndex = requireInt(params, 'row_index');\n const relationship = parseRelationship(params.get('relationship'));\n if (relationship != null) anchor.relationship = relationship;\n if (params.get('schema_version') != null) {\n anchor.schemaVersion = requireInt(params, 'schema_version');\n }\n const schemaHash = params.get('schema_hash');\n if (schemaHash != null) anchor.schemaHash = schemaHash;\n const sourceSnapshots = parseOptionalStringRecord(params.get('source_snapshots'));\n if (sourceSnapshots != null) anchor.sourceSnapshots = sourceSnapshots;\n const dataAsOf = params.get('data_as_of');\n if (dataAsOf != null) anchor.dataAsOf = dataAsOf;\n return anchor;\n }\n\n case 'shape': {\n const shapeIds = requireString(params, 'shape_ids')\n .split(',')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n if (shapeIds.length === 0) {\n throw new Error('Anchor param must be non-empty: shape_ids');\n }\n const shapeSlideId = params.get('slide_id');\n const shapeSlideIndexRaw = params.get('slide_index');\n return {\n type: 'shape',\n shapeIds,\n ...(shapeSlideId != null ? { slideId: shapeSlideId } : {}),\n ...(shapeSlideIndexRaw != null\n ? { slideIndex: requireInt(params, 'slide_index') }\n : {}),\n };\n }\n\n case 'sheet_cell': {\n const chartId = params.get('chart');\n return {\n type: 'sheet_cell',\n sheetId: parseSheetId(params),\n cell: requireString(params, 'cell'),\n ...(chartId ? { chartId } : {}),\n };\n }\n\n case 'sheet_range': {\n const frontier = parseOptionalShiftLogFrontier(params.get('frontier'));\n const stableRange = parseOptionalStableRange(params.get('stable_range'));\n return {\n type: 'sheet_range',\n sheetId: parseSheetId(params),\n range: requireString(params, 'range'),\n ...(frontier ? { frontier } : {}),\n ...(stableRange ? { stableRange } : {}),\n };\n }\n\n case 'sheet_tab':\n return {\n type: 'sheet_tab',\n sheetId: parseSheetId(params),\n };\n\n case 'sheet_table': {\n const fallbackRange = params.get('fallback_range');\n return {\n type: 'sheet_table',\n sheetId: parseSheetId(params),\n tableName: requireString(params, 'table_name'),\n ...(fallbackRange != null ? { fallbackRange } : {}),\n };\n }\n\n case 'lakehouse_table': {\n const tableUuid = params.get('table_uuid');\n const snapshotId = params.get('snapshot_id');\n return {\n type: 'lakehouse_table',\n table: requireString(params, 'table'),\n ...(tableUuid ? { tableUuid } : {}),\n ...(snapshotId ? { snapshotId } : {}),\n };\n }\n\n case 'slide': {\n let slideId = params.get('slide_id');\n let slideIndex = params.get('slide_index') != null ? requireInt(params, 'slide_index') : undefined;\n // Forgiving alias: anchor=slide&slide=<value>. An integer is a 1-based\n // position (matching the \"Slide N\" headers agents see in deck reads);\n // anything else is treated as a slide id.\n const bareSlide = params.get('slide');\n if (bareSlide != null && slideId == null && slideIndex == null) {\n const n = Number.parseInt(bareSlide, 10);\n if (Number.isNaN(n)) {\n slideId = bareSlide;\n } else {\n slideIndex = n;\n }\n }\n if (slideId == null && slideIndex == null) {\n throw new Error('Provide slide_id and/or slide_index (1-based)');\n }\n return {\n type: 'slide',\n ...(slideId != null ? { slideId } : {}),\n ...(slideIndex != null ? { slideIndex } : {}),\n };\n }\n\n case 'sql_query': {\n const anchor: SqlQueryAnchor = { type: 'sql_query' };\n const sql = params.get('sql');\n if (sql != null) anchor.sql = sql;\n const snippetId = params.get('query_snippet_asset_id');\n if (snippetId != null) anchor.querySnippetAssetId = snippetId;\n const dialect = params.get('dialect');\n if (dialect != null) anchor.dialect = dialect;\n const field = params.get('field');\n if (field != null) anchor.field = field;\n const rowKey = params.get('row_key');\n if (rowKey != null) anchor.rowKey = parseStringRecord(rowKey);\n if (params.get('row_index') != null) anchor.rowIndex = requireInt(params, 'row_index');\n const relationship = parseRelationship(params.get('relationship'));\n if (relationship != null) anchor.relationship = relationship;\n // A sql_query anchor with no SQL and no snippet reference carries no\n // provenance — reject it rather than emit a payload-less shell.\n if (anchor.sql === undefined && anchor.querySnippetAssetId === undefined) {\n return undefined;\n }\n return anchor;\n }\n\n case 'time':\n return { type: 'time', time: requireString(params, 'time') };\n\n case 'time_range':\n return {\n type: 'time_range',\n startTime: requireString(params, 'start_time'),\n endTime: requireString(params, 'end_time'),\n };\n\n case 'tool_call': {\n const messageId = params.get('msg_id') ?? params.get('message_id');\n return {\n type: 'tool_call',\n toolCallId: requireString(params, 'tool_call_id'),\n ...(messageId ? { messageId } : {}),\n };\n }\n\n default:\n return undefined;\n }\n } catch {\n return undefined;\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -150,6 +150,7 @@ export declare const anchorSchema: z.ZodPreprocess<z.ZodDiscriminatedUnion<[z.Zo
|
|
|
150
150
|
sheetId: z.ZodNumber;
|
|
151
151
|
range: z.ZodString;
|
|
152
152
|
frontier: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
|
|
153
|
+
stableRange: z.ZodOptional<z.ZodString>;
|
|
153
154
|
}, z.core.$strip>, z.ZodObject<{
|
|
154
155
|
type: z.ZodLiteral<"sheet_tab">;
|
|
155
156
|
sheetId: z.ZodNumber;
|
|
@@ -147,6 +147,7 @@ function serializeAnchorToParams(anchor) {
|
|
|
147
147
|
params.set("sheet_id", String(anchor.sheetId));
|
|
148
148
|
params.set("range", anchor.range);
|
|
149
149
|
if (anchor.frontier != null) params.set("frontier", JSON.stringify(anchor.frontier));
|
|
150
|
+
if (anchor.stableRange != null) params.set("stable_range", anchor.stableRange);
|
|
150
151
|
break;
|
|
151
152
|
case "sheet_tab":
|
|
152
153
|
params.set("sheet_id", String(anchor.sheetId));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialize.cjs","sources":["../../../../../references/src/anchors/serialize.ts"],"sourcesContent":["import type { Anchor } from './types';\n\n/**\n * Serialize an Anchor to snake_case URL query parameters.\n *\n * Returns a `URLSearchParams` containing `anchor=<type>` plus type-specific params.\n * The caller appends these to the asset URL.\n */\nexport function serializeAnchorToParams(anchor: Anchor): URLSearchParams {\n const params = new URLSearchParams();\n params.set('anchor', anchor.type);\n\n switch (anchor.type) {\n case 'cell':\n params.set('cell_id', anchor.cellId);\n break;\n case 'cell_range':\n params.set('start_cell_id', anchor.startCellId);\n params.set('end_cell_id', anchor.endCellId);\n break;\n case 'comment':\n params.set('thread_id', anchor.threadId);\n params.set('comment_id', anchor.commentId);\n break;\n case 'comment_thread':\n params.set('thread_id', anchor.threadId);\n break;\n case 'file_line_range':\n // Sorted parameters — Clio's canonical order (anchor, end_line, path,\n // start_line). URLSearchParams encodes `~` and `*` the other way round\n // from Python's urlencode, so equality with Clio's stored string is by\n // decoded value; see file-line-range.ts.\n params.set('end_line', String(anchor.endLine));\n params.set('path', anchor.path);\n params.set('start_line', String(anchor.startLine));\n break;\n case 'line':\n params.set('line', String(anchor.line));\n break;\n case 'line_range':\n params.set('start_line', String(anchor.startLine));\n params.set('end_line', String(anchor.endLine));\n break;\n case 'msg':\n params.set('msg_id', anchor.messageId);\n break;\n case 'msg_range':\n params.set('start_msg_id', anchor.startMessageId);\n params.set('end_msg_id', anchor.endMessageId);\n break;\n case 'msg_block':\n params.set('msg_id', anchor.messageId);\n params.set('block', String(anchor.block));\n if (anchor.hash) params.set('hash', anchor.hash);\n break;\n case 'msg_section':\n params.set('msg_id', anchor.messageId);\n params.set('heading', anchor.heading);\n if (anchor.nth != null) params.set('nth', String(anchor.nth));\n break;\n case 'msg_text':\n params.set('msg_id', anchor.messageId);\n params.set('text', anchor.text);\n if (anchor.block != null) params.set('block', String(anchor.block));\n if (anchor.prefix) params.set('prefix', anchor.prefix);\n if (anchor.suffix) params.set('suffix', anchor.suffix);\n break;\n case 'page':\n params.set('page', String(anchor.page));\n break;\n case 'page_range':\n params.set('start_page', String(anchor.startPage));\n params.set('end_page', String(anchor.endPage));\n break;\n case 'page_rect':\n params.set('page', String(anchor.page));\n params.set('x', String(anchor.x));\n params.set('y', String(anchor.y));\n params.set('width', String(anchor.width));\n params.set('height', String(anchor.height));\n if (anchor.unit != null) params.set('unit', anchor.unit);\n break;\n case 'page_text':\n params.set('page', String(anchor.page));\n params.set('text', anchor.text);\n if (anchor.prefix) params.set('prefix', anchor.prefix);\n if (anchor.suffix) params.set('suffix', anchor.suffix);\n if (anchor.hash) params.set('hash', anchor.hash);\n break;\n case 'path':\n params.set('path', anchor.path);\n if (anchor.line != null) {\n params.set('line', String(anchor.line));\n if (anchor.column != null) params.set('column', String(anchor.column));\n }\n break;\n case 'pixel_range':\n params.set('x', String(anchor.x));\n params.set('y', String(anchor.y));\n params.set('width', String(anchor.width));\n params.set('height', String(anchor.height));\n break;\n case 'pm_node':\n params.set('node_id', anchor.nodeId);\n break;\n case 'pm_node_range':\n params.set('start_node_id', anchor.startNodeId);\n params.set('end_node_id', anchor.endNodeId);\n break;\n case 'pm_mark':\n params.set('mark_id', anchor.markId);\n break;\n case 'rect':\n params.set('x', String(anchor.x));\n params.set('y', String(anchor.y));\n params.set('width', String(anchor.width));\n params.set('height', String(anchor.height));\n break;\n case 'section':\n params.set('section', anchor.section);\n if (anchor.topic != null) params.set('topic', String(anchor.topic));\n break;\n case 'semantic_query':\n params.set('query', JSON.stringify(anchor.query));\n if (anchor.field != null) params.set('field', anchor.field);\n if (anchor.rowKey != null) params.set('row_key', JSON.stringify(anchor.rowKey));\n if (anchor.rowIndex != null) params.set('row_index', String(anchor.rowIndex));\n if (anchor.relationship != null) params.set('relationship', anchor.relationship);\n if (anchor.schemaVersion != null) params.set('schema_version', String(anchor.schemaVersion));\n if (anchor.schemaHash != null) params.set('schema_hash', anchor.schemaHash);\n if (anchor.sourceSnapshots != null) {\n params.set('source_snapshots', JSON.stringify(anchor.sourceSnapshots));\n }\n if (anchor.dataAsOf != null) params.set('data_as_of', anchor.dataAsOf);\n break;\n case 'sql_query':\n if (anchor.sql != null) params.set('sql', anchor.sql);\n if (anchor.querySnippetAssetId != null) {\n params.set('query_snippet_asset_id', anchor.querySnippetAssetId);\n }\n if (anchor.dialect != null) params.set('dialect', anchor.dialect);\n if (anchor.field != null) params.set('field', anchor.field);\n if (anchor.rowKey != null) params.set('row_key', JSON.stringify(anchor.rowKey));\n if (anchor.rowIndex != null) params.set('row_index', String(anchor.rowIndex));\n if (anchor.relationship != null) params.set('relationship', anchor.relationship);\n break;\n case 'shape':\n if (anchor.slideId != null) params.set('slide_id', anchor.slideId);\n if (anchor.slideIndex != null) params.set('slide_index', String(anchor.slideIndex));\n params.set('shape_ids', anchor.shapeIds.join(','));\n break;\n case 'sheet_cell':\n params.set('sheet_id', String(anchor.sheetId));\n params.set('cell', anchor.cell);\n if (anchor.chartId != null) params.set('chart', anchor.chartId);\n break;\n case 'sheet_range':\n params.set('sheet_id', String(anchor.sheetId));\n params.set('range', anchor.range);\n // An empty frontier (a document with no structural edit journaled yet) still names a point\n // in the engine's log, so it is written, not dropped.\n if (anchor.frontier != null) params.set('frontier', JSON.stringify(anchor.frontier));\n break;\n case 'sheet_tab':\n params.set('sheet_id', String(anchor.sheetId));\n break;\n case 'sheet_table':\n params.set('sheet_id', String(anchor.sheetId));\n params.set('table_name', anchor.tableName);\n if (anchor.fallbackRange != null) {\n params.set('fallback_range', anchor.fallbackRange);\n }\n break;\n case 'lakehouse_table':\n params.set('table', anchor.table);\n if (anchor.tableUuid) params.set('table_uuid', anchor.tableUuid);\n if (anchor.snapshotId) params.set('snapshot_id', anchor.snapshotId);\n break;\n case 'slide':\n if (anchor.slideId != null) params.set('slide_id', anchor.slideId);\n if (anchor.slideIndex != null) params.set('slide_index', String(anchor.slideIndex));\n break;\n case 'time':\n params.set('time', anchor.time);\n break;\n case 'time_range':\n params.set('start_time', anchor.startTime);\n params.set('end_time', anchor.endTime);\n break;\n case 'tool_call':\n params.set('tool_call_id', anchor.toolCallId);\n if (anchor.messageId) params.set('msg_id', anchor.messageId);\n break;\n }\n\n return params;\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"serialize.cjs","sources":["../../../../../references/src/anchors/serialize.ts"],"sourcesContent":["import type { Anchor } from './types';\n\n/**\n * Serialize an Anchor to snake_case URL query parameters.\n *\n * Returns a `URLSearchParams` containing `anchor=<type>` plus type-specific params.\n * The caller appends these to the asset URL.\n */\nexport function serializeAnchorToParams(anchor: Anchor): URLSearchParams {\n const params = new URLSearchParams();\n params.set('anchor', anchor.type);\n\n switch (anchor.type) {\n case 'cell':\n params.set('cell_id', anchor.cellId);\n break;\n case 'cell_range':\n params.set('start_cell_id', anchor.startCellId);\n params.set('end_cell_id', anchor.endCellId);\n break;\n case 'comment':\n params.set('thread_id', anchor.threadId);\n params.set('comment_id', anchor.commentId);\n break;\n case 'comment_thread':\n params.set('thread_id', anchor.threadId);\n break;\n case 'file_line_range':\n // Sorted parameters — Clio's canonical order (anchor, end_line, path,\n // start_line). URLSearchParams encodes `~` and `*` the other way round\n // from Python's urlencode, so equality with Clio's stored string is by\n // decoded value; see file-line-range.ts.\n params.set('end_line', String(anchor.endLine));\n params.set('path', anchor.path);\n params.set('start_line', String(anchor.startLine));\n break;\n case 'line':\n params.set('line', String(anchor.line));\n break;\n case 'line_range':\n params.set('start_line', String(anchor.startLine));\n params.set('end_line', String(anchor.endLine));\n break;\n case 'msg':\n params.set('msg_id', anchor.messageId);\n break;\n case 'msg_range':\n params.set('start_msg_id', anchor.startMessageId);\n params.set('end_msg_id', anchor.endMessageId);\n break;\n case 'msg_block':\n params.set('msg_id', anchor.messageId);\n params.set('block', String(anchor.block));\n if (anchor.hash) params.set('hash', anchor.hash);\n break;\n case 'msg_section':\n params.set('msg_id', anchor.messageId);\n params.set('heading', anchor.heading);\n if (anchor.nth != null) params.set('nth', String(anchor.nth));\n break;\n case 'msg_text':\n params.set('msg_id', anchor.messageId);\n params.set('text', anchor.text);\n if (anchor.block != null) params.set('block', String(anchor.block));\n if (anchor.prefix) params.set('prefix', anchor.prefix);\n if (anchor.suffix) params.set('suffix', anchor.suffix);\n break;\n case 'page':\n params.set('page', String(anchor.page));\n break;\n case 'page_range':\n params.set('start_page', String(anchor.startPage));\n params.set('end_page', String(anchor.endPage));\n break;\n case 'page_rect':\n params.set('page', String(anchor.page));\n params.set('x', String(anchor.x));\n params.set('y', String(anchor.y));\n params.set('width', String(anchor.width));\n params.set('height', String(anchor.height));\n if (anchor.unit != null) params.set('unit', anchor.unit);\n break;\n case 'page_text':\n params.set('page', String(anchor.page));\n params.set('text', anchor.text);\n if (anchor.prefix) params.set('prefix', anchor.prefix);\n if (anchor.suffix) params.set('suffix', anchor.suffix);\n if (anchor.hash) params.set('hash', anchor.hash);\n break;\n case 'path':\n params.set('path', anchor.path);\n if (anchor.line != null) {\n params.set('line', String(anchor.line));\n if (anchor.column != null) params.set('column', String(anchor.column));\n }\n break;\n case 'pixel_range':\n params.set('x', String(anchor.x));\n params.set('y', String(anchor.y));\n params.set('width', String(anchor.width));\n params.set('height', String(anchor.height));\n break;\n case 'pm_node':\n params.set('node_id', anchor.nodeId);\n break;\n case 'pm_node_range':\n params.set('start_node_id', anchor.startNodeId);\n params.set('end_node_id', anchor.endNodeId);\n break;\n case 'pm_mark':\n params.set('mark_id', anchor.markId);\n break;\n case 'rect':\n params.set('x', String(anchor.x));\n params.set('y', String(anchor.y));\n params.set('width', String(anchor.width));\n params.set('height', String(anchor.height));\n break;\n case 'section':\n params.set('section', anchor.section);\n if (anchor.topic != null) params.set('topic', String(anchor.topic));\n break;\n case 'semantic_query':\n params.set('query', JSON.stringify(anchor.query));\n if (anchor.field != null) params.set('field', anchor.field);\n if (anchor.rowKey != null) params.set('row_key', JSON.stringify(anchor.rowKey));\n if (anchor.rowIndex != null) params.set('row_index', String(anchor.rowIndex));\n if (anchor.relationship != null) params.set('relationship', anchor.relationship);\n if (anchor.schemaVersion != null) params.set('schema_version', String(anchor.schemaVersion));\n if (anchor.schemaHash != null) params.set('schema_hash', anchor.schemaHash);\n if (anchor.sourceSnapshots != null) {\n params.set('source_snapshots', JSON.stringify(anchor.sourceSnapshots));\n }\n if (anchor.dataAsOf != null) params.set('data_as_of', anchor.dataAsOf);\n break;\n case 'sql_query':\n if (anchor.sql != null) params.set('sql', anchor.sql);\n if (anchor.querySnippetAssetId != null) {\n params.set('query_snippet_asset_id', anchor.querySnippetAssetId);\n }\n if (anchor.dialect != null) params.set('dialect', anchor.dialect);\n if (anchor.field != null) params.set('field', anchor.field);\n if (anchor.rowKey != null) params.set('row_key', JSON.stringify(anchor.rowKey));\n if (anchor.rowIndex != null) params.set('row_index', String(anchor.rowIndex));\n if (anchor.relationship != null) params.set('relationship', anchor.relationship);\n break;\n case 'shape':\n if (anchor.slideId != null) params.set('slide_id', anchor.slideId);\n if (anchor.slideIndex != null) params.set('slide_index', String(anchor.slideIndex));\n params.set('shape_ids', anchor.shapeIds.join(','));\n break;\n case 'sheet_cell':\n params.set('sheet_id', String(anchor.sheetId));\n params.set('cell', anchor.cell);\n if (anchor.chartId != null) params.set('chart', anchor.chartId);\n break;\n case 'sheet_range':\n params.set('sheet_id', String(anchor.sheetId));\n params.set('range', anchor.range);\n // An empty frontier (a document with no structural edit journaled yet) still names a point\n // in the engine's log, so it is written, not dropped.\n if (anchor.frontier != null) params.set('frontier', JSON.stringify(anchor.frontier));\n if (anchor.stableRange != null) params.set('stable_range', anchor.stableRange);\n break;\n case 'sheet_tab':\n params.set('sheet_id', String(anchor.sheetId));\n break;\n case 'sheet_table':\n params.set('sheet_id', String(anchor.sheetId));\n params.set('table_name', anchor.tableName);\n if (anchor.fallbackRange != null) {\n params.set('fallback_range', anchor.fallbackRange);\n }\n break;\n case 'lakehouse_table':\n params.set('table', anchor.table);\n if (anchor.tableUuid) params.set('table_uuid', anchor.tableUuid);\n if (anchor.snapshotId) params.set('snapshot_id', anchor.snapshotId);\n break;\n case 'slide':\n if (anchor.slideId != null) params.set('slide_id', anchor.slideId);\n if (anchor.slideIndex != null) params.set('slide_index', String(anchor.slideIndex));\n break;\n case 'time':\n params.set('time', anchor.time);\n break;\n case 'time_range':\n params.set('start_time', anchor.startTime);\n params.set('end_time', anchor.endTime);\n break;\n case 'tool_call':\n params.set('tool_call_id', anchor.toolCallId);\n if (anchor.messageId) params.set('msg_id', anchor.messageId);\n break;\n }\n\n return params;\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -145,6 +145,7 @@ function serializeAnchorToParams(anchor) {
|
|
|
145
145
|
params.set("sheet_id", String(anchor.sheetId));
|
|
146
146
|
params.set("range", anchor.range);
|
|
147
147
|
if (anchor.frontier != null) params.set("frontier", JSON.stringify(anchor.frontier));
|
|
148
|
+
if (anchor.stableRange != null) params.set("stable_range", anchor.stableRange);
|
|
148
149
|
break;
|
|
149
150
|
case "sheet_tab":
|
|
150
151
|
params.set("sheet_id", String(anchor.sheetId));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialize.js","sources":["../../../../../references/src/anchors/serialize.ts"],"sourcesContent":["import type { Anchor } from './types';\n\n/**\n * Serialize an Anchor to snake_case URL query parameters.\n *\n * Returns a `URLSearchParams` containing `anchor=<type>` plus type-specific params.\n * The caller appends these to the asset URL.\n */\nexport function serializeAnchorToParams(anchor: Anchor): URLSearchParams {\n const params = new URLSearchParams();\n params.set('anchor', anchor.type);\n\n switch (anchor.type) {\n case 'cell':\n params.set('cell_id', anchor.cellId);\n break;\n case 'cell_range':\n params.set('start_cell_id', anchor.startCellId);\n params.set('end_cell_id', anchor.endCellId);\n break;\n case 'comment':\n params.set('thread_id', anchor.threadId);\n params.set('comment_id', anchor.commentId);\n break;\n case 'comment_thread':\n params.set('thread_id', anchor.threadId);\n break;\n case 'file_line_range':\n // Sorted parameters — Clio's canonical order (anchor, end_line, path,\n // start_line). URLSearchParams encodes `~` and `*` the other way round\n // from Python's urlencode, so equality with Clio's stored string is by\n // decoded value; see file-line-range.ts.\n params.set('end_line', String(anchor.endLine));\n params.set('path', anchor.path);\n params.set('start_line', String(anchor.startLine));\n break;\n case 'line':\n params.set('line', String(anchor.line));\n break;\n case 'line_range':\n params.set('start_line', String(anchor.startLine));\n params.set('end_line', String(anchor.endLine));\n break;\n case 'msg':\n params.set('msg_id', anchor.messageId);\n break;\n case 'msg_range':\n params.set('start_msg_id', anchor.startMessageId);\n params.set('end_msg_id', anchor.endMessageId);\n break;\n case 'msg_block':\n params.set('msg_id', anchor.messageId);\n params.set('block', String(anchor.block));\n if (anchor.hash) params.set('hash', anchor.hash);\n break;\n case 'msg_section':\n params.set('msg_id', anchor.messageId);\n params.set('heading', anchor.heading);\n if (anchor.nth != null) params.set('nth', String(anchor.nth));\n break;\n case 'msg_text':\n params.set('msg_id', anchor.messageId);\n params.set('text', anchor.text);\n if (anchor.block != null) params.set('block', String(anchor.block));\n if (anchor.prefix) params.set('prefix', anchor.prefix);\n if (anchor.suffix) params.set('suffix', anchor.suffix);\n break;\n case 'page':\n params.set('page', String(anchor.page));\n break;\n case 'page_range':\n params.set('start_page', String(anchor.startPage));\n params.set('end_page', String(anchor.endPage));\n break;\n case 'page_rect':\n params.set('page', String(anchor.page));\n params.set('x', String(anchor.x));\n params.set('y', String(anchor.y));\n params.set('width', String(anchor.width));\n params.set('height', String(anchor.height));\n if (anchor.unit != null) params.set('unit', anchor.unit);\n break;\n case 'page_text':\n params.set('page', String(anchor.page));\n params.set('text', anchor.text);\n if (anchor.prefix) params.set('prefix', anchor.prefix);\n if (anchor.suffix) params.set('suffix', anchor.suffix);\n if (anchor.hash) params.set('hash', anchor.hash);\n break;\n case 'path':\n params.set('path', anchor.path);\n if (anchor.line != null) {\n params.set('line', String(anchor.line));\n if (anchor.column != null) params.set('column', String(anchor.column));\n }\n break;\n case 'pixel_range':\n params.set('x', String(anchor.x));\n params.set('y', String(anchor.y));\n params.set('width', String(anchor.width));\n params.set('height', String(anchor.height));\n break;\n case 'pm_node':\n params.set('node_id', anchor.nodeId);\n break;\n case 'pm_node_range':\n params.set('start_node_id', anchor.startNodeId);\n params.set('end_node_id', anchor.endNodeId);\n break;\n case 'pm_mark':\n params.set('mark_id', anchor.markId);\n break;\n case 'rect':\n params.set('x', String(anchor.x));\n params.set('y', String(anchor.y));\n params.set('width', String(anchor.width));\n params.set('height', String(anchor.height));\n break;\n case 'section':\n params.set('section', anchor.section);\n if (anchor.topic != null) params.set('topic', String(anchor.topic));\n break;\n case 'semantic_query':\n params.set('query', JSON.stringify(anchor.query));\n if (anchor.field != null) params.set('field', anchor.field);\n if (anchor.rowKey != null) params.set('row_key', JSON.stringify(anchor.rowKey));\n if (anchor.rowIndex != null) params.set('row_index', String(anchor.rowIndex));\n if (anchor.relationship != null) params.set('relationship', anchor.relationship);\n if (anchor.schemaVersion != null) params.set('schema_version', String(anchor.schemaVersion));\n if (anchor.schemaHash != null) params.set('schema_hash', anchor.schemaHash);\n if (anchor.sourceSnapshots != null) {\n params.set('source_snapshots', JSON.stringify(anchor.sourceSnapshots));\n }\n if (anchor.dataAsOf != null) params.set('data_as_of', anchor.dataAsOf);\n break;\n case 'sql_query':\n if (anchor.sql != null) params.set('sql', anchor.sql);\n if (anchor.querySnippetAssetId != null) {\n params.set('query_snippet_asset_id', anchor.querySnippetAssetId);\n }\n if (anchor.dialect != null) params.set('dialect', anchor.dialect);\n if (anchor.field != null) params.set('field', anchor.field);\n if (anchor.rowKey != null) params.set('row_key', JSON.stringify(anchor.rowKey));\n if (anchor.rowIndex != null) params.set('row_index', String(anchor.rowIndex));\n if (anchor.relationship != null) params.set('relationship', anchor.relationship);\n break;\n case 'shape':\n if (anchor.slideId != null) params.set('slide_id', anchor.slideId);\n if (anchor.slideIndex != null) params.set('slide_index', String(anchor.slideIndex));\n params.set('shape_ids', anchor.shapeIds.join(','));\n break;\n case 'sheet_cell':\n params.set('sheet_id', String(anchor.sheetId));\n params.set('cell', anchor.cell);\n if (anchor.chartId != null) params.set('chart', anchor.chartId);\n break;\n case 'sheet_range':\n params.set('sheet_id', String(anchor.sheetId));\n params.set('range', anchor.range);\n // An empty frontier (a document with no structural edit journaled yet) still names a point\n // in the engine's log, so it is written, not dropped.\n if (anchor.frontier != null) params.set('frontier', JSON.stringify(anchor.frontier));\n break;\n case 'sheet_tab':\n params.set('sheet_id', String(anchor.sheetId));\n break;\n case 'sheet_table':\n params.set('sheet_id', String(anchor.sheetId));\n params.set('table_name', anchor.tableName);\n if (anchor.fallbackRange != null) {\n params.set('fallback_range', anchor.fallbackRange);\n }\n break;\n case 'lakehouse_table':\n params.set('table', anchor.table);\n if (anchor.tableUuid) params.set('table_uuid', anchor.tableUuid);\n if (anchor.snapshotId) params.set('snapshot_id', anchor.snapshotId);\n break;\n case 'slide':\n if (anchor.slideId != null) params.set('slide_id', anchor.slideId);\n if (anchor.slideIndex != null) params.set('slide_index', String(anchor.slideIndex));\n break;\n case 'time':\n params.set('time', anchor.time);\n break;\n case 'time_range':\n params.set('start_time', anchor.startTime);\n params.set('end_time', anchor.endTime);\n break;\n case 'tool_call':\n params.set('tool_call_id', anchor.toolCallId);\n if (anchor.messageId) params.set('msg_id', anchor.messageId);\n break;\n }\n\n return params;\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"serialize.js","sources":["../../../../../references/src/anchors/serialize.ts"],"sourcesContent":["import type { Anchor } from './types';\n\n/**\n * Serialize an Anchor to snake_case URL query parameters.\n *\n * Returns a `URLSearchParams` containing `anchor=<type>` plus type-specific params.\n * The caller appends these to the asset URL.\n */\nexport function serializeAnchorToParams(anchor: Anchor): URLSearchParams {\n const params = new URLSearchParams();\n params.set('anchor', anchor.type);\n\n switch (anchor.type) {\n case 'cell':\n params.set('cell_id', anchor.cellId);\n break;\n case 'cell_range':\n params.set('start_cell_id', anchor.startCellId);\n params.set('end_cell_id', anchor.endCellId);\n break;\n case 'comment':\n params.set('thread_id', anchor.threadId);\n params.set('comment_id', anchor.commentId);\n break;\n case 'comment_thread':\n params.set('thread_id', anchor.threadId);\n break;\n case 'file_line_range':\n // Sorted parameters — Clio's canonical order (anchor, end_line, path,\n // start_line). URLSearchParams encodes `~` and `*` the other way round\n // from Python's urlencode, so equality with Clio's stored string is by\n // decoded value; see file-line-range.ts.\n params.set('end_line', String(anchor.endLine));\n params.set('path', anchor.path);\n params.set('start_line', String(anchor.startLine));\n break;\n case 'line':\n params.set('line', String(anchor.line));\n break;\n case 'line_range':\n params.set('start_line', String(anchor.startLine));\n params.set('end_line', String(anchor.endLine));\n break;\n case 'msg':\n params.set('msg_id', anchor.messageId);\n break;\n case 'msg_range':\n params.set('start_msg_id', anchor.startMessageId);\n params.set('end_msg_id', anchor.endMessageId);\n break;\n case 'msg_block':\n params.set('msg_id', anchor.messageId);\n params.set('block', String(anchor.block));\n if (anchor.hash) params.set('hash', anchor.hash);\n break;\n case 'msg_section':\n params.set('msg_id', anchor.messageId);\n params.set('heading', anchor.heading);\n if (anchor.nth != null) params.set('nth', String(anchor.nth));\n break;\n case 'msg_text':\n params.set('msg_id', anchor.messageId);\n params.set('text', anchor.text);\n if (anchor.block != null) params.set('block', String(anchor.block));\n if (anchor.prefix) params.set('prefix', anchor.prefix);\n if (anchor.suffix) params.set('suffix', anchor.suffix);\n break;\n case 'page':\n params.set('page', String(anchor.page));\n break;\n case 'page_range':\n params.set('start_page', String(anchor.startPage));\n params.set('end_page', String(anchor.endPage));\n break;\n case 'page_rect':\n params.set('page', String(anchor.page));\n params.set('x', String(anchor.x));\n params.set('y', String(anchor.y));\n params.set('width', String(anchor.width));\n params.set('height', String(anchor.height));\n if (anchor.unit != null) params.set('unit', anchor.unit);\n break;\n case 'page_text':\n params.set('page', String(anchor.page));\n params.set('text', anchor.text);\n if (anchor.prefix) params.set('prefix', anchor.prefix);\n if (anchor.suffix) params.set('suffix', anchor.suffix);\n if (anchor.hash) params.set('hash', anchor.hash);\n break;\n case 'path':\n params.set('path', anchor.path);\n if (anchor.line != null) {\n params.set('line', String(anchor.line));\n if (anchor.column != null) params.set('column', String(anchor.column));\n }\n break;\n case 'pixel_range':\n params.set('x', String(anchor.x));\n params.set('y', String(anchor.y));\n params.set('width', String(anchor.width));\n params.set('height', String(anchor.height));\n break;\n case 'pm_node':\n params.set('node_id', anchor.nodeId);\n break;\n case 'pm_node_range':\n params.set('start_node_id', anchor.startNodeId);\n params.set('end_node_id', anchor.endNodeId);\n break;\n case 'pm_mark':\n params.set('mark_id', anchor.markId);\n break;\n case 'rect':\n params.set('x', String(anchor.x));\n params.set('y', String(anchor.y));\n params.set('width', String(anchor.width));\n params.set('height', String(anchor.height));\n break;\n case 'section':\n params.set('section', anchor.section);\n if (anchor.topic != null) params.set('topic', String(anchor.topic));\n break;\n case 'semantic_query':\n params.set('query', JSON.stringify(anchor.query));\n if (anchor.field != null) params.set('field', anchor.field);\n if (anchor.rowKey != null) params.set('row_key', JSON.stringify(anchor.rowKey));\n if (anchor.rowIndex != null) params.set('row_index', String(anchor.rowIndex));\n if (anchor.relationship != null) params.set('relationship', anchor.relationship);\n if (anchor.schemaVersion != null) params.set('schema_version', String(anchor.schemaVersion));\n if (anchor.schemaHash != null) params.set('schema_hash', anchor.schemaHash);\n if (anchor.sourceSnapshots != null) {\n params.set('source_snapshots', JSON.stringify(anchor.sourceSnapshots));\n }\n if (anchor.dataAsOf != null) params.set('data_as_of', anchor.dataAsOf);\n break;\n case 'sql_query':\n if (anchor.sql != null) params.set('sql', anchor.sql);\n if (anchor.querySnippetAssetId != null) {\n params.set('query_snippet_asset_id', anchor.querySnippetAssetId);\n }\n if (anchor.dialect != null) params.set('dialect', anchor.dialect);\n if (anchor.field != null) params.set('field', anchor.field);\n if (anchor.rowKey != null) params.set('row_key', JSON.stringify(anchor.rowKey));\n if (anchor.rowIndex != null) params.set('row_index', String(anchor.rowIndex));\n if (anchor.relationship != null) params.set('relationship', anchor.relationship);\n break;\n case 'shape':\n if (anchor.slideId != null) params.set('slide_id', anchor.slideId);\n if (anchor.slideIndex != null) params.set('slide_index', String(anchor.slideIndex));\n params.set('shape_ids', anchor.shapeIds.join(','));\n break;\n case 'sheet_cell':\n params.set('sheet_id', String(anchor.sheetId));\n params.set('cell', anchor.cell);\n if (anchor.chartId != null) params.set('chart', anchor.chartId);\n break;\n case 'sheet_range':\n params.set('sheet_id', String(anchor.sheetId));\n params.set('range', anchor.range);\n // An empty frontier (a document with no structural edit journaled yet) still names a point\n // in the engine's log, so it is written, not dropped.\n if (anchor.frontier != null) params.set('frontier', JSON.stringify(anchor.frontier));\n if (anchor.stableRange != null) params.set('stable_range', anchor.stableRange);\n break;\n case 'sheet_tab':\n params.set('sheet_id', String(anchor.sheetId));\n break;\n case 'sheet_table':\n params.set('sheet_id', String(anchor.sheetId));\n params.set('table_name', anchor.tableName);\n if (anchor.fallbackRange != null) {\n params.set('fallback_range', anchor.fallbackRange);\n }\n break;\n case 'lakehouse_table':\n params.set('table', anchor.table);\n if (anchor.tableUuid) params.set('table_uuid', anchor.tableUuid);\n if (anchor.snapshotId) params.set('snapshot_id', anchor.snapshotId);\n break;\n case 'slide':\n if (anchor.slideId != null) params.set('slide_id', anchor.slideId);\n if (anchor.slideIndex != null) params.set('slide_index', String(anchor.slideIndex));\n break;\n case 'time':\n params.set('time', anchor.time);\n break;\n case 'time_range':\n params.set('start_time', anchor.startTime);\n params.set('end_time', anchor.endTime);\n break;\n case 'tool_call':\n params.set('tool_call_id', anchor.toolCallId);\n if (anchor.messageId) params.set('msg_id', anchor.messageId);\n break;\n }\n\n return params;\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -44,7 +44,12 @@ const LEGACY_ANCHOR_TYPES = {
|
|
|
44
44
|
function isAnchorType(value) {
|
|
45
45
|
return typeof value === "string" && Object.values(AnchorType).includes(value);
|
|
46
46
|
}
|
|
47
|
+
function isAnchor(value) {
|
|
48
|
+
if (typeof value !== "object" || value === null) return false;
|
|
49
|
+
return isAnchorType(value.type);
|
|
50
|
+
}
|
|
47
51
|
exports.AnchorType = AnchorType;
|
|
48
52
|
exports.LEGACY_ANCHOR_TYPES = LEGACY_ANCHOR_TYPES;
|
|
53
|
+
exports.isAnchor = isAnchor;
|
|
49
54
|
exports.isAnchorType = isAnchorType;
|
|
50
55
|
//# sourceMappingURL=types.cjs.map
|