@skaile/workspaces 6.10.0 → 6.12.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/CHANGELOG.md +16 -0
- package/dist/app-sdk/index.js +1 -1
- package/dist/{asset-feeds-UG3PG423.js → asset-feeds-PO2WC75V.js} +13 -13
- package/dist/{asset-feeds-UG3PG423.js.map → asset-feeds-PO2WC75V.js.map} +1 -1
- package/dist/asset-manager/index.js +6 -6
- package/dist/asset-manager/installer.js +3 -3
- package/dist/asset-manager/renderers.js +2 -2
- package/dist/bridge/harnesses/claude-sdk.js +7 -7
- package/dist/bridge/harnesses/codex.js +5 -5
- package/dist/bridge/harnesses/continue.js +4 -4
- package/dist/bridge/harnesses/echo.js +4 -4
- package/dist/bridge/harnesses/gemini.js +7 -7
- package/dist/bridge/harnesses/goose.js +4 -4
- package/dist/bridge/harnesses/omp.js +41 -10
- package/dist/bridge/harnesses/omp.js.map +1 -1
- package/dist/bridge/harnesses/opencode.js +4 -4
- package/dist/bridge/harnesses/qwen.js +7 -7
- package/dist/bridge/index.js +11 -11
- package/dist/bridge/src/harnesses/omp.d.ts +13 -1
- package/dist/bridge/src/harnesses/omp.d.ts.map +1 -1
- package/dist/bridge/src/types.d.ts +7 -0
- package/dist/bridge/src/types.d.ts.map +1 -1
- package/dist/channels/adapters/msteams/activity.d.ts +2 -2
- package/dist/channels/adapters/msteams/activity.d.ts.map +1 -1
- package/dist/channels/adapters/msteams.js +21 -6
- package/dist/channels/adapters/msteams.js.map +1 -1
- package/dist/channels/index.js +175 -26
- package/dist/channels/index.js.map +1 -1
- package/dist/channels/src/context-batch.d.ts +63 -0
- package/dist/channels/src/context-batch.d.ts.map +1 -0
- package/dist/channels/src/egress/output-mirror.d.ts +7 -0
- package/dist/channels/src/egress/output-mirror.d.ts.map +1 -1
- package/dist/channels/src/engine.d.ts +21 -2
- package/dist/channels/src/engine.d.ts.map +1 -1
- package/dist/channels/src/index.d.ts +1 -0
- package/dist/channels/src/index.d.ts.map +1 -1
- package/dist/channels/src/ports.d.ts +9 -0
- package/dist/channels/src/ports.d.ts.map +1 -1
- package/dist/channels/src/types.d.ts +6 -0
- package/dist/channels/src/types.d.ts.map +1 -1
- package/dist/{chunk-7NN3P6VF.js → chunk-342UX2MG.js} +10 -5
- package/dist/chunk-342UX2MG.js.map +1 -0
- package/dist/{chunk-NTFP2XF4.js → chunk-45XL75RO.js} +9 -9
- package/dist/{chunk-NTFP2XF4.js.map → chunk-45XL75RO.js.map} +1 -1
- package/dist/{chunk-JDZUQFN7.js → chunk-4NJVF3DV.js} +4 -4
- package/dist/{chunk-JDZUQFN7.js.map → chunk-4NJVF3DV.js.map} +1 -1
- package/dist/{chunk-GA4GUDTL.js → chunk-5M3S6DLV.js} +3 -3
- package/dist/{chunk-GA4GUDTL.js.map → chunk-5M3S6DLV.js.map} +1 -1
- package/dist/{chunk-HE3TZYNG.js → chunk-5XYZNMMC.js} +4 -4
- package/dist/{chunk-HE3TZYNG.js.map → chunk-5XYZNMMC.js.map} +1 -1
- package/dist/{chunk-2U67XYZM.js → chunk-6NNXBXYI.js} +3 -3
- package/dist/{chunk-2U67XYZM.js.map → chunk-6NNXBXYI.js.map} +1 -1
- package/dist/{chunk-FXBKBOI5.js → chunk-7FXOOUOC.js} +4 -4
- package/dist/{chunk-FXBKBOI5.js.map → chunk-7FXOOUOC.js.map} +1 -1
- package/dist/{chunk-KRL53RZB.js → chunk-7LJUK5JK.js} +4 -4
- package/dist/{chunk-KRL53RZB.js.map → chunk-7LJUK5JK.js.map} +1 -1
- package/dist/{chunk-NCJSYU6A.js → chunk-7O6SCI7B.js} +5 -5
- package/dist/{chunk-NCJSYU6A.js.map → chunk-7O6SCI7B.js.map} +1 -1
- package/dist/{chunk-R3ZNAPBV.js → chunk-7VBD5XUM.js} +3 -3
- package/dist/{chunk-R3ZNAPBV.js.map → chunk-7VBD5XUM.js.map} +1 -1
- package/dist/{chunk-YEOG7CWQ.js → chunk-7ZL23M3X.js} +3 -3
- package/dist/{chunk-YEOG7CWQ.js.map → chunk-7ZL23M3X.js.map} +1 -1
- package/dist/{chunk-375HN3FD.js → chunk-CH6UVEM5.js} +9 -9
- package/dist/{chunk-375HN3FD.js.map → chunk-CH6UVEM5.js.map} +1 -1
- package/dist/{chunk-HQUF6O4B.js → chunk-CI4I34F4.js} +7 -7
- package/dist/{chunk-HQUF6O4B.js.map → chunk-CI4I34F4.js.map} +1 -1
- package/dist/{chunk-RTFH2QR2.js → chunk-CLMIZ4N6.js} +3 -3
- package/dist/{chunk-RTFH2QR2.js.map → chunk-CLMIZ4N6.js.map} +1 -1
- package/dist/{chunk-QBJQ426X.js → chunk-DKRD6CZL.js} +3 -3
- package/dist/{chunk-QBJQ426X.js.map → chunk-DKRD6CZL.js.map} +1 -1
- package/dist/{chunk-RZ5R6GDJ.js → chunk-DRUAQ7IY.js} +3 -3
- package/dist/{chunk-RZ5R6GDJ.js.map → chunk-DRUAQ7IY.js.map} +1 -1
- package/dist/{chunk-3AIEJSQR.js → chunk-ESUF2ZYT.js} +3 -3
- package/dist/{chunk-3AIEJSQR.js.map → chunk-ESUF2ZYT.js.map} +1 -1
- package/dist/{chunk-C5UKYTTD.js → chunk-FECB7RI7.js} +9 -9
- package/dist/{chunk-C5UKYTTD.js.map → chunk-FECB7RI7.js.map} +1 -1
- package/dist/{chunk-4Z4RULWQ.js → chunk-FO2GU5L7.js} +196 -35
- package/dist/chunk-FO2GU5L7.js.map +1 -0
- package/dist/{chunk-2D6HZAO5.js → chunk-FVOQPTK2.js} +3 -3
- package/dist/{chunk-2D6HZAO5.js.map → chunk-FVOQPTK2.js.map} +1 -1
- package/dist/{chunk-5JBMYZNA.js → chunk-GODUKPGD.js} +3 -3
- package/dist/{chunk-5JBMYZNA.js.map → chunk-GODUKPGD.js.map} +1 -1
- package/dist/{chunk-7DUOKE73.js → chunk-GQQIMKEP.js} +11 -11
- package/dist/{chunk-7DUOKE73.js.map → chunk-GQQIMKEP.js.map} +1 -1
- package/dist/{chunk-BRPEW3UL.js → chunk-GYRIO6RA.js} +3 -3
- package/dist/{chunk-BRPEW3UL.js.map → chunk-GYRIO6RA.js.map} +1 -1
- package/dist/{chunk-DOMRBOJZ.js → chunk-HPQ2WDYC.js} +4 -4
- package/dist/{chunk-DOMRBOJZ.js.map → chunk-HPQ2WDYC.js.map} +1 -1
- package/dist/{chunk-4I4SBOCS.js → chunk-IIELRGIZ.js} +7 -7
- package/dist/{chunk-4I4SBOCS.js.map → chunk-IIELRGIZ.js.map} +1 -1
- package/dist/{chunk-6PVRP3LW.js → chunk-IPCRQWNC.js} +17 -6
- package/dist/chunk-IPCRQWNC.js.map +1 -0
- package/dist/{chunk-5KQFR4D7.js → chunk-L74W5TVC.js} +4 -4
- package/dist/{chunk-5KQFR4D7.js.map → chunk-L74W5TVC.js.map} +1 -1
- package/dist/{chunk-WS3BOCAT.js → chunk-LCXQ4LVP.js} +16 -3
- package/dist/chunk-LCXQ4LVP.js.map +1 -0
- package/dist/{chunk-2MUUPRIG.js → chunk-LXD37LHF.js} +4 -4
- package/dist/{chunk-2MUUPRIG.js.map → chunk-LXD37LHF.js.map} +1 -1
- package/dist/{chunk-PSPFWTJI.js → chunk-MRTOKIEJ.js} +3 -3
- package/dist/{chunk-PSPFWTJI.js.map → chunk-MRTOKIEJ.js.map} +1 -1
- package/dist/{chunk-NFFBYG2W.js → chunk-PZS55HOX.js} +3 -3
- package/dist/{chunk-NFFBYG2W.js.map → chunk-PZS55HOX.js.map} +1 -1
- package/dist/{chunk-XDVR7QIT.js → chunk-QC4Q7PMQ.js} +6 -3
- package/dist/chunk-QC4Q7PMQ.js.map +1 -0
- package/dist/{chunk-5P7LTPBR.js → chunk-RRKJHADP.js} +3 -3
- package/dist/{chunk-5P7LTPBR.js.map → chunk-RRKJHADP.js.map} +1 -1
- package/dist/{chunk-6O7VDKX3.js → chunk-RZQCBFIU.js} +2 -2
- package/dist/{chunk-6O7VDKX3.js.map → chunk-RZQCBFIU.js.map} +1 -1
- package/dist/{chunk-KE5HDORU.js → chunk-S6NS3I3P.js} +2 -2
- package/dist/{chunk-KE5HDORU.js.map → chunk-S6NS3I3P.js.map} +1 -1
- package/dist/{chunk-XWCV2A2F.js → chunk-SZ3XCZHC.js} +3 -3
- package/dist/{chunk-XWCV2A2F.js.map → chunk-SZ3XCZHC.js.map} +1 -1
- package/dist/{chunk-SKG6G4HO.js → chunk-UHTCOYFJ.js} +7 -7
- package/dist/{chunk-SKG6G4HO.js.map → chunk-UHTCOYFJ.js.map} +1 -1
- package/dist/{chunk-F2IBDVBP.js → chunk-VHRGCLCR.js} +2 -2
- package/dist/{chunk-F2IBDVBP.js.map → chunk-VHRGCLCR.js.map} +1 -1
- package/dist/{chunk-HLFLET7S.js → chunk-WCHGUS7X.js} +5 -5
- package/dist/{chunk-HLFLET7S.js.map → chunk-WCHGUS7X.js.map} +1 -1
- package/dist/{chunk-IMO4EHND.js → chunk-WPTNYDDS.js} +4 -4
- package/dist/{chunk-IMO4EHND.js.map → chunk-WPTNYDDS.js.map} +1 -1
- package/dist/{chunk-BCID52M5.js → chunk-YPX7LQSW.js} +7 -7
- package/dist/{chunk-BCID52M5.js.map → chunk-YPX7LQSW.js.map} +1 -1
- package/dist/{chunk-PTXQMTCG.js → chunk-ZRKU7BRI.js} +3 -3
- package/dist/{chunk-PTXQMTCG.js.map → chunk-ZRKU7BRI.js.map} +1 -1
- package/dist/{claude-code-CMFGCDMX.js → claude-code-TDMSETH6.js} +4 -4
- package/dist/{claude-code-CMFGCDMX.js.map → claude-code-TDMSETH6.js.map} +1 -1
- package/dist/cli/index.js +63 -63
- package/dist/client/index.js +1 -1
- package/dist/client/src/client.d.ts +3 -0
- package/dist/client/src/client.d.ts.map +1 -1
- package/dist/connectors/index.js +13 -13
- package/dist/{connectors-P5M2D4MH.js → connectors-IUJRBTCW.js} +16 -16
- package/dist/{connectors-P5M2D4MH.js.map → connectors-IUJRBTCW.js.map} +1 -1
- package/dist/connectors-shared/index.js +2 -2
- package/dist/discovery/index.js +2 -2
- package/dist/{ensure-sources-MOGLBEUF.js → ensure-sources-Q2TTZVLX.js} +19 -19
- package/dist/{ensure-sources-MOGLBEUF.js.map → ensure-sources-Q2TTZVLX.js.map} +1 -1
- package/dist/factory-assets/connectors/box.js +13 -13
- package/dist/factory-assets/connectors/deploy.js +13 -13
- package/dist/factory-assets/connectors/devserver.js +13 -13
- package/dist/factory-assets/connectors/flow/adapter.js +13 -13
- package/dist/factory-assets/connectors/flow/run-flow.js +14 -14
- package/dist/factory-assets/connectors/flow.js +13 -13
- package/dist/factory-assets/connectors/git.js +13 -13
- package/dist/factory-assets/connectors/gmail.js +13 -13
- package/dist/factory-assets/connectors/googledrive.js +13 -13
- package/dist/factory-assets/connectors/local.js +13 -13
- package/dist/factory-assets/connectors/mattermost.js +13 -13
- package/dist/factory-assets/connectors/memory.js +13 -13
- package/dist/factory-assets/connectors/minio.js +13 -13
- package/dist/factory-assets/connectors/postgres.js +13 -13
- package/dist/factory-assets/connectors/s3.js +13 -13
- package/dist/factory-assets/connectors/sharepoint.js +13 -13
- package/dist/factory-assets/connectors/sqlite.js +13 -13
- package/dist/factory-assets/connectors/static-server.js +13 -13
- package/dist/factory-assets/connectors/tunnel.js +13 -13
- package/dist/factory-assets/connectors/webdav.js +13 -13
- package/dist/factory-assets/connectors/xstate-store.js +13 -13
- package/dist/factory-assets/connectors/xstate.js +13 -13
- package/dist/{helpers-JL5AEGDT.js → helpers-S6AQGXRH.js} +19 -19
- package/dist/{helpers-JL5AEGDT.js.map → helpers-S6AQGXRH.js.map} +1 -1
- package/dist/library/index.js +3 -3
- package/dist/{library-publish-DZNNZNMB.js → library-publish-7U4TJNQX.js} +33 -33
- package/dist/{library-publish-DZNNZNMB.js.map → library-publish-7U4TJNQX.js.map} +1 -1
- package/dist/model-endpoint/index.js +3 -3
- package/dist/{open-library-OJREQ22B.js → open-library-K6O6OVW5.js} +21 -21
- package/dist/{open-library-OJREQ22B.js.map → open-library-K6O6OVW5.js.map} +1 -1
- package/dist/{open-registry-OEU6QUK2.js → open-registry-4HNCWOCN.js} +6 -6
- package/dist/{open-registry-OEU6QUK2.js.map → open-registry-4HNCWOCN.js.map} +1 -1
- package/dist/{project-52UABBD5.js → project-ZWIZZIUT.js} +29 -29
- package/dist/{project-52UABBD5.js.map → project-ZWIZZIUT.js.map} +1 -1
- package/dist/runner/index.js +21 -21
- package/dist/runner/src/serve.d.ts.map +1 -1
- package/dist/runner/src/turn-ids.d.ts +70 -0
- package/dist/runner/src/turn-ids.d.ts.map +1 -0
- package/dist/runner/src/turn-scheduler.d.ts +7 -0
- package/dist/runner/src/turn-scheduler.d.ts.map +1 -1
- package/dist/sdk/asset-manager.js +6 -6
- package/dist/sdk/bridge.js +11 -11
- package/dist/sdk/client.js +1 -1
- package/dist/sdk/index.js +22 -22
- package/dist/sdk/runner.js +21 -21
- package/dist/sdk/session.js +2 -2
- package/dist/sdk/types.js +1 -1
- package/dist/{serve-preflight-HOQ7CGYR.js → serve-preflight-E3IEZTTF.js} +21 -21
- package/dist/{serve-preflight-HOQ7CGYR.js.map → serve-preflight-E3IEZTTF.js.map} +1 -1
- package/dist/session/index.js +2 -2
- package/dist/session/src/dispatcher.d.ts +4 -1
- package/dist/session/src/dispatcher.d.ts.map +1 -1
- package/dist/{setup-JIDZ372C.js → setup-V4EXOMVQ.js} +20 -20
- package/dist/{setup-JIDZ372C.js.map → setup-V4EXOMVQ.js.map} +1 -1
- package/dist/{source-P6ZFSSZZ.js → source-O7XXDX55.js} +31 -31
- package/dist/{source-P6ZFSSZZ.js.map → source-O7XXDX55.js.map} +1 -1
- package/dist/{source-manifest-publish-Y36FHVDS.js → source-manifest-publish-GUU4LX2S.js} +33 -33
- package/dist/{source-manifest-publish-Y36FHVDS.js.map → source-manifest-publish-GUU4LX2S.js.map} +1 -1
- package/dist/tui/index.js +21 -21
- package/dist/types/index.js +1 -1
- package/dist/types/manifests.js +1 -1
- package/dist/types/src/capabilities.d.ts +2 -1
- package/dist/types/src/capabilities.d.ts.map +1 -1
- package/dist/types/src/events.d.ts +2 -1
- package/dist/types/src/events.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +2 -0
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/manifests/agent.d.ts +2 -0
- package/dist/types/src/manifests/agent.d.ts.map +1 -1
- package/dist/types/src/protocol.d.ts +2 -0
- package/dist/types/src/protocol.d.ts.map +1 -1
- package/dist/types/src/turn-ids.d.ts +62 -0
- package/dist/types/src/turn-ids.d.ts.map +1 -0
- package/dist/types/src/version.d.ts +12 -1
- package/dist/types/src/version.d.ts.map +1 -1
- package/dist/workspace-plugin/adapters/mcp.js +15 -15
- package/dist/workspace-plugin/adapters/omp.js +7 -7
- package/dist/workspace-plugin/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-4Z4RULWQ.js.map +0 -1
- package/dist/chunk-6PVRP3LW.js.map +0 -1
- package/dist/chunk-7NN3P6VF.js.map +0 -1
- package/dist/chunk-WS3BOCAT.js.map +0 -1
- package/dist/chunk-XDVR7QIT.js.map +0 -1
|
@@ -68,5 +68,5 @@ function parseConversationKey(key) {
|
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
export { CHANNEL_PLATFORMS, makeConversationKey, makeQuestionCard, markdownToTeamsText, mentionsAgent, normalizeMentions, parseConversationKey, teamsFormatConverter };
|
|
71
|
-
//# sourceMappingURL=chunk-
|
|
72
|
-
//# sourceMappingURL=chunk-
|
|
71
|
+
//# sourceMappingURL=chunk-VHRGCLCR.js.map
|
|
72
|
+
//# sourceMappingURL=chunk-VHRGCLCR.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../channels/src/mention/normalize.ts","../channels/src/format/adaptive-card.ts","../channels/src/types.ts"],"names":[],"mappings":"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","file":"chunk-F2IBDVBP.js","sourcesContent":["/**\n * Inbound mention normalization (spec §6.1): adapter-parsed platform mention\n * entities → the existing `Mention` union. This touches INBOUND platform\n * entities only — the platform's session-member mention grammar is untouched\n * (spec §12).\n */\nimport type { Mention } from \"@skaile/workspaces/types\";\nimport type { IdentityPort } from \"../ports.js\";\nimport type { ChannelActor } from \"../types.js\";\n\n/** A platform mention entity as the adapter parsed it, pre-identity-resolution. */\nexport type ChannelMentionEntity = {\n externalId: string;\n displayName: string;\n /** True when the entity is the bot itself (adapter compares against its own id). */\n isBot: boolean;\n offset: number;\n length: number;\n};\n\n/**\n * Normalizes adapter-parsed mention entities into the existing Mention union\n * (spec §6.1): bot → { type:\"group\", group:\"agent\" }; mapped user → user;\n * unmapped → { type:\"custom\", kind:\"external\", data:{ platform, externalUserId } }.\n */\nexport async function normalizeMentions(\n entities: ChannelMentionEntity[],\n actorOf: (e: ChannelMentionEntity) => ChannelActor,\n identity: IdentityPort,\n): Promise<Mention[]> {\n return Promise.all(\n entities.map(async (e): Promise<Mention> => {\n const position = { offset: e.offset, length: e.length };\n if (e.isBot) return { type: \"group\", group: \"agent\", resolved: [], ...position };\n const actor = actorOf(e);\n const host = await identity.resolveActor(actor);\n if (host) return { type: \"user\", userId: host.id, name: host.displayName, ...position };\n return {\n type: \"custom\",\n kind: \"external\",\n resolved: [],\n data: { platform: actor.platform, externalUserId: actor.externalId },\n ...position,\n };\n }),\n );\n}\n\n/** True when any normalized mention addresses the agent (bot-mention gate, spec §7.1.6). */\nexport function mentionsAgent(mentions: Mention[]): boolean {\n return mentions.some((m) => m.type === \"group\" && m.group === \"agent\");\n}\n","/**\n * Teams-facing formatting: text normalization for the markdown subset Teams\n * renders, plus Adaptive Card construction for question posts with options.\n */\nimport type { FormatConverter } from \"./types.js\";\n\n/**\n * Teams' supported markdown subset pass-through: normalizes constructs Teams\n * cannot render (~~strike~~ → plain, heading # → bold line); everything else\n * verbatim. Line-based on purpose — no markdown parser; fenced code passes\n * through untouched.\n */\nexport function markdownToTeamsText(markdown: string): string {\n let inFence = false;\n return markdown\n .split(\"\\n\")\n .map((line) => {\n if (/^\\s*```/.test(line)) {\n inFence = !inFence;\n return line;\n }\n if (inFence) return line;\n const heading = line.match(/^#{1,6}\\s+(.*)$/);\n const text = heading ? `**${heading[1]}**` : line;\n return text.replace(/~~(.+?)~~/g, \"$1\");\n })\n .join(\"\\n\");\n}\n\n/** Adaptive Card 1.4 JSON for a question with option buttons (Action.Submit, data: { option }). */\nexport function makeQuestionCard(markdown: string, options: string[]): Record<string, unknown> {\n return {\n type: \"AdaptiveCard\",\n version: \"1.4\",\n $schema: \"http://adaptivecards.io/schemas/adaptive-card.json\",\n body: [{ type: \"TextBlock\", text: markdownToTeamsText(markdown), wrap: true }],\n actions: options.map((option) => ({\n type: \"Action.Submit\",\n title: option,\n data: { option },\n })),\n };\n}\n\n/** {@link FormatConverter} for adapters whose `textFormat` is `\"adaptive-card\"` (Teams). */\nexport const teamsFormatConverter: FormatConverter = { toPlatformText: markdownToTeamsText };\n","/**\n * Core value and message types for the channels layer — the bridge between\n * external chat platforms (Teams, Mattermost, Slack) and workspace sessions.\n *\n * Everything here is transport-neutral: no platform SDK types leak in, and\n * platform-native payloads only appear as opaque `raw`/`messageRef` slots.\n */\nimport type { MessageV2 } from \"@skaile/workspaces/types\";\n\n/** Chat platforms the channels layer can bridge. */\nexport const CHANNEL_PLATFORMS = [\"msteams\", \"mattermost\", \"slack\"] as const;\n\n/** One of the supported chat platforms (`\"msteams\" | \"mattermost\" | \"slack\"`). */\nexport type ChannelPlatform = (typeof CHANNEL_PLATFORMS)[number];\n\n/**\n * Canonical identifier of a place in a chat app: `\"<platform>:<conversationId>\"`,\n * optionally `\"…/<threadRootId>\"`. Never a session id — the Binding is the only\n * join between the two (spec §5.1).\n */\nexport type ConversationKey = string;\n\n/**\n * Builds a {@link ConversationKey} from its parts.\n *\n * Invariant: `parseConversationKey(makeConversationKey(p, c, t))` round-trips\n * exactly, provided `threadRootId` itself contains no `/`.\n */\nexport function makeConversationKey(\n platform: ChannelPlatform,\n conversationId: string,\n threadRootId?: string,\n): ConversationKey {\n return threadRootId\n ? `${platform}:${conversationId}/${threadRootId}`\n : `${platform}:${conversationId}`;\n}\n\n/**\n * Splits a {@link ConversationKey} into platform, conversation id, and optional\n * thread root. Throws on an unknown platform prefix.\n *\n * Gotcha: the thread separator is the LAST `/` — conversation ids may\n * themselves contain slashes (e.g. Mattermost `team/channel`).\n */\nexport function parseConversationKey(key: ConversationKey): {\n platform: ChannelPlatform;\n conversationId: string;\n threadRootId?: string;\n} {\n const sep = key.indexOf(\":\");\n const platform = key.slice(0, sep) as ChannelPlatform;\n if (!CHANNEL_PLATFORMS.includes(platform)) {\n throw new Error(`ConversationKey has unknown platform: ${key}`);\n }\n const rest = key.slice(sep + 1);\n // Thread separator is the LAST \"/\" — conversation ids may themselves contain slashes.\n const slash = rest.lastIndexOf(\"/\");\n if (slash === -1) return { platform, conversationId: rest };\n return { platform, conversationId: rest.slice(0, slash), threadRootId: rest.slice(slash + 1) };\n}\n\n/** A person (or bot) as the chat platform sees them — pre-IdentityPort resolution. */\nexport type ChannelActor = {\n platform: ChannelPlatform;\n /** Platform-native user id (Teams AAD object id, Slack user id, MM user id). */\n externalId: string;\n displayName: string;\n /** Teams tenant / MM team / Slack workspace, when known. */\n tenantId?: string;\n /** Identity hint for IdentityPort mapping, when the platform exposes it. */\n email?: string;\n isBot?: boolean;\n};\n\n/** Reference to a posted platform message. `raw` carries platform-native extras (e.g. Teams serviceUrl). */\nexport type MessageRef = {\n platform: ChannelPlatform;\n conversationKey: ConversationKey;\n /** Platform-native message id (Teams activity id, Slack ts, MM post id). */\n messageId: string;\n raw?: unknown;\n};\n\n/** Where to post: a conversation, optionally threaded under an existing message. */\nexport type ReplyTarget = {\n conversationKey: ConversationKey;\n /** Platform-native thread anchor; adapters thread under it where supported. */\n threadRef?: MessageRef;\n};\n\n/**\n * Declarative surface description consumed by the engine + egress pipeline.\n * Finalized per spec §13.1 by this plan — the conformance kit asserts adapters\n * honor `maxMessageLength` and `ackDeadlineMs`.\n */\nexport type SurfaceCapabilities = {\n canEditMessages: boolean;\n canDeleteMessages: boolean;\n supportsThreads: boolean;\n supportsCards: boolean;\n supportsTyping: boolean;\n supportsEphemeral: boolean;\n supportsReactions: boolean;\n /** Hard cap on a single posted message's text length; egress chunks at this. */\n maxMessageLength: number;\n /** IngressSink.onMessage must resolve within this (Slack ~3000, Teams 15000). */\n ackDeadlineMs: number;\n /** Minimum interval between successive edits of one message (egress throttle). */\n editThrottleMs: number;\n /** Outbound text dialect the adapter expects from the format layer. */\n textFormat: \"markdown\" | \"mrkdwn\" | \"adaptive-card\";\n};\n\n/** Per-binding egress policy (spec §7.2.4). */\nexport type MirrorMode = \"agent-only\" | \"full\" | \"chat-initiated\";\n\n/**\n * The conversationKey ↔ sessionId join, persisted by the host's BindingStore.\n * Deliberately not 1:1 (spec §5.1). Session ids never leak into chat payloads.\n */\nexport type Binding = {\n conversationKey: ConversationKey;\n sessionId: string;\n platform: ChannelPlatform;\n tenantId?: string;\n mirrorMode: MirrorMode;\n enabled: boolean;\n /** Host user id that created the binding (audit; authority stays with the host). */\n createdBy: string;\n /** ISO 8601. */\n createdAt: string;\n};\n\n/**\n * The one genuinely new meta type (spec §5) — rides on MessageMeta's extension\n * slot; hosts persist it untouched via the round-trip preservation contract.\n */\nexport type ChannelMetaExtensions = {\n channel?: {\n platform: ChannelPlatform;\n conversationKey: ConversationKey;\n /** Platform event id — the inbound dedupe key. */\n eventId: string;\n tenantId?: string;\n /** Pre-IdentityPort resolution attribution. */\n actor?: { externalId: string; displayName: string };\n /** Opaque platform-native ref of the source message. */\n messageRef?: unknown;\n };\n};\n\n/** A workspace message envelope whose meta block carries {@link ChannelMetaExtensions}. */\nexport type ChannelMessage = MessageV2<ChannelMetaExtensions>;\n\n/** What the engine hands an adapter to post. Format conversion is the adapter's job. */\nexport type OutboundMessage = {\n /** Markdown source; adapters convert via the format layer per their textFormat. */\n markdown: string;\n /** Rendering intent. Default \"text\". */\n kind?: \"text\" | \"question\" | \"status\" | \"error\";\n /** Options rendered as buttons where supportsCards; appended as a list otherwise. */\n options?: string[];\n};\n\n/** Fast-ack result of IngressSink.onMessage (spec §7.1.3). */\nexport type IngressAck = {\n status: \"accepted\" | \"duplicate\" | \"ignored\" | \"rejected\";\n reason?: string;\n};\n\n/** Inbound reaction event. Engine behavior deferred this milestone (Decision 7). */\nexport type InboundReaction = {\n conversationKey: ConversationKey;\n messageRef: MessageRef;\n emoji: string;\n actor: ChannelActor;\n action: \"added\" | \"removed\";\n eventId: string;\n};\n\n/** Non-message conversation lifecycle signals adapters may surface. */\nexport type ConversationEvent = {\n conversationKey: ConversationKey;\n kind: \"member_joined\" | \"member_left\" | \"conversation_renamed\" | \"conversation_deleted\";\n eventId: string;\n raw?: unknown;\n};\n\n/** Query for ChannelAdapter.lookupActor — backs the mentions-as-a-tool helper. */\nexport type ActorQuery = {\n externalId?: string;\n email?: string;\n /** Display-name substring match, platform semantics. */\n name?: string;\n};\n\n/** Result of verifyConversation — actionable problems, forge-tui preflight pattern. */\nexport type ConversationHealth = {\n ok: boolean;\n /** Human-actionable problem descriptions (\"bot is not a member of #x — invite it\"). */\n problems: string[];\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../channels/src/mention/normalize.ts","../channels/src/format/adaptive-card.ts","../channels/src/types.ts"],"names":[],"mappings":"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","file":"chunk-VHRGCLCR.js","sourcesContent":["/**\n * Inbound mention normalization (spec §6.1): adapter-parsed platform mention\n * entities → the existing `Mention` union. This touches INBOUND platform\n * entities only — the platform's session-member mention grammar is untouched\n * (spec §12).\n */\nimport type { Mention } from \"@skaile/workspaces/types\";\nimport type { IdentityPort } from \"../ports.js\";\nimport type { ChannelActor } from \"../types.js\";\n\n/** A platform mention entity as the adapter parsed it, pre-identity-resolution. */\nexport type ChannelMentionEntity = {\n externalId: string;\n displayName: string;\n /** True when the entity is the bot itself (adapter compares against its own id). */\n isBot: boolean;\n offset: number;\n length: number;\n};\n\n/**\n * Normalizes adapter-parsed mention entities into the existing Mention union\n * (spec §6.1): bot → { type:\"group\", group:\"agent\" }; mapped user → user;\n * unmapped → { type:\"custom\", kind:\"external\", data:{ platform, externalUserId } }.\n */\nexport async function normalizeMentions(\n entities: ChannelMentionEntity[],\n actorOf: (e: ChannelMentionEntity) => ChannelActor,\n identity: IdentityPort,\n): Promise<Mention[]> {\n return Promise.all(\n entities.map(async (e): Promise<Mention> => {\n const position = { offset: e.offset, length: e.length };\n if (e.isBot) return { type: \"group\", group: \"agent\", resolved: [], ...position };\n const actor = actorOf(e);\n const host = await identity.resolveActor(actor);\n if (host) return { type: \"user\", userId: host.id, name: host.displayName, ...position };\n return {\n type: \"custom\",\n kind: \"external\",\n resolved: [],\n data: { platform: actor.platform, externalUserId: actor.externalId },\n ...position,\n };\n }),\n );\n}\n\n/** True when any normalized mention addresses the agent (bot-mention gate, spec §7.1.6). */\nexport function mentionsAgent(mentions: Mention[]): boolean {\n return mentions.some((m) => m.type === \"group\" && m.group === \"agent\");\n}\n","/**\n * Teams-facing formatting: text normalization for the markdown subset Teams\n * renders, plus Adaptive Card construction for question posts with options.\n */\nimport type { FormatConverter } from \"./types.js\";\n\n/**\n * Teams' supported markdown subset pass-through: normalizes constructs Teams\n * cannot render (~~strike~~ → plain, heading # → bold line); everything else\n * verbatim. Line-based on purpose — no markdown parser; fenced code passes\n * through untouched.\n */\nexport function markdownToTeamsText(markdown: string): string {\n let inFence = false;\n return markdown\n .split(\"\\n\")\n .map((line) => {\n if (/^\\s*```/.test(line)) {\n inFence = !inFence;\n return line;\n }\n if (inFence) return line;\n const heading = line.match(/^#{1,6}\\s+(.*)$/);\n const text = heading ? `**${heading[1]}**` : line;\n return text.replace(/~~(.+?)~~/g, \"$1\");\n })\n .join(\"\\n\");\n}\n\n/** Adaptive Card 1.4 JSON for a question with option buttons (Action.Submit, data: { option }). */\nexport function makeQuestionCard(markdown: string, options: string[]): Record<string, unknown> {\n return {\n type: \"AdaptiveCard\",\n version: \"1.4\",\n $schema: \"http://adaptivecards.io/schemas/adaptive-card.json\",\n body: [{ type: \"TextBlock\", text: markdownToTeamsText(markdown), wrap: true }],\n actions: options.map((option) => ({\n type: \"Action.Submit\",\n title: option,\n data: { option },\n })),\n };\n}\n\n/** {@link FormatConverter} for adapters whose `textFormat` is `\"adaptive-card\"` (Teams). */\nexport const teamsFormatConverter: FormatConverter = { toPlatformText: markdownToTeamsText };\n","/**\n * Core value and message types for the channels layer — the bridge between\n * external chat platforms (Teams, Mattermost, Slack) and workspace sessions.\n *\n * Everything here is transport-neutral: no platform SDK types leak in, and\n * platform-native payloads only appear as opaque `raw`/`messageRef` slots.\n */\nimport type { MessageV2 } from \"@skaile/workspaces/types\";\n\n/** Chat platforms the channels layer can bridge. */\nexport const CHANNEL_PLATFORMS = [\"msteams\", \"mattermost\", \"slack\"] as const;\n\n/** One of the supported chat platforms (`\"msteams\" | \"mattermost\" | \"slack\"`). */\nexport type ChannelPlatform = (typeof CHANNEL_PLATFORMS)[number];\n\n/**\n * Canonical identifier of a place in a chat app: `\"<platform>:<conversationId>\"`,\n * optionally `\"…/<threadRootId>\"`. Never a session id — the Binding is the only\n * join between the two (spec §5.1).\n */\nexport type ConversationKey = string;\n\n/**\n * Builds a {@link ConversationKey} from its parts.\n *\n * Invariant: `parseConversationKey(makeConversationKey(p, c, t))` round-trips\n * exactly, provided `threadRootId` itself contains no `/`.\n */\nexport function makeConversationKey(\n platform: ChannelPlatform,\n conversationId: string,\n threadRootId?: string,\n): ConversationKey {\n return threadRootId\n ? `${platform}:${conversationId}/${threadRootId}`\n : `${platform}:${conversationId}`;\n}\n\n/**\n * Splits a {@link ConversationKey} into platform, conversation id, and optional\n * thread root. Throws on an unknown platform prefix.\n *\n * Gotcha: the thread separator is the LAST `/` — conversation ids may\n * themselves contain slashes (e.g. Mattermost `team/channel`).\n */\nexport function parseConversationKey(key: ConversationKey): {\n platform: ChannelPlatform;\n conversationId: string;\n threadRootId?: string;\n} {\n const sep = key.indexOf(\":\");\n const platform = key.slice(0, sep) as ChannelPlatform;\n if (!CHANNEL_PLATFORMS.includes(platform)) {\n throw new Error(`ConversationKey has unknown platform: ${key}`);\n }\n const rest = key.slice(sep + 1);\n // Thread separator is the LAST \"/\" — conversation ids may themselves contain slashes.\n const slash = rest.lastIndexOf(\"/\");\n if (slash === -1) return { platform, conversationId: rest };\n return { platform, conversationId: rest.slice(0, slash), threadRootId: rest.slice(slash + 1) };\n}\n\n/** A person (or bot) as the chat platform sees them — pre-IdentityPort resolution. */\nexport type ChannelActor = {\n platform: ChannelPlatform;\n /** Platform-native user id (Teams AAD object id, Slack user id, MM user id). */\n externalId: string;\n displayName: string;\n /** Teams tenant / MM team / Slack workspace, when known. */\n tenantId?: string;\n /** Identity hint for IdentityPort mapping, when the platform exposes it. */\n email?: string;\n isBot?: boolean;\n};\n\n/** Reference to a posted platform message. `raw` carries platform-native extras (e.g. Teams serviceUrl). */\nexport type MessageRef = {\n platform: ChannelPlatform;\n conversationKey: ConversationKey;\n /** Platform-native message id (Teams activity id, Slack ts, MM post id). */\n messageId: string;\n raw?: unknown;\n};\n\n/** Where to post: a conversation, optionally threaded under an existing message. */\nexport type ReplyTarget = {\n conversationKey: ConversationKey;\n /** Platform-native thread anchor; adapters thread under it where supported. */\n threadRef?: MessageRef;\n};\n\n/**\n * Declarative surface description consumed by the engine + egress pipeline.\n * Finalized per spec §13.1 by this plan — the conformance kit asserts adapters\n * honor `maxMessageLength` and `ackDeadlineMs`.\n */\nexport type SurfaceCapabilities = {\n canEditMessages: boolean;\n canDeleteMessages: boolean;\n supportsThreads: boolean;\n supportsCards: boolean;\n supportsTyping: boolean;\n supportsEphemeral: boolean;\n supportsReactions: boolean;\n /** Hard cap on a single posted message's text length; egress chunks at this. */\n maxMessageLength: number;\n /** IngressSink.onMessage must resolve within this (Slack ~3000, Teams 15000). */\n ackDeadlineMs: number;\n /** Minimum interval between successive edits of one message (egress throttle). */\n editThrottleMs: number;\n /** Outbound text dialect the adapter expects from the format layer. */\n textFormat: \"markdown\" | \"mrkdwn\" | \"adaptive-card\";\n};\n\n/** Per-binding egress policy (spec §7.2.4). */\nexport type MirrorMode = \"agent-only\" | \"full\" | \"chat-initiated\";\n\n/**\n * The conversationKey ↔ sessionId join, persisted by the host's BindingStore.\n * Deliberately not 1:1 (spec §5.1). Session ids never leak into chat payloads.\n */\nexport type Binding = {\n conversationKey: ConversationKey;\n sessionId: string;\n platform: ChannelPlatform;\n tenantId?: string;\n mirrorMode: MirrorMode;\n enabled: boolean;\n /** Host user id that created the binding (audit; authority stays with the host). */\n createdBy: string;\n /** ISO 8601. */\n createdAt: string;\n};\n\n/**\n * The one genuinely new meta type (spec §5) — rides on MessageMeta's extension\n * slot; hosts persist it untouched via the round-trip preservation contract.\n */\nexport type ChannelMetaExtensions = {\n channel?: {\n platform: ChannelPlatform;\n conversationKey: ConversationKey;\n /** Platform event id — the inbound dedupe key. */\n eventId: string;\n tenantId?: string;\n /** Pre-IdentityPort resolution attribution. */\n actor?: { externalId: string; displayName: string };\n /** Opaque platform-native ref of the source message. */\n messageRef?: unknown;\n /**\n * True when the message is addressed to the bot (an @mention, or a 1:1\n * chat with it); only such messages start an agent turn (spec §5.2, §5.7).\n * When an adapter leaves it unset, the engine falls back to `meta.mentions`.\n */\n mentioned?: boolean;\n };\n};\n\n/** A workspace message envelope whose meta block carries {@link ChannelMetaExtensions}. */\nexport type ChannelMessage = MessageV2<ChannelMetaExtensions>;\n\n/** What the engine hands an adapter to post. Format conversion is the adapter's job. */\nexport type OutboundMessage = {\n /** Markdown source; adapters convert via the format layer per their textFormat. */\n markdown: string;\n /** Rendering intent. Default \"text\". */\n kind?: \"text\" | \"question\" | \"status\" | \"error\";\n /** Options rendered as buttons where supportsCards; appended as a list otherwise. */\n options?: string[];\n};\n\n/** Fast-ack result of IngressSink.onMessage (spec §7.1.3). */\nexport type IngressAck = {\n status: \"accepted\" | \"duplicate\" | \"ignored\" | \"rejected\";\n reason?: string;\n};\n\n/** Inbound reaction event. Engine behavior deferred this milestone (Decision 7). */\nexport type InboundReaction = {\n conversationKey: ConversationKey;\n messageRef: MessageRef;\n emoji: string;\n actor: ChannelActor;\n action: \"added\" | \"removed\";\n eventId: string;\n};\n\n/** Non-message conversation lifecycle signals adapters may surface. */\nexport type ConversationEvent = {\n conversationKey: ConversationKey;\n kind: \"member_joined\" | \"member_left\" | \"conversation_renamed\" | \"conversation_deleted\";\n eventId: string;\n raw?: unknown;\n};\n\n/** Query for ChannelAdapter.lookupActor — backs the mentions-as-a-tool helper. */\nexport type ActorQuery = {\n externalId?: string;\n email?: string;\n /** Display-name substring match, platform semantics. */\n name?: string;\n};\n\n/** Result of verifyConversation — actionable problems, forge-tui preflight pattern. */\nexport type ConversationHealth = {\n ok: boolean;\n /** Human-actionable problem descriptions (\"bot is not a member of #x — invite it\"). */\n problems: string[];\n};\n"]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { CodexNativeStateUnavailable, CodexAppServerClient, CODEX_NATIVE_STATE_FORMAT } from './chunk-5KSGZP3E.js';
|
|
2
2
|
import { freshBudget, decide, spend } from './chunk-7EKQDY2T.js';
|
|
3
|
-
import { fetchProviderModels } from './chunk-
|
|
3
|
+
import { fetchProviderModels } from './chunk-ESUF2ZYT.js';
|
|
4
4
|
import { ReconfigureLedger, stripRunnerPrivateEnv, classifyGenericErrorMessage, RUNNER_AGENT_ENV_KEYS } from './chunk-5DE3DGVR.js';
|
|
5
|
-
import { AgentHarness, TOOL_ALLOWLIST_UNSUPPORTED, getBridgeLogger, registryHarnessConfig } from './chunk-
|
|
6
|
-
import { BUILTIN_HARNESS_CATALOG, unresolvedProviderCredentials, registryCredentialEnv, entryCredentialValue, providerCredentialEnvName } from './chunk-
|
|
5
|
+
import { AgentHarness, TOOL_ALLOWLIST_UNSUPPORTED, getBridgeLogger, registryHarnessConfig } from './chunk-PZS55HOX.js';
|
|
6
|
+
import { BUILTIN_HARNESS_CATALOG, unresolvedProviderCredentials, registryCredentialEnv, entryCredentialValue, providerCredentialEnvName } from './chunk-S6NS3I3P.js';
|
|
7
7
|
import { getProviderPreset } from './chunk-6UP2EDFN.js';
|
|
8
8
|
import { loadHarnessSdk } from './chunk-MEU2HHGV.js';
|
|
9
9
|
import { globalSkaileDir } from './chunk-L5VSIPQD.js';
|
|
@@ -2439,5 +2439,5 @@ var codexHarnessTarget = {
|
|
|
2439
2439
|
};
|
|
2440
2440
|
|
|
2441
2441
|
export { CodexHarness, buildCodexConfigDocument, checkCodexCredential, codexHarnessTarget, codexInstanceEnvironment, codexLoginFallbackNotice, isManagedCodexConfig, parseCodexCredential, parseCodexRefreshInput, parseCodexRefreshResult, prepareNativePolicy };
|
|
2442
|
-
//# sourceMappingURL=chunk-
|
|
2443
|
-
//# sourceMappingURL=chunk-
|
|
2442
|
+
//# sourceMappingURL=chunk-WCHGUS7X.js.map
|
|
2443
|
+
//# sourceMappingURL=chunk-WCHGUS7X.js.map
|