@excitedjs/feishu-channel 6.3.1-beta.274 → 6.4.0-beta.276

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.
Files changed (46) hide show
  1. package/README.md +40 -22
  2. package/dist/extension.d.ts +51 -1
  3. package/dist/extension.d.ts.map +1 -1
  4. package/dist/feishu-core-commands.d.ts +3 -3
  5. package/dist/feishu-core-commands.d.ts.map +1 -1
  6. package/dist/feishu-core-commands.js +3 -3
  7. package/dist/feishu-core-commands.js.map +1 -1
  8. package/dist/feishu-extensions.d.ts +2 -2
  9. package/dist/feishu-extensions.d.ts.map +1 -1
  10. package/dist/feishu-extensions.js +69 -12
  11. package/dist/feishu-extensions.js.map +1 -1
  12. package/dist/feishu-submit.d.ts +52 -19
  13. package/dist/feishu-submit.d.ts.map +1 -1
  14. package/dist/feishu-submit.js.map +1 -1
  15. package/dist/inbound/pipeline.js +2 -2
  16. package/dist/inbound/pipeline.js.map +1 -1
  17. package/dist/inbound/router.d.ts +2 -2
  18. package/dist/inbound/router.d.ts.map +1 -1
  19. package/dist/inbound/router.js +2 -2
  20. package/dist/inbound/router.js.map +1 -1
  21. package/dist/inbound/target.d.ts +40 -43
  22. package/dist/inbound/target.d.ts.map +1 -1
  23. package/dist/inbound/target.js +42 -62
  24. package/dist/inbound/target.js.map +1 -1
  25. package/dist/index.d.ts +1 -0
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js.map +1 -1
  28. package/dist/outbound/index.d.ts +6 -7
  29. package/dist/outbound/index.d.ts.map +1 -1
  30. package/dist/outbound/index.js +7 -4
  31. package/dist/outbound/index.js.map +1 -1
  32. package/dist/routing/index.d.ts +8 -3
  33. package/dist/routing/index.d.ts.map +1 -1
  34. package/dist/routing/index.js +12 -6
  35. package/dist/routing/index.js.map +1 -1
  36. package/dist/routing/target.d.ts +21 -3
  37. package/dist/routing/target.d.ts.map +1 -1
  38. package/dist/routing/target.js +25 -3
  39. package/dist/routing/target.js.map +1 -1
  40. package/dist/session/card-actions.d.ts.map +1 -1
  41. package/dist/session/card-actions.js +8 -4
  42. package/dist/session/card-actions.js.map +1 -1
  43. package/dist/session/session.d.ts.map +1 -1
  44. package/dist/session/session.js +1 -2
  45. package/dist/session/session.js.map +1 -1
  46. package/package.json +4 -4
package/README.md CHANGED
@@ -19,9 +19,10 @@ the Feishu channel ships out of the box.
19
19
  - **Inbound normalization**: turning Feishu events into agent-facing channel
20
20
  results, including the Channel-owned inner body and inline `<attachment>`
21
21
  blocks. Core owns the outer `<channel source="feishu" …>` envelope.
22
- - **Topic routing**: verifying `chat_mode=topic`, projecting `thread_id` as a
23
- neutral collaboration target, and recording exact per-message targets for
24
- scoped TeamLeader replies.
22
+ - **Topic routing**: projecting `thread_id` as a neutral collaboration target
23
+ whatever the group's current message format is, observing that format only to
24
+ decide whether an unbound topic may receive a new Team, and recording exact
25
+ per-message targets for scoped TeamLeader replies.
25
26
  - **Attachment handling**: downloading inbound attachments after the host access
26
27
  gate allows delivery, plus cache layout, path sanitization, permissions, and
27
28
  honest fallback references when a resource is not downloaded. Inline XML is
@@ -50,7 +51,12 @@ the Feishu channel ships out of the box.
50
51
  contributes the `feishu` channel provider (`builtin:feishu`) and publishes
51
52
  `FeishuApi`, through which another plugin registers Feishu extensions: extra
52
53
  MCP tools, card actions, and a per-channel-instance lifecycle with an
53
- instance api (`FeishuExtension`, `FeishuInstanceApi`).
54
+ instance api (`FeishuExtension`, `FeishuInstanceApi`). That api includes
55
+ `submitToBoundTeam`: an extension delivers work of its own (after a click or
56
+ from a timer) to the one Team the conversation still routes to, with no card
57
+ callback and no Core port of its own, and receives Core's actual admission
58
+ outcome. It never provisions a Team or falls back to another recipient, and
59
+ it claims no presentation anchor.
54
60
  - `createFeishuChannelProvider()` — the same provider with no extensions. Its
55
61
  `createSession` returns a `ChannelInstance`: a `session` with
56
62
  `initialize` / `start` / `close`, plus the optional `mcp` capability beside it.
@@ -113,16 +119,25 @@ the command is diagnosed as `sender_not_followed` and writes no trust.
113
119
 
114
120
  ## Feishu chat information permission
115
121
 
116
- Topic collaboration routing reads the enclosing chat through Feishu's
122
+ Topic identity is Feishu's own `thread_id`: a group message carrying one is a
123
+ topic whatever the group's current message format is — a native topic group, an
124
+ ordinary group switched to thread message format, or an ordinary group back in
125
+ chat message format whose old topics members keep talking in. Neither `root_id`
126
+ nor `parent_id` is ever read as identity. What the message format decides is
127
+ only whether a still-unbound topic may automatically receive a new Team, and
128
+ that mutable fact is observed fresh per message, never remembered for the
129
+ session.
130
+
131
+ That observation reads the enclosing chat through Feishu's
117
132
  `im.v1.chat.get` API. The bot must have a group information read permission
118
133
  accepted by that API, such as `im:chat:readonly`, and must be a member of the
119
- group. If the API fails or omits a recognized `chat_mode`, the channel logs a
120
- warning and deliberately treats the inbound as an ordinary group message; it
121
- does not infer topic mode from `root_id`, `parent_id`, or `thread_id` alone.
122
- Every non-empty inbound `thread_id` is also included in the provider-owned
123
- display attributes, so runtimes render it in the model-visible `<channel>`
124
- envelope. Displaying that identifier does not classify an ordinary group
125
- thread as a collaboration topic.
134
+ group. If the API fails or omits a recognized message format, the channel logs
135
+ a warning, keeps the message's identity, and withholds automatic provisioning
136
+ for it: saved bindings still answer — an exact topic binding first, then a
137
+ parent-group binding — and an unbound topic reaches the Dispatcher instead of
138
+ being given a Team. Every non-empty inbound `thread_id` is also included in the
139
+ provider-owned display attributes, so runtimes render it in the model-visible
140
+ `<channel>` envelope.
126
141
 
127
142
  The same read can decide who may answer a card, as a last resort. A click on
128
143
  an ask-user or extension card names its chat but not whether that chat is
@@ -134,16 +149,19 @@ reported by the last admitted inbound message this session routed in that chat
134
149
  a consumed `/introduce` teaches nothing). Only then does it ask the platform. A person the policy
135
150
  admits in a direct chat and in a group alike, or in neither, never triggers the
136
151
  read. When the answer does depend on the kind and it cannot be established, the
137
- click is refused with an error toast rather than degrading to an ordinary group
138
- as topic detection does, which on an install whose bot lacks the group
139
- information read permission affects only a click in a chat this session has not
140
- yet routed an admitted message from.
141
-
142
- A confirmed topic target declares its enclosing group as a less-specific
143
- binding fallback. An exact topic binding wins first; a bound collaboration
144
- space then provisions or reuses the exact topic Team; only a topic group that
145
- has no accepted collaboration route may reuse an existing group binding. If no
146
- such binding exists, delivery stays with the Dispatcher. This fallback is also
152
+ click is refused with an error toast rather than admitted on a guess — the
153
+ access kind is the only fact at stake here; a failed message-format read never
154
+ changes what a message is, only whether an unbound topic may provision. On an
155
+ install whose bot lacks the group information read permission, this affects
156
+ only a click in a chat this session has not yet routed an admitted message
157
+ from.
158
+
159
+ A topic target declares its enclosing group as a less-specific binding
160
+ fallback. An exact topic binding wins first, then its parent-group binding,
161
+ and only a still-unbound topic may then be provisioned — one whose group is
162
+ currently in the topic message format and carries a registered Collaboration
163
+ Space policy. If no policy claims it, delivery stays with the Dispatcher.
164
+ This fallback is also
147
165
  used for TeamLeader egress authorization after exact message/topic ownership is
148
166
  verified, allowing a group-bound TeamLeader to reply to an observed topic
149
167
  message without weakening cross-topic authorization for topic-bound leaders.
@@ -12,6 +12,7 @@
12
12
  import type { ChannelMcpCaller, DreamuxLogger } from '@excitedjs/dreamux-types';
13
13
  import type { FeishuCardActionEvent } from '@excitedjs/feishu-transport';
14
14
  import type { FeishuCardActionResponse } from './cards/pairing.js';
15
+ import type { FeishuBoundTeamSubmitOutcome } from './feishu-submit.js';
15
16
  import type { FeishuTarget } from './routing/target.js';
16
17
  import type { FeishuToolDef, FeishuToolResult } from './tools/types.js';
17
18
  export interface FeishuApi {
@@ -34,7 +35,8 @@ export interface FeishuExtension<S> {
34
35
  * that instance's state. Local IO only: the bot is not started yet and the
35
36
  * core channel contract forbids external IO during initialize. Of
36
37
  * `context.api`, only `owner` may be called here; outbound calls (`sendCard`,
37
- * `editCard`, `readMessageRoute`, `bindTeam`) wait for `start`.
38
+ * `editCard`, `readMessageRoute`, `bindTeam`) and input delivery
39
+ * (`submitToBoundTeam`) wait for `start`.
38
40
  */
39
41
  initialize(context: FeishuExtensionContext): Promise<S>;
40
42
  /**
@@ -128,6 +130,54 @@ export interface FeishuInstanceApi {
128
130
  teamName: string;
129
131
  display: string;
130
132
  }): Promise<void>;
133
+ /**
134
+ * Deliver input to the one Team this conversation still routes to, and
135
+ * answer with what Core said. This is the entry for work an extension does
136
+ * after a click and for input it produces from its own timer — neither needs
137
+ * a card callback, nor any other channel instance, nor a Core port of its
138
+ * own.
139
+ *
140
+ * `expectedTeamName` is both the precondition and the whole recipient set:
141
+ * the conversation must still route to exactly that Team, checked against
142
+ * committed routing (a topic counts its group's binding). Nothing here
143
+ * chooses another recipient, provisions a Team, drops a stale route, or
144
+ * retries. `target` is the address the caller already holds — from `sendCard`
145
+ * or `readMessageRoute` — and it becomes authoritative for the payload's
146
+ * `source`, `chat_id` and `thread_id`; `attrs` add identity and business
147
+ * metadata but cannot replace those.
148
+ *
149
+ * The answer is Core's actual admission result, never a boolean: submitted,
150
+ * duplicate, stopped, failed, ambiguous, a proven pre-admission rejection,
151
+ * or an unknown invocation error. `refused` is different in kind — this
152
+ * Channel proved no Command was sent, either because the instance was
153
+ * already closing (`closed`) or because the binding no longer says what the
154
+ * caller expected (`binding_changed`). Admission is not execution completion
155
+ * and not user receipt.
156
+ *
157
+ * `sourceId` is the identity Core deduplicates on, scoped to the recipient
158
+ * entity: retry one decision with the same id, give different decisions
159
+ * different ids, and an empty id means no deduplication. An omitted
160
+ * `reminder` uses the channel's standing note; an explicit string replaces
161
+ * it, and an empty string deliberately supplies none.
162
+ *
163
+ * This call claims no presentation anchor and opens no pre-admission receipt.
164
+ * Core can still project the input as an ordinary event, which the existing
165
+ * chain-of-thought rules render at whichever anchor already stands — an
166
+ * extension that wants a card of its own repaints it itself.
167
+ *
168
+ * Calls made once the instance begins closing answer `refused/closed` and
169
+ * invoke nothing; a Command already sent stays tracked and still returns its
170
+ * actual outcome, because an abort is not evidence that Core admitted
171
+ * nothing.
172
+ */
173
+ submitToBoundTeam(input: {
174
+ target: FeishuTarget;
175
+ expectedTeamName: string;
176
+ text: string;
177
+ sourceId: string;
178
+ attrs?: Readonly<Record<string, string>>;
179
+ reminder?: string;
180
+ }): Promise<FeishuBoundTeamSubmitOutcome>;
131
181
  /**
132
182
  * Send a card and report where Feishu placed it, read off the send
133
183
  * response itself. There is no idempotency key: a rejection can mean the
@@ -1 +1 @@
1
- {"version":3,"file":"extension.d.ts","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extension.d.ts","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"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"}
@@ -10,15 +10,15 @@
10
10
  */
11
11
  import type { AgentRuntimeInterruptOutcome, JsonInvoker, JsonValue, TeamCreateCommand, TeamSummary } from '@excitedjs/dreamux-types';
12
12
  import type { RunningTeamRow } from './cards/running-teams.js';
13
- import { type FeishuSubmission, type FeishuSubmitOutcome } from './feishu-submit.js';
13
+ import { type FeishuCommandSubmitOutcome, type FeishuSubmissionPayload } from './feishu-submit.js';
14
14
  export declare class FeishuCoreCommands implements JsonInvoker {
15
15
  private invoker;
16
16
  initialize(invoker: JsonInvoker): void;
17
17
  invoke(command: string, payload: JsonValue): Promise<JsonValue>;
18
18
  teamCreate(command: TeamCreateCommand): Promise<TeamSummary>;
19
19
  teamStatus(teamName: string): Promise<TeamSummary>;
20
- teamSubmit(teamName: string, submission: FeishuSubmission): Promise<FeishuSubmitOutcome>;
21
- dispatcherSubmit(submission: FeishuSubmission): Promise<FeishuSubmitOutcome>;
20
+ teamSubmit(teamName: string, submission: FeishuSubmissionPayload): Promise<FeishuCommandSubmitOutcome>;
21
+ dispatcherSubmit(submission: FeishuSubmissionPayload): Promise<FeishuCommandSubmitOutcome>;
22
22
  teamDissolve(input: {
23
23
  teamName: string;
24
24
  note: string;
@@ -1 +1 @@
1
- {"version":3,"file":"feishu-core-commands.d.ts","sourceRoot":"","sources":["../src/feishu-core-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EACV,4BAA4B,EAC5B,WAAW,EACX,SAAS,EAET,iBAAiB,EAEjB,WAAW,EACZ,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAIL,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACzB,MAAM,oBAAoB,CAAC;AAuC5B,qBAAa,kBAAmB,YAAW,WAAW;IACpD,OAAO,CAAC,OAAO,CAA0B;IAEzC,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAItC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IASzD,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC;IAM5D,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAKxD,UAAU,CACR,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,gBAAgB,GAC3B,OAAO,CAAC,mBAAmB,CAAC;IAM/B,gBAAgB,CAAC,UAAU,EAAE,gBAAgB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAOtE,YAAY,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAMtE,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,4BAA4B,CAAC;IAKtE,mBAAmB,IAAI,OAAO,CAAC,4BAA4B,CAAC;IAM5D,QAAQ,IAAI,OAAO,CAAC,SAAS,cAAc,EAAE,CAAC;CAMrD"}
1
+ {"version":3,"file":"feishu-core-commands.d.ts","sourceRoot":"","sources":["../src/feishu-core-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EACV,4BAA4B,EAC5B,WAAW,EACX,SAAS,EAET,iBAAiB,EAEjB,WAAW,EACZ,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAIL,KAAK,0BAA0B,EAC/B,KAAK,uBAAuB,EAC7B,MAAM,oBAAoB,CAAC;AAyC5B,qBAAa,kBAAmB,YAAW,WAAW;IACpD,OAAO,CAAC,OAAO,CAA0B;IAEzC,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAItC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IASzD,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC;IAM5D,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAKxD,UAAU,CACR,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,uBAAuB,GAClC,OAAO,CAAC,0BAA0B,CAAC;IAMtC,gBAAgB,CACd,UAAU,EAAE,uBAAuB,GAClC,OAAO,CAAC,0BAA0B,CAAC;IAOhC,YAAY,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAMtE,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,4BAA4B,CAAC;IAKtE,mBAAmB,IAAI,OAAO,CAAC,4BAA4B,CAAC;IAM5D,QAAQ,IAAI,OAAO,CAAC,SAAS,cAAc,EAAE,CAAC;CAMrD"}
@@ -5,7 +5,7 @@ import { commandErrorCode, errorMessage, submitOutcome, } from './feishu-submit.
5
5
  * the source id Core deduplicates on. `teamSubmit` spreads `team_name` onto
6
6
  * this; `dispatcherSubmit` sends it as-is.
7
7
  */
8
- function chatSubmission(submission) {
8
+ function submitCommandPayload(submission) {
9
9
  return {
10
10
  attrs: submission.attrs,
11
11
  text: submission.text,
@@ -53,11 +53,11 @@ export class FeishuCoreCommands {
53
53
  teamSubmit(teamName, submission) {
54
54
  return submitOutcomeFor(this, 'team.submit', {
55
55
  team_name: teamName,
56
- ...chatSubmission(submission),
56
+ ...submitCommandPayload(submission),
57
57
  });
58
58
  }
59
59
  dispatcherSubmit(submission) {
60
- return submitOutcomeFor(this, 'dispatcher.submit', chatSubmission(submission));
60
+ return submitOutcomeFor(this, 'dispatcher.submit', submitCommandPayload(submission));
61
61
  }
62
62
  async teamDissolve(input) {
63
63
  await this.invoke('team.dissolve', {
@@ -1 +1 @@
1
- {"version":3,"file":"feishu-core-commands.js","sourceRoot":"","sources":["../src/feishu-core-commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"feishu-core-commands.js","sourceRoot":"","sources":["../src/feishu-core-commands.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import type { ChannelMcpCaller, ChannelMcpToolRegistration, DreamuxLogger } from
2
2
  import type { FeishuCardActionEvent } from '@excitedjs/feishu-transport';
3
3
  import type { FeishuBot } from './bot.js';
4
4
  import type { FeishuExtension, FeishuExtensionActionResult, FeishuExtensionTool, FeishuInstanceApi } from './extension.js';
5
- import type { FeishuInboundTargeting } from './inbound/target.js';
5
+ import type { FeishuCoreCommands } from './feishu-core-commands.js';
6
6
  import { type FeishuOutbound } from './outbound/index.js';
7
7
  import type { FeishuRouting } from './routing/index.js';
8
8
  import type { FeishuBindingOperations } from './routing/operations.js';
@@ -86,9 +86,9 @@ export declare function buildInstanceApi(input: {
86
86
  outbound: FeishuOutbound;
87
87
  /** Card repaint (`editCard`) reaches the bot directly; see `outbound/index.ts`'s header. */
88
88
  bot: Pick<FeishuBot, 'editCard'>;
89
- targetRouter: Pick<FeishuInboundTargeting, 'project'>;
90
89
  routing: FeishuRouting;
91
90
  bindings: FeishuBindingOperations;
91
+ commands: FeishuCoreCommands;
92
92
  }): FeishuInstanceApi;
93
93
  export {};
94
94
  //# sourceMappingURL=feishu-extensions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"feishu-extensions.d.ts","sourceRoot":"","sources":["../src/feishu-extensions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"feishu-extensions.d.ts","sourceRoot":"","sources":["../src/feishu-extensions.ts"],"names":[],"mappings":"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"}
@@ -9,8 +9,10 @@
9
9
  */
10
10
  import { join } from 'node:path';
11
11
  import { builtinCardAction } from './card-actions.js';
12
+ import { CHANNEL_REMINDER, } from './feishu-submit.js';
12
13
  import { agentSender } from './outbound/index.js';
13
14
  import { channelPathSegment } from './routing/store.js';
15
+ import { messageTarget } from './routing/target.js';
14
16
  import { findFeishuTool, toolRegistration } from './tools/registry.js';
15
17
  export class FeishuExtensionRegistry {
16
18
  extensions = [];
@@ -182,6 +184,34 @@ export class FeishuSessionExtensions {
182
184
  }
183
185
  }
184
186
  }
187
+ /**
188
+ * Where one extension delivery says its input came from: the checked target's
189
+ * own address, with the caller's metadata underneath it.
190
+ *
191
+ * A caller supplies identity and business fields, but not these three — the
192
+ * operation already holds the conversation it verified, and a caller that
193
+ * overrode `chat_id` or invented a `thread_id` for a conversation that has
194
+ * none would state provenance the Channel knows to be false.
195
+ *
196
+ * The result is built with `Object.fromEntries`, never by assigning onto a
197
+ * plain object: attribute names are an open caller-chosen string set, so an
198
+ * own `__proto__` key is ordinary metadata — the same shape and the same
199
+ * construction Core's own `channel-submission.ts` reader keeps, and one that
200
+ * `canonicalJsonValue` carries across the Command boundary as data.
201
+ */
202
+ function deliveryAttrs(target, attrs) {
203
+ const fields = [];
204
+ for (const [name, value] of Object.entries(attrs ?? {})) {
205
+ if (name !== 'source' && name !== 'chat_id' && name !== 'thread_id') {
206
+ fields.push([name, value]);
207
+ }
208
+ }
209
+ fields.push(['source', 'feishu'], ['chat_id', target.chatId]);
210
+ if (target.threadId !== undefined) {
211
+ fields.push(['thread_id', target.threadId]);
212
+ }
213
+ return Object.fromEntries(fields);
214
+ }
185
215
  /**
186
216
  * The instance api for one session lifecycle. `lifecycle` is that session's
187
217
  * one liveness value, so every outbound call made after the instance began
@@ -189,16 +219,17 @@ export class FeishuSessionExtensions {
189
219
  * check, not a second one re-derived here.
190
220
  */
191
221
  export function buildInstanceApi(input) {
192
- const { lifecycle, outbound, bot, targetRouter, routing, bindings } = input;
222
+ const { lifecycle, outbound, bot, routing, bindings, commands } = input;
193
223
  return {
194
224
  owner(target) {
195
- const plan = routing.plan(target, null);
225
+ // Binding-only: ownership is a routing-row fact, never permission to
226
+ // provision, which no caller of this check is asking for.
227
+ const plan = routing.plan(target, false);
196
228
  return plan.kind === 'bound' ? plan.teamName : null;
197
229
  },
198
230
  async readMessageRoute(messageId) {
199
231
  lifecycle.assertLive();
200
- const route = await outbound.locate(messageId);
201
- return { target: route.target };
232
+ return { target: await outbound.locate(messageId) };
202
233
  },
203
234
  async bindTeam({ target, teamName, display }) {
204
235
  lifecycle.assertLive();
@@ -206,6 +237,31 @@ export function buildInstanceApi(input) {
206
237
  // which must not land after the instance closed its routing store.
207
238
  await lifecycle.track(bindings.bindChannel({ target, teamName, display }));
208
239
  },
240
+ submitToBoundTeam({ target, expectedTeamName, text, sourceId, attrs, reminder, }) {
241
+ // Checked, captured and invoked in one synchronous turn: nothing between
242
+ // the plan and the Command can run, so the Team the call reaches is the
243
+ // Team this check saw. A binding committed afterwards retargets the next
244
+ // call, never this one. The plan is binding-only (`canProvision=false`):
245
+ // this call delivers to a Team the conversation already routes to and
246
+ // never opens one.
247
+ if (!lifecycle.isLive()) {
248
+ return Promise.resolve({ status: 'refused', reason: 'closed' });
249
+ }
250
+ const plan = routing.plan(target, false);
251
+ if (plan.kind !== 'bound' || plan.teamName !== expectedTeamName) {
252
+ return Promise.resolve({
253
+ status: 'refused',
254
+ reason: 'binding_changed',
255
+ });
256
+ }
257
+ const submission = {
258
+ attrs: deliveryAttrs(target, attrs),
259
+ text,
260
+ reminder: reminder ?? CHANNEL_REMINDER,
261
+ sourceId,
262
+ };
263
+ return lifecycle.track(commands.teamSubmit(plan.teamName, submission));
264
+ },
209
265
  async sendCard({ chatId, replyTo, card, caller }) {
210
266
  const sent = await outbound.sendCard({
211
267
  target: {
@@ -219,14 +275,15 @@ export function buildInstanceApi(input) {
219
275
  if (sentMessage === undefined) {
220
276
  throw new Error('Feishu returned no message id for the sent card');
221
277
  }
222
- // Where the card landed, from Feishu's own send response: a chat-mode
223
- // lookup only for a chat this session has not already resolved, no
224
- // second `readMessage` round trip.
225
- const { target } = await targetRouter.project({
226
- chatId: sentMessage.chatId,
227
- threadId: sentMessage.threadId,
228
- });
229
- return { messageId: sentMessage.messageId, target };
278
+ // Where the card landed, composed from Feishu's own send response:
279
+ // identity only, so no group-format lookup and no format warning.
280
+ return {
281
+ messageId: sentMessage.messageId,
282
+ target: messageTarget({
283
+ chatId: sentMessage.chatId,
284
+ threadId: sentMessage.threadId,
285
+ }),
286
+ };
230
287
  },
231
288
  async editCard(messageId, card) {
232
289
  lifecycle.assertLive();
@@ -1 +1 @@
1
- {"version":3,"file":"feishu-extensions.js","sourceRoot":"","sources":["../src/feishu-extensions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"feishu-extensions.js","sourceRoot":"","sources":["../src/feishu-extensions.ts"],"names":[],"mappings":"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"}
@@ -40,7 +40,17 @@ export declare const DOC_COMMENT_REMINDER: string;
40
40
  * the only path that carries it.
41
41
  */
42
42
  export declare const DOC_COMMENT_COLD_OPEN_REMINDER: string;
43
- interface FeishuSubmissionBase {
43
+ /**
44
+ * The submission fields one submit Command carries: everything Core reads, and
45
+ * nothing about how this Channel presents the turn.
46
+ *
47
+ * It is separate from `FeishuSubmission` below because presentation and payload
48
+ * are independent axes. The two shapes this Channel produces for ordinary
49
+ * traffic differ only in their presentation branch, and an extension's
50
+ * expected-Team delivery has no presentation branch at all while handing Core
51
+ * the same payload. `FeishuCoreCommands` consumes this shape, never the union.
52
+ */
53
+ export interface FeishuSubmissionPayload {
44
54
  readonly attrs: Readonly<Record<string, string>>;
45
55
  readonly text: string;
46
56
  readonly reminder: string;
@@ -56,11 +66,11 @@ interface FeishuSubmissionBase {
56
66
  * would let a later caller forget the branch and open a chain-of-thought card
57
67
  * with nowhere to hang it; a union does not compile.
58
68
  */
59
- export type FeishuSubmission = (FeishuSubmissionBase & {
69
+ export type FeishuSubmission = (FeishuSubmissionPayload & {
60
70
  readonly kind: 'chat';
61
71
  /** The visible Feishu message this turn's presentation hangs under. */
62
72
  readonly anchor: Omit<VisibleMessageAnchor, 'servingTarget'>;
63
- }) | (FeishuSubmissionBase & {
73
+ }) | (FeishuSubmissionPayload & {
64
74
  readonly kind: 'doc_comment';
65
75
  });
66
76
  /** A submission that came from a chat, and therefore carries a visible anchor. */
@@ -80,7 +90,16 @@ export declare function chatSubmission(input: {
80
90
  sourceId: string;
81
91
  anchor: Omit<VisibleMessageAnchor, 'servingTarget'>;
82
92
  }): FeishuChatSubmission;
83
- export type FeishuSubmitOutcome = {
93
+ /**
94
+ * What a submit Command itself answers — the subset of `FeishuSubmitOutcome`
95
+ * that comes from Core rather than from this Channel's own provisioning run.
96
+ *
97
+ * It is named once because two callers now produce it: the ordinary submitter
98
+ * and an extension's expected-Team delivery. `team.submit` and
99
+ * `dispatcher.submit` both answer it, and neither may widen it into the
100
+ * provisioning-only `unsubmitted` member below.
101
+ */
102
+ export type FeishuCommandSubmitOutcome = {
84
103
  readonly status: 'submitted';
85
104
  readonly turnId: string | null;
86
105
  } | {
@@ -101,6 +120,17 @@ export type FeishuSubmitOutcome = {
101
120
  readonly code: 'TEAM_NOT_FOUND' | 'TEAM_CLOSED';
102
121
  readonly message: string;
103
122
  }
123
+ /**
124
+ * Any other failure, including an unknown boundary. Never retried and never
125
+ * re-routed: once Core has been called, a failure proves nothing about
126
+ * whether a turn exists, and this Channel does not deliver a message a
127
+ * second time on a guess.
128
+ */
129
+ | {
130
+ readonly status: 'error';
131
+ readonly message: string;
132
+ };
133
+ export type FeishuSubmitOutcome = FeishuCommandSubmitOutcome
104
134
  /**
105
135
  * Automatic provisioning produced no recipient, and `team.submit` was never
106
136
  * invoked for this message.
@@ -114,16 +144,20 @@ export type FeishuSubmitOutcome = {
114
144
  | {
115
145
  readonly status: 'unsubmitted';
116
146
  readonly message: string;
117
- }
147
+ };
118
148
  /**
119
- * Any other failure, including an unknown boundary. Never retried and never
120
- * re-routed: once Core has been called, a failure proves nothing about
121
- * whether a turn exists, and this Channel does not deliver a message a
122
- * second time on a guess.
149
+ * What one extension's expected-Team delivery answers.
150
+ *
151
+ * The command outcome, unchanged, or a refusal this Channel made without
152
+ * invoking Core at all: `closed` once the instance began closing, and
153
+ * `binding_changed` when the conversation no longer routes to the expected
154
+ * Team. A refusal therefore proves this operation sent nothing, which no Core
155
+ * answer above establishes — and it is not provisioning's `unsubmitted`, which
156
+ * is a fact about a provisioning run that produced no recipient.
123
157
  */
124
- | {
125
- readonly status: 'error';
126
- readonly message: string;
158
+ export type FeishuBoundTeamSubmitOutcome = FeishuCommandSubmitOutcome | {
159
+ readonly status: 'refused';
160
+ readonly reason: 'closed' | 'binding_changed';
127
161
  };
128
162
  /**
129
163
  * What one outcome is, once the question is what a log line owes it.
@@ -160,7 +194,7 @@ export declare function describeSubmitOutcome(outcome: FeishuSubmitOutcome): Sub
160
194
  * means here: some outcomes prove the optimistic Channel anchor must be
161
195
  * retired, while an ambiguous result proves nothing and leaves it unchanged.
162
196
  */
163
- export declare function submitOutcome(result: TeamSubmitResult): FeishuSubmitOutcome;
197
+ export declare function submitOutcome(result: TeamSubmitResult): FeishuCommandSubmitOutcome;
164
198
  export declare function submissionProvesNoAdmission(outcome: FeishuSubmitOutcome): boolean;
165
199
  /** Read a rejected Command's code without assuming an error class. */
166
200
  export declare function commandErrorCode(error: unknown): string | null;
@@ -183,7 +217,7 @@ export interface FeishuInboundDelivery {
183
217
  command(input: {
184
218
  command: FeishuSlashCommandInvocation;
185
219
  target: FeishuTarget;
186
- containerChatId: string | null;
220
+ canProvision: boolean;
187
221
  /**
188
222
  * The message the command was parsed from. A command whose own effect
189
223
  * announces into a conversation with no root of its own yet (a topic
@@ -200,15 +234,14 @@ export interface FeishuInboundDelivery {
200
234
  * turned out stale, or the bound Team's TeamLeader. A provisioning run that
201
235
  * never produces a Team answers `unsubmitted` (or `rejected` when the
202
236
  * just-provisioned Team refuses the submission), and the inbound path posts a
203
- * failure notice under the triggering message instead. `containerChatId` is
204
- * the parent chat a topic belongs to, which is what a Collaboration Space is
205
- * keyed by.
237
+ * failure notice under the triggering message instead. `canProvision` is the
238
+ * projection's fresh eligibility observation: only a still-unbound topic in
239
+ * a currently verified topic message format may enter provisioning.
206
240
  */
207
241
  deliver(input: {
208
242
  target: FeishuTarget;
209
- containerChatId: string | null;
243
+ canProvision: boolean;
210
244
  submission: FeishuChatSubmission;
211
245
  }): Promise<FeishuSubmitOutcome>;
212
246
  }
213
- export {};
214
247
  //# sourceMappingURL=feishu-submit.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"feishu-submit.d.ts","sourceRoot":"","sources":["../src/feishu-submit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"feishu-submit.d.ts","sourceRoot":"","sources":["../src/feishu-submit.ts"],"names":[],"mappings":"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"}