@tianshu-ai/tianshu 0.3.37 → 0.3.39

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 (35) hide show
  1. package/node_modules/@tianshu-ai/plugin-sdk/dist/channel-bindings.d.ts +18 -5
  2. package/node_modules/@tianshu-ai/plugin-sdk/dist/channel-bindings.d.ts.map +1 -1
  3. package/node_modules/@tianshu-ai/plugin-sdk/src/channel-bindings.ts +17 -5
  4. package/package.json +1 -1
  5. package/packages/plugin-sdk/dist/channel-bindings.d.ts +18 -5
  6. package/packages/plugin-sdk/dist/channel-bindings.d.ts.map +1 -1
  7. package/packages/server/dist/channels/bindings.d.ts +8 -2
  8. package/packages/server/dist/channels/bindings.d.ts.map +1 -1
  9. package/packages/server/dist/channels/bindings.js +22 -7
  10. package/packages/server/dist/channels/bindings.js.map +1 -1
  11. package/packages/server/dist/channels/index.d.ts +1 -1
  12. package/packages/server/dist/channels/index.d.ts.map +1 -1
  13. package/packages/server/dist/channels/index.js +1 -1
  14. package/packages/server/dist/channels/index.js.map +1 -1
  15. package/packages/server/dist/channels/sessions.d.ts.map +1 -1
  16. package/packages/server/dist/channels/sessions.js +19 -9
  17. package/packages/server/dist/channels/sessions.js.map +1 -1
  18. package/packages/server/dist/channels/types.d.ts +4 -0
  19. package/packages/server/dist/channels/types.d.ts.map +1 -1
  20. package/packages/server/dist/core/migrations/011-channel-bindings-owner.d.ts +4 -0
  21. package/packages/server/dist/core/migrations/011-channel-bindings-owner.d.ts.map +1 -0
  22. package/packages/server/dist/core/migrations/011-channel-bindings-owner.js +62 -0
  23. package/packages/server/dist/core/migrations/011-channel-bindings-owner.js.map +1 -0
  24. package/packages/server/dist/core/migrations/012-channel-bindings-unique.d.ts +4 -0
  25. package/packages/server/dist/core/migrations/012-channel-bindings-unique.d.ts.map +1 -0
  26. package/packages/server/dist/core/migrations/012-channel-bindings-unique.js +22 -0
  27. package/packages/server/dist/core/migrations/012-channel-bindings-unique.js.map +1 -0
  28. package/packages/server/dist/core/migrations/index.d.ts.map +1 -1
  29. package/packages/server/dist/core/migrations/index.js +4 -0
  30. package/packages/server/dist/core/migrations/index.js.map +1 -1
  31. package/packages/server/dist/index.js +45 -6
  32. package/packages/server/dist/index.js.map +1 -1
  33. package/plugins/wechat/dist/server.d.ts.map +1 -1
  34. package/plugins/wechat/dist/server.js +27 -5
  35. package/plugins/wechat/dist/server.js.map +1 -1
@@ -6,6 +6,12 @@ export interface ChannelBindingView {
6
6
  id: string;
7
7
  /** Tenant this binding belongs to. */
8
8
  tenantId: string;
9
+ /** The user this binding belongs to. Channel accounts (a wechat
10
+ * login, a telegram bot token, ...) are personal credentials —
11
+ * one user binding their phone shouldn't surface that account
12
+ * to other users on the same tenant. The host scopes list /
13
+ * delete to this id. */
14
+ ownerUserId: string;
9
15
  /** Channel id ("wechat" / "telegram" / ...). */
10
16
  channelId: string;
11
17
  /** Plugin id that contributes the channel. */
@@ -24,6 +30,11 @@ export interface ChannelBindingView {
24
30
  updatedAt: number;
25
31
  }
26
32
  export interface CreateChannelBindingInput {
33
+ /** Per-user scope. Channel credentials are personal — the host
34
+ * refuses any operation where the caller-supplied userId doesn't
35
+ * own the targeted binding. Plugin admin routes get this from
36
+ * `req.ctx.userId` (set by the host's tenant middleware). */
37
+ ownerUserId: string;
27
38
  channelId: string;
28
39
  pluginId: string;
29
40
  displayName?: string;
@@ -36,12 +47,14 @@ export interface ChannelBindingsCapability {
36
47
  /** Create + start a binding in one call. Returns the row the
37
48
  * host persisted. */
38
49
  create(input: CreateChannelBindingInput): Promise<ChannelBindingView>;
39
- /** Enumerate bindings for the calling tenant. */
40
- list(opts?: {
50
+ /** Enumerate the calling user's bindings. */
51
+ list(opts: {
52
+ ownerUserId: string;
41
53
  channelId?: string;
42
54
  }): ChannelBindingView[];
43
- /** Stop the adapter, delete the row. Returns true if anything
44
- * was removed. */
45
- delete(bindingId: string): Promise<boolean>;
55
+ /** Stop the adapter, delete the row. Refuses the operation when
56
+ * the binding doesn't belong to the supplied user. Returns true
57
+ * if anything was removed. */
58
+ delete(bindingId: string, ownerUserId: string): Promise<boolean>;
46
59
  }
47
60
  //# sourceMappingURL=channel-bindings.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"channel-bindings.d.ts","sourceRoot":"","sources":["../src/channel-bindings.ts"],"names":[],"mappings":"AAiBA;;yDAEyD;AACzD,MAAM,WAAW,kBAAkB;IACjC,iCAAiC;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,sCAAsC;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,gEAAgE;IAChE,OAAO,EAAE,OAAO,CAAC;IACjB,gDAAgD;IAChD,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IAC9D,yEAAyE;IACzE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC;8CAC0C;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC;0BACsB;IACtB,MAAM,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACtE,iDAAiD;IACjD,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,kBAAkB,EAAE,CAAC;IAC1D;uBACmB;IACnB,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC7C"}
1
+ {"version":3,"file":"channel-bindings.d.ts","sourceRoot":"","sources":["../src/channel-bindings.ts"],"names":[],"mappings":"AAiBA;;yDAEyD;AACzD,MAAM,WAAW,kBAAkB;IACjC,iCAAiC;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,sCAAsC;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;6BAIyB;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,gEAAgE;IAChE,OAAO,EAAE,OAAO,CAAC;IACjB,gDAAgD;IAChD,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IAC9D,yEAAyE;IACzE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC;;;kEAG8D;IAC9D,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC;8CAC0C;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC;0BACsB;IACtB,MAAM,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACtE,6CAA6C;IAC7C,IAAI,CAAC,IAAI,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,kBAAkB,EAAE,CAAC;IAC9E;;mCAE+B;IAC/B,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAClE"}
@@ -23,6 +23,12 @@ export interface ChannelBindingView {
23
23
  id: string;
24
24
  /** Tenant this binding belongs to. */
25
25
  tenantId: string;
26
+ /** The user this binding belongs to. Channel accounts (a wechat
27
+ * login, a telegram bot token, ...) are personal credentials —
28
+ * one user binding their phone shouldn't surface that account
29
+ * to other users on the same tenant. The host scopes list /
30
+ * delete to this id. */
31
+ ownerUserId: string;
26
32
  /** Channel id ("wechat" / "telegram" / ...). */
27
33
  channelId: string;
28
34
  /** Plugin id that contributes the channel. */
@@ -42,6 +48,11 @@ export interface ChannelBindingView {
42
48
  }
43
49
 
44
50
  export interface CreateChannelBindingInput {
51
+ /** Per-user scope. Channel credentials are personal — the host
52
+ * refuses any operation where the caller-supplied userId doesn't
53
+ * own the targeted binding. Plugin admin routes get this from
54
+ * `req.ctx.userId` (set by the host's tenant middleware). */
55
+ ownerUserId: string;
45
56
  channelId: string;
46
57
  pluginId: string;
47
58
  displayName?: string;
@@ -55,9 +66,10 @@ export interface ChannelBindingsCapability {
55
66
  /** Create + start a binding in one call. Returns the row the
56
67
  * host persisted. */
57
68
  create(input: CreateChannelBindingInput): Promise<ChannelBindingView>;
58
- /** Enumerate bindings for the calling tenant. */
59
- list(opts?: { channelId?: string }): ChannelBindingView[];
60
- /** Stop the adapter, delete the row. Returns true if anything
61
- * was removed. */
62
- delete(bindingId: string): Promise<boolean>;
69
+ /** Enumerate the calling user's bindings. */
70
+ list(opts: { ownerUserId: string; channelId?: string }): ChannelBindingView[];
71
+ /** Stop the adapter, delete the row. Refuses the operation when
72
+ * the binding doesn't belong to the supplied user. Returns true
73
+ * if anything was removed. */
74
+ delete(bindingId: string, ownerUserId: string): Promise<boolean>;
63
75
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tianshu-ai/tianshu",
3
- "version": "0.3.37",
3
+ "version": "0.3.39",
4
4
  "description": "An open AI agent platform with a sidecar browser. Built in public.",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://github.com/tianshu-ai/tianshu",
@@ -6,6 +6,12 @@ export interface ChannelBindingView {
6
6
  id: string;
7
7
  /** Tenant this binding belongs to. */
8
8
  tenantId: string;
9
+ /** The user this binding belongs to. Channel accounts (a wechat
10
+ * login, a telegram bot token, ...) are personal credentials —
11
+ * one user binding their phone shouldn't surface that account
12
+ * to other users on the same tenant. The host scopes list /
13
+ * delete to this id. */
14
+ ownerUserId: string;
9
15
  /** Channel id ("wechat" / "telegram" / ...). */
10
16
  channelId: string;
11
17
  /** Plugin id that contributes the channel. */
@@ -24,6 +30,11 @@ export interface ChannelBindingView {
24
30
  updatedAt: number;
25
31
  }
26
32
  export interface CreateChannelBindingInput {
33
+ /** Per-user scope. Channel credentials are personal — the host
34
+ * refuses any operation where the caller-supplied userId doesn't
35
+ * own the targeted binding. Plugin admin routes get this from
36
+ * `req.ctx.userId` (set by the host's tenant middleware). */
37
+ ownerUserId: string;
27
38
  channelId: string;
28
39
  pluginId: string;
29
40
  displayName?: string;
@@ -36,12 +47,14 @@ export interface ChannelBindingsCapability {
36
47
  /** Create + start a binding in one call. Returns the row the
37
48
  * host persisted. */
38
49
  create(input: CreateChannelBindingInput): Promise<ChannelBindingView>;
39
- /** Enumerate bindings for the calling tenant. */
40
- list(opts?: {
50
+ /** Enumerate the calling user's bindings. */
51
+ list(opts: {
52
+ ownerUserId: string;
41
53
  channelId?: string;
42
54
  }): ChannelBindingView[];
43
- /** Stop the adapter, delete the row. Returns true if anything
44
- * was removed. */
45
- delete(bindingId: string): Promise<boolean>;
55
+ /** Stop the adapter, delete the row. Refuses the operation when
56
+ * the binding doesn't belong to the supplied user. Returns true
57
+ * if anything was removed. */
58
+ delete(bindingId: string, ownerUserId: string): Promise<boolean>;
46
59
  }
47
60
  //# sourceMappingURL=channel-bindings.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"channel-bindings.d.ts","sourceRoot":"","sources":["../src/channel-bindings.ts"],"names":[],"mappings":"AAiBA;;yDAEyD;AACzD,MAAM,WAAW,kBAAkB;IACjC,iCAAiC;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,sCAAsC;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,gEAAgE;IAChE,OAAO,EAAE,OAAO,CAAC;IACjB,gDAAgD;IAChD,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IAC9D,yEAAyE;IACzE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC;8CAC0C;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC;0BACsB;IACtB,MAAM,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACtE,iDAAiD;IACjD,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,kBAAkB,EAAE,CAAC;IAC1D;uBACmB;IACnB,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC7C"}
1
+ {"version":3,"file":"channel-bindings.d.ts","sourceRoot":"","sources":["../src/channel-bindings.ts"],"names":[],"mappings":"AAiBA;;yDAEyD;AACzD,MAAM,WAAW,kBAAkB;IACjC,iCAAiC;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,sCAAsC;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;6BAIyB;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,gEAAgE;IAChE,OAAO,EAAE,OAAO,CAAC;IACjB,gDAAgD;IAChD,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IAC9D,yEAAyE;IACzE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC;;;kEAG8D;IAC9D,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC;8CAC0C;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC;0BACsB;IACtB,MAAM,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACtE,6CAA6C;IAC7C,IAAI,CAAC,IAAI,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,kBAAkB,EAAE,CAAC;IAC9E;;mCAE+B;IAC/B,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAClE"}
@@ -1,7 +1,12 @@
1
1
  import type { Database } from "better-sqlite3";
2
2
  import type { BindingStatus, ChannelBinding } from "./types.js";
3
- /** List every binding visible to a tenant. Disabled rows are
4
- * included; callers filter as needed. */
3
+ /** List every binding for one user within a tenant. Channel
4
+ * credentials are personal; admins typically don't want one user's
5
+ * scan to surface to another. */
6
+ export declare function listBindingsForUser(db: Database, tenantId: string, ownerUserId: string): ChannelBinding[];
7
+ /** Tenant-wide listing — used by the boot path which still needs
8
+ * to know every binding to start. Per-user filtering happens
9
+ * inside the capability + API layer. */
5
10
  export declare function listBindingsForTenant(db: Database, tenantId: string): ChannelBinding[];
6
11
  /** List every binding the host should start at boot. */
7
12
  export declare function listEnabledBindings(db: Database): ChannelBinding[];
@@ -9,6 +14,7 @@ export declare function listEnabledBindings(db: Database): ChannelBinding[];
9
14
  export declare function getBinding(db: Database, bindingId: string): ChannelBinding | null;
10
15
  export interface CreateBindingInput {
11
16
  tenantId: string;
17
+ ownerUserId: string;
12
18
  channelId: string;
13
19
  pluginId: string;
14
20
  displayName?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"bindings.d.ts","sourceRoot":"","sources":["../../src/channels/bindings.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AA4ChE;0CAC0C;AAC1C,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,QAAQ,EACZ,QAAQ,EAAE,MAAM,GACf,cAAc,EAAE,CAWlB;AAED,wDAAwD;AACxD,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,QAAQ,GAAG,cAAc,EAAE,CAWlE;AAED,sCAAsC;AACtC,wBAAgB,UAAU,CACxB,EAAE,EAAE,QAAQ,EACZ,SAAS,EAAE,MAAM,GAChB,cAAc,GAAG,IAAI,CASvB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,6DAA6D;AAC7D,wBAAgB,aAAa,CAC3B,EAAE,EAAE,QAAQ,EACZ,KAAK,EAAE,kBAAkB,GACxB,cAAc,CAoBhB;AAED;gEACgE;AAChE,MAAM,WAAW,kBAAkB;IACjC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,aAAa,CAC3B,EAAE,EAAE,QAAQ,EACZ,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,kBAAkB,GACxB,IAAI,CAsBN;AAED;;8CAE8C;AAC9C,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,QAAQ,EACZ,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,aAAa,EACrB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GACrB,IAAI,CAMN;AAED;gEACgE;AAChE,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAInE"}
1
+ {"version":3,"file":"bindings.d.ts","sourceRoot":"","sources":["../../src/channels/bindings.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AA8ChE;;kCAEkC;AAClC,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,QAAQ,EACZ,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,cAAc,EAAE,CAWlB;AAED;;yCAEyC;AACzC,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,QAAQ,EACZ,QAAQ,EAAE,MAAM,GACf,cAAc,EAAE,CAWlB;AAED,wDAAwD;AACxD,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,QAAQ,GAAG,cAAc,EAAE,CAWlE;AAED,sCAAsC;AACtC,wBAAgB,UAAU,CACxB,EAAE,EAAE,QAAQ,EACZ,SAAS,EAAE,MAAM,GAChB,cAAc,GAAG,IAAI,CASvB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,6DAA6D;AAC7D,wBAAgB,aAAa,CAC3B,EAAE,EAAE,QAAQ,EACZ,KAAK,EAAE,kBAAkB,GACxB,cAAc,CAwBhB;AAED;gEACgE;AAChE,MAAM,WAAW,kBAAkB;IACjC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,aAAa,CAC3B,EAAE,EAAE,QAAQ,EACZ,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,kBAAkB,GACxB,IAAI,CAsBN;AAED;;8CAE8C;AAC9C,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,QAAQ,EACZ,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,aAAa,EACrB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GACrB,IAAI,CAMN;AAED;gEACgE;AAChE,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAInE"}
@@ -16,6 +16,7 @@ function rowToBinding(row) {
16
16
  return {
17
17
  id: row.id,
18
18
  tenantId: row.tenant_id,
19
+ ownerUserId: row.owner_user_id,
19
20
  channelId: row.channel_id,
20
21
  pluginId: row.plugin_id,
21
22
  displayName: row.display_name,
@@ -39,11 +40,25 @@ function parseConfig(json) {
39
40
  }
40
41
  return {};
41
42
  }
42
- /** List every binding visible to a tenant. Disabled rows are
43
- * included; callers filter as needed. */
43
+ /** List every binding for one user within a tenant. Channel
44
+ * credentials are personal; admins typically don't want one user's
45
+ * scan to surface to another. */
46
+ export function listBindingsForUser(db, tenantId, ownerUserId) {
47
+ const rows = db
48
+ .prepare(`SELECT id, tenant_id, owner_user_id, channel_id, plugin_id, display_name, config,
49
+ enabled, status, status_detail, created_at, updated_at
50
+ FROM channel_bindings
51
+ WHERE tenant_id = ? AND owner_user_id = ?
52
+ ORDER BY created_at ASC`)
53
+ .all(tenantId, ownerUserId);
54
+ return rows.map(rowToBinding);
55
+ }
56
+ /** Tenant-wide listing — used by the boot path which still needs
57
+ * to know every binding to start. Per-user filtering happens
58
+ * inside the capability + API layer. */
44
59
  export function listBindingsForTenant(db, tenantId) {
45
60
  const rows = db
46
- .prepare(`SELECT id, tenant_id, channel_id, plugin_id, display_name, config,
61
+ .prepare(`SELECT id, tenant_id, owner_user_id, channel_id, plugin_id, display_name, config,
47
62
  enabled, status, status_detail, created_at, updated_at
48
63
  FROM channel_bindings
49
64
  WHERE tenant_id = ?
@@ -54,7 +69,7 @@ export function listBindingsForTenant(db, tenantId) {
54
69
  /** List every binding the host should start at boot. */
55
70
  export function listEnabledBindings(db) {
56
71
  const rows = db
57
- .prepare(`SELECT id, tenant_id, channel_id, plugin_id, display_name, config,
72
+ .prepare(`SELECT id, tenant_id, owner_user_id, channel_id, plugin_id, display_name, config,
58
73
  enabled, status, status_detail, created_at, updated_at
59
74
  FROM channel_bindings
60
75
  WHERE enabled = 1
@@ -65,7 +80,7 @@ export function listEnabledBindings(db) {
65
80
  /** Look up a single binding by id. */
66
81
  export function getBinding(db, bindingId) {
67
82
  const row = db
68
- .prepare(`SELECT id, tenant_id, channel_id, plugin_id, display_name, config,
83
+ .prepare(`SELECT id, tenant_id, owner_user_id, channel_id, plugin_id, display_name, config,
69
84
  enabled, status, status_detail, created_at, updated_at
70
85
  FROM channel_bindings WHERE id = ?`)
71
86
  .get(bindingId);
@@ -76,9 +91,9 @@ export function createBinding(db, input) {
76
91
  const id = `cb_${randomUUID()}`;
77
92
  const now = Date.now();
78
93
  db.prepare(`INSERT INTO channel_bindings
79
- (id, tenant_id, channel_id, plugin_id, display_name, config,
94
+ (id, tenant_id, owner_user_id, channel_id, plugin_id, display_name, config,
80
95
  enabled, status, created_at, updated_at)
81
- VALUES (?, ?, ?, ?, ?, ?, ?, 'idle', ?, ?)`).run(id, input.tenantId, input.channelId, input.pluginId, input.displayName ?? null, JSON.stringify(input.config ?? {}), input.enabled === false ? 0 : 1, now, now);
96
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, 'idle', ?, ?)`).run(id, input.tenantId, input.ownerUserId, input.channelId, input.pluginId, input.displayName ?? null, JSON.stringify(input.config ?? {}), input.enabled === false ? 0 : 1, now, now);
82
97
  return getBinding(db, id);
83
98
  }
84
99
  export function updateBinding(db, bindingId, patch) {
@@ -1 +1 @@
1
- {"version":3,"file":"bindings.js","sourceRoot":"","sources":["../../src/channels/bindings.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,EAAE;AACF,qEAAqE;AACrE,mEAAmE;AACnE,oEAAoE;AACpE,iEAAiE;AACjE,uCAAuC;AACvC,EAAE;AACF,kEAAkE;AAClE,sEAAsE;AACtE,mEAAmE;AACnE,qEAAqE;AACrE,mBAAmB;AAGnB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAiBzC,SAAS,YAAY,CAAC,GAAsB;IAC1C,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,QAAQ,EAAE,GAAG,CAAC,SAAS;QACvB,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,QAAQ,EAAE,GAAG,CAAC,SAAS;QACvB,WAAW,EAAE,GAAG,CAAC,YAAY;QAC7B,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC;QAC/B,OAAO,EAAE,GAAG,CAAC,OAAO,KAAK,CAAC;QAC1B,MAAM,EAAE,GAAG,CAAC,MAAuB;QACnC,YAAY,EAAE,GAAG,CAAC,aAAa;QAC/B,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,SAAS,EAAE,GAAG,CAAC,UAAU;KAC1B,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACnE,OAAO,MAAiC,CAAC;QAC3C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,kBAAkB;IACpB,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;0CAC0C;AAC1C,MAAM,UAAU,qBAAqB,CACnC,EAAY,EACZ,QAAgB;IAEhB,MAAM,IAAI,GAAG,EAAE;SACZ,OAAO,CACN;;;;gCAI0B,CAC3B;SACA,GAAG,CAAC,QAAQ,CAAC,CAAC;IACjB,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AAChC,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,mBAAmB,CAAC,EAAY;IAC9C,MAAM,IAAI,GAAG,EAAE;SACZ,OAAO,CACN;;;;uCAIiC,CAClC;SACA,GAAG,EAAE,CAAC;IACT,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AAChC,CAAC;AAED,sCAAsC;AACtC,MAAM,UAAU,UAAU,CACxB,EAAY,EACZ,SAAiB;IAEjB,MAAM,GAAG,GAAG,EAAE;SACX,OAAO,CACN;;4CAEsC,CACvC;SACA,GAAG,CAAC,SAAS,CAAC,CAAC;IAClB,OAAO,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACxC,CAAC;AAWD,6DAA6D;AAC7D,MAAM,UAAU,aAAa,CAC3B,EAAY,EACZ,KAAyB;IAEzB,MAAM,EAAE,GAAG,MAAM,UAAU,EAAE,EAAE,CAAC;IAChC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,EAAE,CAAC,OAAO,CACR;;;gDAG4C,CAC7C,CAAC,GAAG,CACH,EAAE,EACF,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,WAAW,IAAI,IAAI,EACzB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,EAClC,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC/B,GAAG,EACH,GAAG,CACJ,CAAC;IACF,OAAO,UAAU,CAAC,EAAE,EAAE,EAAE,CAAE,CAAC;AAC7B,CAAC;AAUD,MAAM,UAAU,aAAa,CAC3B,EAAY,EACZ,SAAiB,EACjB,KAAyB;IAEzB,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,MAAM,MAAM,GAAc,EAAE,CAAC;IAC7B,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACjC,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAC9B,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC5B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACxB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvB,EAAE,CAAC,OAAO,CACR,+BAA+B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAC9D,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;AACnB,CAAC;AAED;;8CAE8C;AAC9C,MAAM,UAAU,gBAAgB,CAC9B,EAAY,EACZ,SAAiB,EACjB,MAAqB,EACrB,MAAsB;IAEtB,EAAE,CAAC,OAAO,CACR;;mBAEe,CAChB,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,IAAI,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;AACvD,CAAC;AAED;gEACgE;AAChE,MAAM,UAAU,aAAa,CAAC,EAAY,EAAE,SAAiB;IAC3D,EAAE,CAAC,OAAO,CAAoB,2CAA2C,CAAC,CAAC,GAAG,CAC5E,SAAS,CACV,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"bindings.js","sourceRoot":"","sources":["../../src/channels/bindings.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,EAAE;AACF,qEAAqE;AACrE,mEAAmE;AACnE,oEAAoE;AACpE,iEAAiE;AACjE,uCAAuC;AACvC,EAAE;AACF,kEAAkE;AAClE,sEAAsE;AACtE,mEAAmE;AACnE,qEAAqE;AACrE,mBAAmB;AAGnB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAkBzC,SAAS,YAAY,CAAC,GAAsB;IAC1C,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,QAAQ,EAAE,GAAG,CAAC,SAAS;QACvB,WAAW,EAAE,GAAG,CAAC,aAAa;QAC9B,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,QAAQ,EAAE,GAAG,CAAC,SAAS;QACvB,WAAW,EAAE,GAAG,CAAC,YAAY;QAC7B,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC;QAC/B,OAAO,EAAE,GAAG,CAAC,OAAO,KAAK,CAAC;QAC1B,MAAM,EAAE,GAAG,CAAC,MAAuB;QACnC,YAAY,EAAE,GAAG,CAAC,aAAa;QAC/B,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,SAAS,EAAE,GAAG,CAAC,UAAU;KAC1B,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACnE,OAAO,MAAiC,CAAC;QAC3C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,kBAAkB;IACpB,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;kCAEkC;AAClC,MAAM,UAAU,mBAAmB,CACjC,EAAY,EACZ,QAAgB,EAChB,WAAmB;IAEnB,MAAM,IAAI,GAAG,EAAE;SACZ,OAAO,CACN;;;;gCAI0B,CAC3B;SACA,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC9B,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AAChC,CAAC;AAED;;yCAEyC;AACzC,MAAM,UAAU,qBAAqB,CACnC,EAAY,EACZ,QAAgB;IAEhB,MAAM,IAAI,GAAG,EAAE;SACZ,OAAO,CACN;;;;gCAI0B,CAC3B;SACA,GAAG,CAAC,QAAQ,CAAC,CAAC;IACjB,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AAChC,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,mBAAmB,CAAC,EAAY;IAC9C,MAAM,IAAI,GAAG,EAAE;SACZ,OAAO,CACN;;;;uCAIiC,CAClC;SACA,GAAG,EAAE,CAAC;IACT,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AAChC,CAAC;AAED,sCAAsC;AACtC,MAAM,UAAU,UAAU,CACxB,EAAY,EACZ,SAAiB;IAEjB,MAAM,GAAG,GAAG,EAAE;SACX,OAAO,CACN;;4CAEsC,CACvC;SACA,GAAG,CAAC,SAAS,CAAC,CAAC;IAClB,OAAO,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACxC,CAAC;AAYD,6DAA6D;AAC7D,MAAM,UAAU,aAAa,CAC3B,EAAY,EACZ,KAAyB;IAEzB,MAAM,EAAE,GAAG,MAAM,UAAU,EAAE,EAAE,CAAC;IAChC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,EAAE,CAAC,OAAO,CAIR;;;mDAG+C,CAChD,CAAC,GAAG,CACH,EAAE,EACF,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,WAAW,IAAI,IAAI,EACzB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,EAClC,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC/B,GAAG,EACH,GAAG,CACJ,CAAC;IACF,OAAO,UAAU,CAAC,EAAE,EAAE,EAAE,CAAE,CAAC;AAC7B,CAAC;AAUD,MAAM,UAAU,aAAa,CAC3B,EAAY,EACZ,SAAiB,EACjB,KAAyB;IAEzB,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,MAAM,MAAM,GAAc,EAAE,CAAC;IAC7B,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACjC,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAC9B,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC5B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACxB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvB,EAAE,CAAC,OAAO,CACR,+BAA+B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAC9D,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;AACnB,CAAC;AAED;;8CAE8C;AAC9C,MAAM,UAAU,gBAAgB,CAC9B,EAAY,EACZ,SAAiB,EACjB,MAAqB,EACrB,MAAsB;IAEtB,EAAE,CAAC,OAAO,CACR;;mBAEe,CAChB,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,IAAI,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;AACvD,CAAC;AAED;gEACgE;AAChE,MAAM,UAAU,aAAa,CAAC,EAAY,EAAE,SAAiB;IAC3D,EAAE,CAAC,OAAO,CAAoB,2CAA2C,CAAC,CAAC,GAAG,CAC5E,SAAS,CACV,CAAC;AACJ,CAAC"}
@@ -1,7 +1,7 @@
1
1
  export { ChannelHub, channelHub } from "./hub.js";
2
2
  export { ChannelAdapterManager } from "./adapter-manager.js";
3
3
  export type { AdapterManagerDeps } from "./adapter-manager.js";
4
- export { createBinding, deleteBinding, getBinding, listBindingsForTenant, listEnabledBindings, setBindingStatus, updateBinding, } from "./bindings.js";
4
+ export { createBinding, deleteBinding, getBinding, listBindingsForTenant, listBindingsForUser, listEnabledBindings, setBindingStatus, updateBinding, } from "./bindings.js";
5
5
  export type { CreateBindingInput, UpdateBindingInput, } from "./bindings.js";
6
6
  export type { BindingStatus, ChannelAdapter, ChannelAdapterContext, ChannelAdapterFactory, ChannelBinding, ChannelId, ChannelReactionKind, InboundChannelMessage, InboundEnvelope, OutboundChannelMessage, } from "./types.js";
7
7
  export { startChannelRouter } from "./router.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/channels/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EACL,aAAa,EACb,aAAa,EACb,UAAU,EACV,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,qBAAqB,EACrB,cAAc,EACd,SAAS,EACT,mBAAmB,EACnB,qBAAqB,EACrB,eAAe,EACf,sBAAsB,GACvB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/channels/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EACL,aAAa,EACb,aAAa,EACb,UAAU,EACV,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,qBAAqB,EACrB,cAAc,EACd,SAAS,EACT,mBAAmB,EACnB,qBAAqB,EACrB,eAAe,EACf,sBAAsB,GACvB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC"}
@@ -5,7 +5,7 @@
5
5
  // evolve without spraying import paths.
6
6
  export { ChannelHub, channelHub } from "./hub.js";
7
7
  export { ChannelAdapterManager } from "./adapter-manager.js";
8
- export { createBinding, deleteBinding, getBinding, listBindingsForTenant, listEnabledBindings, setBindingStatus, updateBinding, } from "./bindings.js";
8
+ export { createBinding, deleteBinding, getBinding, listBindingsForTenant, listBindingsForUser, listEnabledBindings, setBindingStatus, updateBinding, } from "./bindings.js";
9
9
  export { startChannelRouter } from "./router.js";
10
10
  export { ensureChannelSession } from "./sessions.js";
11
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/channels/index.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,EAAE;AACF,mEAAmE;AACnE,8DAA8D;AAC9D,wCAAwC;AAExC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,OAAO,EACL,aAAa,EACb,aAAa,EACb,UAAU,EACV,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,GACd,MAAM,eAAe,CAAC;AAiBvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/channels/index.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,EAAE;AACF,mEAAmE;AACnE,8DAA8D;AAC9D,wCAAwC;AAExC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,OAAO,EACL,aAAa,EACb,aAAa,EACb,UAAU,EACV,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,GACd,MAAM,eAAe,CAAC;AAiBvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/channels/sessions.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,MAAM,WAAW,yBAAyB;IACxC;;+CAE2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,2DAA2D;IAC3D,SAAS,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf;6CACyC;IACzC,QAAQ,EAAE,OAAO,CAAC;IAClB;qCACiC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAeD;;;;kCAIkC;AAClC,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,yBAAyB,GAC/B,WAAW,CA2Eb"}
1
+ {"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/channels/sessions.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,MAAM,WAAW,yBAAyB;IACxC;;+CAE2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,2DAA2D;IAC3D,SAAS,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf;6CACyC;IACzC,QAAQ,EAAE,OAAO,CAAC;IAClB;qCACiC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAeD;;;;kCAIkC;AAClC,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,yBAAyB,GAC/B,WAAW,CAuFb"}
@@ -40,16 +40,26 @@ export function ensureChannelSession(ctx, input) {
40
40
  createdAt: existing.created_at,
41
41
  };
42
42
  }
43
- // Create new. Owner = tenant's primary user (first by created_at).
44
- // Channel session rows don't correspond to a real user-typed
45
- // conversation, but every session in the schema needs a user
46
- // FK, so we pin them on the tenant's owner.
47
- const ownerRow = ctx.db
48
- .prepare(`SELECT id FROM users ORDER BY created_at ASC LIMIT 1`)
49
- .get();
50
- if (!ownerRow) {
51
- throw new Error(`[channel-session] tenant ${ctx.tenantId} has no users; cannot create channel session`);
43
+ // Create new. Owner = the binding's `owner_user_id`. Channel
44
+ // bindings are personal credentials; sessions inherit that
45
+ // scope so they only surface in the binding-owner's sidebar.
46
+ // Falls back to the tenant's first user when no binding row
47
+ // exists (development paths that synthesise envelopes without
48
+ // a real binding).
49
+ const bindingRow = ctx.db
50
+ .prepare(`SELECT owner_user_id FROM channel_bindings WHERE id = ?`)
51
+ .get(input.bindingId);
52
+ let ownerId = bindingRow?.owner_user_id;
53
+ if (!ownerId) {
54
+ const fallback = ctx.db
55
+ .prepare(`SELECT id FROM users ORDER BY created_at ASC LIMIT 1`)
56
+ .get();
57
+ if (!fallback) {
58
+ throw new Error(`[channel-session] tenant ${ctx.tenantId} has no users; cannot create channel session`);
59
+ }
60
+ ownerId = fallback.id;
52
61
  }
62
+ const ownerRow = { id: ownerId };
53
63
  const id = `session_${randomUUID()}`;
54
64
  const now = Date.now();
55
65
  const title = buildChannelSessionTitle(input);
@@ -1 +1 @@
1
- {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/channels/sessions.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,EAAE;AACF,gEAAgE;AAChE,sEAAsE;AACtE,qEAAqE;AACrE,8DAA8D;AAC9D,EAAE;AACF,qEAAqE;AACrE,8DAA8D;AAC9D,2CAA2C;AAC3C,EAAE;AACF,mEAAmE;AACnE,mEAAmE;AAEnE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAkC1D;;;;kCAIkC;AAClC,MAAM,UAAU,oBAAoB,CAClC,GAAkB,EAClB,KAAgC;IAEhC,MAAM,QAAQ,GAAG,GAAG,CAAC,EAAE;SACpB,OAAO,CACN;;;;;;;gBAOU,CACX;SACA,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACvD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO;YACL,EAAE,EAAE,QAAQ,CAAC,EAAE;YACf,MAAM,EAAE,QAAQ,CAAC,OAAO;YACxB,QAAQ,EAAE,QAAQ,CAAC,SAAS;YAC5B,MAAM,EAAE,QAAQ,CAAC,MAA+B;YAChD,IAAI,EAAE,QAAQ,CAAC,IAA2B;YAC1C,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,SAAS,EAAE,QAAQ,CAAC,UAAU;SAC/B,CAAC;IACJ,CAAC;IAED,mEAAmE;IACnE,6DAA6D;IAC7D,6DAA6D;IAC7D,4CAA4C;IAC5C,MAAM,QAAQ,GAAG,GAAG,CAAC,EAAE;SACpB,OAAO,CACN,sDAAsD,CACvD;SACA,GAAG,EAAE,CAAC;IACT,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CACb,4BAA4B,GAAG,CAAC,QAAQ,8CAA8C,CACvF,CAAC;IACJ,CAAC;IACD,MAAM,EAAE,GAAG,WAAW,UAAU,EAAE,EAAE,CAAC;IACrC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,KAAK,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;IACvC,GAAG,CAAC,EAAE;SACH,OAAO,CAIN;;;;6CAIuC,CACxC;SACA,GAAG,CACF,EAAE,EACF,QAAQ,CAAC,EAAE,EACX,QAAQ,EACR,MAAM,EACN,GAAG,EACH,KAAK,EACL,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,SAAS,EACf,UAAU,CACX,CAAC;IACJ,OAAO;QACL,EAAE;QACF,MAAM,EAAE,QAAQ,CAAC,EAAE;QACnB,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,QAAQ;QAChB,IAAI,EAAE,MAAM;QACZ,KAAK;QACL,SAAS,EAAE,GAAG;KACf,CAAC;AACJ,CAAC;AAED;;yEAEyE;AACzE,SAAS,wBAAwB,CAAC,KAAgC;IAChE,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC;IACtD,OAAO,GAAG,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;AACzE,CAAC"}
1
+ {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/channels/sessions.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,10 @@ export type BindingStatus = "idle" | "starting" | "running" | "error" | "stopped
18
18
  export interface ChannelBinding {
19
19
  id: string;
20
20
  tenantId: string;
21
+ /** User that owns this binding. Channel credentials are personal
22
+ * (one user's wechat scan shouldn't expose another user's
23
+ * sessions); all CRUD scopes by both tenant + this id. */
24
+ ownerUserId: string;
21
25
  channelId: string;
22
26
  pluginId: string;
23
27
  displayName: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/channels/types.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EACV,cAAc,EACd,qBAAqB,EACtB,MAAM,wBAAwB,CAAC;AAEhC,YAAY,EAAE,cAAc,EAAE,qBAAqB,EAAE,CAAC;AACtD,YAAY,EACV,qBAAqB,EACrB,qBAAqB,EACrB,SAAS,EACT,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,wBAAwB,CAAC;AAEhC;;;oCAGoC;AACpC,MAAM,WAAW,eAAgB,SAAQ,qBAAqB;IAC5D,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,qCAAqC;IACrC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;iCACiC;AACjC,MAAM,MAAM,aAAa,GACrB,MAAM,GACN,UAAU,GACV,SAAS,GACT,OAAO,GACP,SAAS,CACV;AAEH,mCAAmC;AACnC,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,aAAa,CAAC;IACtB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/channels/types.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EACV,cAAc,EACd,qBAAqB,EACtB,MAAM,wBAAwB,CAAC;AAEhC,YAAY,EAAE,cAAc,EAAE,qBAAqB,EAAE,CAAC;AACtD,YAAY,EACV,qBAAqB,EACrB,qBAAqB,EACrB,SAAS,EACT,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,wBAAwB,CAAC;AAEhC;;;oCAGoC;AACpC,MAAM,WAAW,eAAgB,SAAQ,qBAAqB;IAC5D,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,qCAAqC;IACrC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;iCACiC;AACjC,MAAM,MAAM,aAAa,GACrB,MAAM,GACN,UAAU,GACV,SAAS,GACT,OAAO,GACP,SAAS,CACV;AAEH,mCAAmC;AACnC,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB;;+DAE2D;IAC3D,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,aAAa,CAAC;IACtB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB"}
@@ -0,0 +1,4 @@
1
+ import type { Database } from "better-sqlite3";
2
+ export declare const ID = "011-channel-bindings-owner";
3
+ export declare function up(db: Database): void;
4
+ //# sourceMappingURL=011-channel-bindings-owner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"011-channel-bindings-owner.d.ts","sourceRoot":"","sources":["../../../src/core/migrations/011-channel-bindings-owner.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,eAAO,MAAM,EAAE,+BAA+B,CAAC;AAE/C,wBAAgB,EAAE,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CAoCrC"}
@@ -0,0 +1,62 @@
1
+ // Migration 011 — make channel bindings per-user.
2
+ //
3
+ // Channel credentials (a wechat QR-scan, a telegram bot token) are
4
+ // personal: when Yu binds his wechat, the other users in the same
5
+ // tenant shouldn't see his sessions or be able to send through his
6
+ // adapter. The 0.3.37 schema only carried tenant_id, so this row
7
+ // fixes it.
8
+ //
9
+ // New column:
10
+ // owner_user_id TEXT NOT NULL
11
+ //
12
+ // SQLite doesn't allow adding a NOT NULL column without a default,
13
+ // and we don't want a fake default (would silently claim every
14
+ // existing binding for one user). The migration:
15
+ // 1. ALTER TABLE ... ADD COLUMN owner_user_id TEXT (nullable)
16
+ // 2. backfill: for each existing row, set owner_user_id to the
17
+ // tenant's primary user (first row in `users`, same fallback
18
+ // ensureChannelSession used). On fresh installs the table is
19
+ // empty so this is a no-op.
20
+ // 3. enforce NOT NULL via a CHECK constraint — SQLite doesn't
21
+ // have ALTER COLUMN SET NOT NULL, but the CHECK is enforced
22
+ // on subsequent INSERTs.
23
+ //
24
+ // We also drop+recreate the tenant index to include owner_user_id,
25
+ // so list-by-(tenant, channel) queries the admin UI runs are still
26
+ // fast after we filter to a user.
27
+ export const ID = "011-channel-bindings-owner";
28
+ export function up(db) {
29
+ db.exec(`
30
+ ALTER TABLE channel_bindings ADD COLUMN owner_user_id TEXT;
31
+ `);
32
+ // Backfill: each existing binding gets pinned to the tenant's
33
+ // primary user. Multi-tenant installs typically have only one
34
+ // user per tenant at this stage of the project, so the fallback
35
+ // matches what users would have expected before the per-user
36
+ // model existed.
37
+ db.exec(`
38
+ UPDATE channel_bindings
39
+ SET owner_user_id = (
40
+ SELECT id FROM users ORDER BY created_at ASC LIMIT 1
41
+ )
42
+ WHERE owner_user_id IS NULL;
43
+ `);
44
+ // Enforce non-null via a CHECK. Subsequent INSERTs without
45
+ // owner_user_id will fail loud — better than silently inheriting
46
+ // the tenant's primary user.
47
+ db.exec(`
48
+ CREATE TRIGGER channel_bindings_owner_required
49
+ BEFORE INSERT ON channel_bindings
50
+ FOR EACH ROW
51
+ WHEN NEW.owner_user_id IS NULL
52
+ BEGIN
53
+ SELECT RAISE(ABORT, 'channel_bindings.owner_user_id is required');
54
+ END;
55
+ `);
56
+ db.exec(`
57
+ DROP INDEX IF EXISTS idx_channel_bindings_tenant;
58
+ CREATE INDEX idx_channel_bindings_tenant_user
59
+ ON channel_bindings(tenant_id, owner_user_id, channel_id);
60
+ `);
61
+ }
62
+ //# sourceMappingURL=011-channel-bindings-owner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"011-channel-bindings-owner.js","sourceRoot":"","sources":["../../../src/core/migrations/011-channel-bindings-owner.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,EAAE;AACF,mEAAmE;AACnE,kEAAkE;AAClE,mEAAmE;AACnE,iEAAiE;AACjE,YAAY;AACZ,EAAE;AACF,cAAc;AACd,gCAAgC;AAChC,EAAE;AACF,mEAAmE;AACnE,+DAA+D;AAC/D,iDAAiD;AACjD,iEAAiE;AACjE,iEAAiE;AACjE,kEAAkE;AAClE,kEAAkE;AAClE,iCAAiC;AACjC,gEAAgE;AAChE,iEAAiE;AACjE,8BAA8B;AAC9B,EAAE;AACF,mEAAmE;AACnE,mEAAmE;AACnE,kCAAkC;AAIlC,MAAM,CAAC,MAAM,EAAE,GAAG,4BAA4B,CAAC;AAE/C,MAAM,UAAU,EAAE,CAAC,EAAY;IAC7B,EAAE,CAAC,IAAI,CAAC;;GAEP,CAAC,CAAC;IAEH,8DAA8D;IAC9D,8DAA8D;IAC9D,gEAAgE;IAChE,6DAA6D;IAC7D,iBAAiB;IACjB,EAAE,CAAC,IAAI,CAAC;;;;;;GAMP,CAAC,CAAC;IAEH,2DAA2D;IAC3D,iEAAiE;IACjE,6BAA6B;IAC7B,EAAE,CAAC,IAAI,CAAC;;;;;;;;GAQP,CAAC,CAAC;IAEH,EAAE,CAAC,IAAI,CAAC;;;;GAIP,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Database } from "better-sqlite3";
2
+ export declare const ID = "012-channel-bindings-unique";
3
+ export declare function up(db: Database): void;
4
+ //# sourceMappingURL=012-channel-bindings-unique.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"012-channel-bindings-unique.d.ts","sourceRoot":"","sources":["../../../src/core/migrations/012-channel-bindings-unique.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,eAAO,MAAM,EAAE,gCAAgC,CAAC;AAEhD,wBAAgB,EAAE,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CAKrC"}
@@ -0,0 +1,22 @@
1
+ // Migration 012 — enforce "one binding per (tenant, user, channel)"
2
+ // at the schema level.
3
+ //
4
+ // 0.3.38 made bindings per-user; now we lock down the invariant
5
+ // each user has at most one active binding per channel. Two bindings
6
+ // for the same wechat scan would race the long-poll loop and
7
+ // duplicate every agent reply — there's no legitimate use case
8
+ // for it.
9
+ //
10
+ // The capability layer (host.channelBindings.create) already
11
+ // cascade-deletes existing bindings for the tuple before
12
+ // inserting, so the unique constraint is belt + braces: a
13
+ // misbehaving plugin or a direct SQL insert can't sneak around
14
+ // the policy.
15
+ export const ID = "012-channel-bindings-unique";
16
+ export function up(db) {
17
+ db.exec(`
18
+ CREATE UNIQUE INDEX channel_bindings_unique_per_user
19
+ ON channel_bindings(tenant_id, owner_user_id, channel_id);
20
+ `);
21
+ }
22
+ //# sourceMappingURL=012-channel-bindings-unique.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"012-channel-bindings-unique.js","sourceRoot":"","sources":["../../../src/core/migrations/012-channel-bindings-unique.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,uBAAuB;AACvB,EAAE;AACF,gEAAgE;AAChE,qEAAqE;AACrE,6DAA6D;AAC7D,+DAA+D;AAC/D,UAAU;AACV,EAAE;AACF,6DAA6D;AAC7D,yDAAyD;AACzD,0DAA0D;AAC1D,+DAA+D;AAC/D,cAAc;AAId,MAAM,CAAC,MAAM,EAAE,GAAG,6BAA6B,CAAC;AAEhD,MAAM,UAAU,EAAE,CAAC,EAAY;IAC7B,EAAE,CAAC,IAAI,CAAC;;;GAGP,CAAC,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/migrations/index.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAY/C,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,IAAI,CAAC;CAC5B;AAED,kFAAkF;AAClF,eAAO,MAAM,UAAU,EAAE,SAAS,EAWjC,CAAC;AASF,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,GAAG;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,cAAc,EAAE,MAAM,EAAE,CAAA;CAAE,CA6B3F"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/migrations/index.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAc/C,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,IAAI,CAAC;CAC5B;AAED,kFAAkF;AAClF,eAAO,MAAM,UAAU,EAAE,SAAS,EAajC,CAAC;AASF,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,GAAG;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,cAAc,EAAE,MAAM,EAAE,CAAA;CAAE,CA6B3F"}
@@ -17,6 +17,8 @@ import * as sessionInbox from "./007-session-inbox.js";
17
17
  import * as taskIntervention from "./008-task-intervention.js";
18
18
  import * as sessionAppVersion from "./009-session-app-version.js";
19
19
  import * as channels from "./010-channels.js";
20
+ import * as channelBindingsOwner from "./011-channel-bindings-owner.js";
21
+ import * as channelBindingsUnique from "./012-channel-bindings-unique.js";
20
22
  /** Ordered list of migrations. Append, never reorder, never edit past entries. */
21
23
  export const MIGRATIONS = [
22
24
  { id: initial.ID, up: initial.up },
@@ -29,6 +31,8 @@ export const MIGRATIONS = [
29
31
  { id: taskIntervention.ID, up: taskIntervention.up },
30
32
  { id: sessionAppVersion.ID, up: sessionAppVersion.up },
31
33
  { id: channels.ID, up: channels.up },
34
+ { id: channelBindingsOwner.ID, up: channelBindingsOwner.up },
35
+ { id: channelBindingsUnique.ID, up: channelBindingsUnique.up },
32
36
  ];
33
37
  const ENSURE_MIGRATIONS_TABLE = `
34
38
  CREATE TABLE IF NOT EXISTS schema_migrations (
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/migrations/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/migrations/index.ts"],"names":[],"mappings":"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"}
@@ -20,7 +20,7 @@ import { buildReloadingBuiltinResolver, PluginRegistry } from "./core/plugins/in
20
20
  import { buildToolCatalogRefreshTool, TOOL_CATALOG_REFRESH_NAME, } from "./chat/host-tools/tool-catalog-refresh.js";
21
21
  import { buildPluginsRouter } from "./plugins-routes.js";
22
22
  import { CatalogClient } from "./catalog.js";
23
- import { ChannelAdapterManager, createBinding, deleteBinding, getBinding, listBindingsForTenant, startChannelRouter, } from "./channels/index.js";
23
+ import { ChannelAdapterManager, createBinding, deleteBinding, getBinding, listBindingsForUser, startChannelRouter, } from "./channels/index.js";
24
24
  import path from "node:path";
25
25
  import { fileURLToPath } from "node:url";
26
26
  import { attachChatHandler, loadHostSkills, runPrompt, } from "./chat/handler.js";
@@ -212,8 +212,36 @@ pluginRegistry = new PluginRegistry({
212
212
  // the manager" two-step.
213
213
  "host.channelBindings": (ctx) => ({
214
214
  async create(input) {
215
+ // Each (tenant, user, channel) tuple may have at most one
216
+ // active binding. Channel credentials are personal *and*
217
+ // exclusive — binding wechat twice would mean two adapters
218
+ // racing for the same long-poll, two outbound sends per
219
+ // agent reply, etc. So a fresh create replaces any
220
+ // existing binding for the same (tenant, user, channel):
221
+ // stop its adapter, cascade-delete its sessions + messages
222
+ // + the binding row, then proceed with the new one. This
223
+ // is also the right shape for "re-scan to refresh expired
224
+ // token" — the new scan just supersedes the old.
225
+ const existing = listBindingsForUser(ctx.db, ctx.tenantId, input.ownerUserId).filter((b) => b.channelId === input.channelId);
226
+ for (const old of existing) {
227
+ await channelManager.stopBinding(old.id).catch(() => { });
228
+ const cascade = ctx.db.transaction(() => {
229
+ ctx.db
230
+ .prepare(`DELETE FROM messages
231
+ WHERE session_id IN (
232
+ SELECT id FROM sessions WHERE channel_binding_id = ?
233
+ )`)
234
+ .run(old.id);
235
+ ctx.db
236
+ .prepare(`DELETE FROM sessions WHERE channel_binding_id = ?`)
237
+ .run(old.id);
238
+ deleteBinding(ctx.db, old.id);
239
+ });
240
+ cascade();
241
+ }
215
242
  const row = createBinding(ctx.db, {
216
243
  tenantId: ctx.tenantId,
244
+ ownerUserId: input.ownerUserId,
217
245
  channelId: input.channelId,
218
246
  pluginId: input.pluginId,
219
247
  displayName: input.displayName,
@@ -231,13 +259,16 @@ pluginRegistry = new PluginRegistry({
231
259
  return toView(row);
232
260
  },
233
261
  list(opts) {
234
- const rows = listBindingsForTenant(ctx.db, ctx.tenantId).filter((r) => (opts?.channelId ? r.channelId === opts.channelId : true));
262
+ const rows = listBindingsForUser(ctx.db, ctx.tenantId, opts.ownerUserId).filter((r) => (opts.channelId ? r.channelId === opts.channelId : true));
235
263
  return rows.map(toView);
236
264
  },
237
- async delete(bindingId) {
265
+ async delete(bindingId, ownerUserId) {
238
266
  const row = getBinding(ctx.db, bindingId);
239
- if (!row || row.tenantId !== ctx.tenantId)
267
+ if (!row ||
268
+ row.tenantId !== ctx.tenantId ||
269
+ row.ownerUserId !== ownerUserId) {
240
270
  return false;
271
+ }
241
272
  await channelManager.stopBinding(bindingId).catch(() => { });
242
273
  // Cascade: delete the binding row and every session/message
243
274
  // tied to it. Without this, the channel sessions linger in
@@ -268,6 +299,7 @@ function toView(row) {
268
299
  return {
269
300
  id: row.id,
270
301
  tenantId: row.tenantId,
302
+ ownerUserId: row.ownerUserId,
271
303
  channelId: row.channelId,
272
304
  pluginId: row.pluginId,
273
305
  displayName: row.displayName,
@@ -444,13 +476,20 @@ app.get("/api/channel-sessions", (req, res) => {
444
476
  return;
445
477
  }
446
478
  const rows = req.ctx.tenant.db
447
- .prepare(`SELECT id, channel_id, channel_chat_id, channel_binding_id,
479
+ .prepare(
480
+ // Scope to the calling user: channel sessions are personal
481
+ // (one user's wechat scan shouldn't surface to others on the
482
+ // tenant). user_id on the session row already tracks this
483
+ // because ensureChannelSession stamps it from the binding's
484
+ // owner_user_id.
485
+ `SELECT id, channel_id, channel_chat_id, channel_binding_id,
448
486
  title, created_at
449
487
  FROM sessions
450
488
  WHERE channel_id IS NOT NULL
451
489
  AND kind = 'user'
490
+ AND user_id = ?
452
491
  ORDER BY created_at DESC`)
453
- .all();
492
+ .all(req.ctx.userId);
454
493
  res.json({
455
494
  sessions: rows.map((r) => ({
456
495
  id: r.id,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAoCA,OAAO,KAAK,EAKV,kBAAkB,EACnB,MAAM,wBAAwB,CAAC;AAehC,QAAA,MAAM,MAAM,EAAE,kBA6Nb,CAAC;AAkBF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAoCA,OAAO,KAAK,EAKV,kBAAkB,EACnB,MAAM,wBAAwB,CAAC;AAehC,QAAA,MAAM,MAAM,EAAE,kBAmPb,CAAC;AAkBF,eAAe,MAAM,CAAC"}
@@ -93,6 +93,11 @@ const plugin = {
93
93
  // → { ok, scanned: false } while pending
94
94
  // → { ok, scanned: true, binding } after confirm
95
95
  loginPoll: async (req, res) => {
96
+ const userId = req.ctx?.userId;
97
+ if (!userId) {
98
+ res.status(401).json({ ok: false, error: "no user in request context" });
99
+ return;
100
+ }
96
101
  const body = (req.body ?? {});
97
102
  if (!body.qrcode) {
98
103
  res.status(400).json({ ok: false, error: "missing qrcode" });
@@ -114,6 +119,7 @@ const plugin = {
114
119
  // about this token after confirm.
115
120
  const bindingBaseUrl = resp.baseurl?.trim();
116
121
  const binding = await bindings.create({
122
+ ownerUserId: userId,
117
123
  channelId: "wechat",
118
124
  pluginId: "wechat",
119
125
  displayName: display,
@@ -163,8 +169,13 @@ const plugin = {
163
169
  }
164
170
  },
165
171
  // GET /bindings
166
- listBindings: (_req, res) => {
167
- const list = bindings.list({ channelId: "wechat" });
172
+ listBindings: (req, res) => {
173
+ const userId = req.ctx?.userId;
174
+ if (!userId) {
175
+ res.status(401).json({ ok: false, error: "no user in request context" });
176
+ return;
177
+ }
178
+ const list = bindings.list({ ownerUserId: userId, channelId: "wechat" });
168
179
  // Strip the token before serialising \u2014 the admin UI
169
180
  // doesn't need to see it and we don't want it floating
170
181
  // around browser dev tools / log streams.
@@ -184,14 +195,20 @@ const plugin = {
184
195
  // session storage; the host's /api/channel-sessions is
185
196
  // still around but channel-agnostic. Per-channel rendering
186
197
  // (icon, pill, label) belongs to the plugin.
187
- listSessions: (_req, res) => {
198
+ listSessions: (req, res) => {
199
+ const userId = req.ctx?.userId;
200
+ if (!userId) {
201
+ res.status(401).json({ ok: false, error: "no user in request context" });
202
+ return;
203
+ }
188
204
  const rows = ctx.db
189
205
  .prepare(`SELECT id, channel_chat_id, channel_binding_id, title, created_at
190
206
  FROM sessions
191
207
  WHERE channel_id = 'wechat'
192
208
  AND kind = 'user'
209
+ AND user_id = ?
193
210
  ORDER BY created_at DESC`)
194
- .all();
211
+ .all(userId);
195
212
  res.json({
196
213
  ok: true,
197
214
  sessions: rows.map((r) => ({
@@ -212,13 +229,18 @@ const plugin = {
212
229
  },
213
230
  // DELETE /bindings/:id
214
231
  deleteBinding: async (req, res) => {
232
+ const userId = req.ctx?.userId;
233
+ if (!userId) {
234
+ res.status(401).json({ ok: false, error: "no user in request context" });
235
+ return;
236
+ }
215
237
  const raw = req.params.id;
216
238
  const id = Array.isArray(raw) ? raw[0] : raw;
217
239
  if (!id) {
218
240
  res.status(400).json({ ok: false, error: "missing binding id" });
219
241
  return;
220
242
  }
221
- const removed = await bindings.delete(id);
243
+ const removed = await bindings.delete(id, userId);
222
244
  if (!removed) {
223
245
  res.status(404).json({ ok: false, error: "binding not found" });
224
246
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}