@undefineds.co/xpod 0.3.48 → 0.3.50

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 (128) hide show
  1. package/bin/xpod.js +0 -0
  2. package/dist/api/auth/MultiAuthenticator.js +2 -2
  3. package/dist/api/auth/MultiAuthenticator.js.map +1 -1
  4. package/dist/api/chatkit/pod-store.d.ts +16 -17
  5. package/dist/api/chatkit/pod-store.js +299 -231
  6. package/dist/api/chatkit/pod-store.js.map +1 -1
  7. package/dist/api/chatkit/schema.d.ts +1 -1
  8. package/dist/api/chatkit/service.js +13 -11
  9. package/dist/api/chatkit/service.js.map +1 -1
  10. package/dist/api/chatkit/store.d.ts +1 -0
  11. package/dist/api/chatkit/store.js +23 -11
  12. package/dist/api/chatkit/store.js.map +1 -1
  13. package/dist/api/chatkit/types.d.ts +17 -10
  14. package/dist/api/chatkit/types.js +97 -14
  15. package/dist/api/chatkit/types.js.map +1 -1
  16. package/dist/api/container/common.js +16 -2
  17. package/dist/api/container/common.js.map +1 -1
  18. package/dist/api/container/routes.js +3 -0
  19. package/dist/api/container/routes.js.map +1 -1
  20. package/dist/api/container/types.d.ts +3 -0
  21. package/dist/api/container/types.js.map +1 -1
  22. package/dist/api/handlers/ChatKitV1Handler.js +1 -2
  23. package/dist/api/handlers/ChatKitV1Handler.js.map +1 -1
  24. package/dist/api/handlers/CoordinationHandler.d.ts +6 -0
  25. package/dist/api/handlers/CoordinationHandler.js +115 -0
  26. package/dist/api/handlers/CoordinationHandler.js.map +1 -0
  27. package/dist/api/handlers/MatrixHandler.d.ts +11 -0
  28. package/dist/api/handlers/MatrixHandler.js +144 -2
  29. package/dist/api/handlers/MatrixHandler.js.map +1 -1
  30. package/dist/api/handlers/RunHandler.js +33 -15
  31. package/dist/api/handlers/RunHandler.js.map +1 -1
  32. package/dist/api/handlers/index.d.ts +1 -0
  33. package/dist/api/handlers/index.js +1 -0
  34. package/dist/api/handlers/index.js.map +1 -1
  35. package/dist/api/index.d.ts +1 -0
  36. package/dist/api/index.js +1 -0
  37. package/dist/api/index.js.map +1 -1
  38. package/dist/api/matrix/PodMatrixStore.d.ts +25 -1
  39. package/dist/api/matrix/PodMatrixStore.js +253 -41
  40. package/dist/api/matrix/PodMatrixStore.js.map +1 -1
  41. package/dist/api/matrix/index.d.ts +1 -1
  42. package/dist/api/matrix/index.js.map +1 -1
  43. package/dist/api/matrix/types.d.ts +25 -2
  44. package/dist/api/matrix/types.js.map +1 -1
  45. package/dist/api/middleware/AuthMiddleware.d.ts +1 -0
  46. package/dist/api/middleware/AuthMiddleware.js +13 -1
  47. package/dist/api/middleware/AuthMiddleware.js.map +1 -1
  48. package/dist/api/protocol-metadata.d.ts +4 -0
  49. package/dist/api/protocol-metadata.js +64 -0
  50. package/dist/api/protocol-metadata.js.map +1 -0
  51. package/dist/api/reconciler/ClientReconcilerCoordinator.d.ts +42 -0
  52. package/dist/api/reconciler/ClientReconcilerCoordinator.js +250 -0
  53. package/dist/api/reconciler/ClientReconcilerCoordinator.js.map +1 -0
  54. package/dist/api/reconciler/ClientReconcilerCoordinator.jsonld +186 -0
  55. package/dist/api/reconciler/ServerGroupReconcilerService.d.ts +39 -0
  56. package/dist/api/reconciler/ServerGroupReconcilerService.js +91 -0
  57. package/dist/api/reconciler/ServerGroupReconcilerService.js.map +1 -0
  58. package/dist/api/reconciler/ServerGroupReconcilerService.jsonld +146 -0
  59. package/dist/api/reconciler/WakeAgentQueue.d.ts +23 -0
  60. package/dist/api/reconciler/WakeAgentQueue.js +123 -0
  61. package/dist/api/reconciler/WakeAgentQueue.js.map +1 -0
  62. package/dist/api/reconciler/WakeAgentQueue.jsonld +91 -0
  63. package/dist/api/reconciler/coordination.d.ts +61 -0
  64. package/dist/api/reconciler/coordination.js +109 -0
  65. package/dist/api/reconciler/coordination.js.map +1 -0
  66. package/dist/api/reconciler/coordination.jsonld +186 -0
  67. package/dist/api/reconciler/index.d.ts +4 -0
  68. package/dist/api/reconciler/index.js +21 -0
  69. package/dist/api/reconciler/index.js.map +1 -0
  70. package/dist/api/runs/ManagedRunWorker.js +0 -5
  71. package/dist/api/runs/ManagedRunWorker.js.map +1 -1
  72. package/dist/api/runs/RunStateCenter.d.ts +1 -1
  73. package/dist/api/runs/RunStateCenter.js +12 -28
  74. package/dist/api/runs/RunStateCenter.js.map +1 -1
  75. package/dist/api/runs/store.d.ts +12 -15
  76. package/dist/api/runs/store.js +24 -15
  77. package/dist/api/runs/store.js.map +1 -1
  78. package/dist/api/tasks/TaskMaterializer.d.ts +1 -0
  79. package/dist/api/tasks/TaskMaterializer.js +10 -13
  80. package/dist/api/tasks/TaskMaterializer.js.map +1 -1
  81. package/dist/api/tasks/TaskService.d.ts +0 -2
  82. package/dist/api/tasks/TaskService.js +6 -16
  83. package/dist/api/tasks/TaskService.js.map +1 -1
  84. package/dist/api/tasks/store.d.ts +0 -2
  85. package/dist/api/tasks/store.js.map +1 -1
  86. package/dist/cli/commands/auth.d.ts +1 -1
  87. package/dist/cli/commands/auth.js +4 -5
  88. package/dist/cli/commands/auth.js.map +1 -1
  89. package/dist/cli/commands/backup.js +1 -1
  90. package/dist/cli/commands/backup.js.map +1 -1
  91. package/dist/cli/commands/login.js +1 -1
  92. package/dist/cli/commands/login.js.map +1 -1
  93. package/dist/cli/commands/pod.js +1 -1
  94. package/dist/cli/commands/pod.js.map +1 -1
  95. package/dist/cli/lib/auth-context.js +10 -7
  96. package/dist/cli/lib/auth-context.js.map +1 -1
  97. package/dist/cli/lib/auth-helper.d.ts +10 -6
  98. package/dist/cli/lib/auth-helper.js +10 -6
  99. package/dist/cli/lib/auth-helper.js.map +1 -1
  100. package/dist/cli/lib/credentials-store.d.ts +22 -4
  101. package/dist/cli/lib/credentials-store.js +68 -51
  102. package/dist/cli/lib/credentials-store.js.map +1 -1
  103. package/dist/cli/lib/oidc-auth.d.ts +4 -0
  104. package/dist/cli/lib/oidc-auth.js +90 -0
  105. package/dist/cli/lib/oidc-auth.js.map +1 -0
  106. package/dist/cli/lib/oidc-session-storage.d.ts +3 -0
  107. package/dist/cli/lib/oidc-session-storage.js +41 -0
  108. package/dist/cli/lib/oidc-session-storage.js.map +1 -0
  109. package/dist/components/components.jsonld +5 -1
  110. package/dist/components/context.jsonld +103 -0
  111. package/dist/index.d.ts +1 -0
  112. package/dist/index.js +15 -0
  113. package/dist/index.js.map +1 -1
  114. package/dist/provision/LocalPodProvisioningService.d.ts +1 -0
  115. package/dist/provision/LocalPodProvisioningService.js +9 -0
  116. package/dist/provision/LocalPodProvisioningService.js.map +1 -1
  117. package/dist/provision/LocalPodProvisioningService.jsonld +4 -0
  118. package/dist/runtime/Proxy.d.ts +1 -0
  119. package/dist/runtime/Proxy.js +8 -1
  120. package/dist/runtime/Proxy.js.map +1 -1
  121. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.d.ts.map +1 -1
  122. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.js +19 -9
  123. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/select-query-builder.js.map +1 -1
  124. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.d.ts.map +1 -1
  125. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.js +19 -9
  126. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/select-query-builder.js.map +1 -1
  127. package/node_modules/@undefineds.co/drizzle-solid/package.json +1 -1
  128. package/package.json +5 -4
package/bin/xpod.js CHANGED
File without changes
@@ -14,10 +14,10 @@ class MultiAuthenticator {
14
14
  return this.authenticators.some((auth) => auth.canAuthenticate(request));
15
15
  }
16
16
  async authenticate(request) {
17
- console.log(`[MultiAuthenticator] Starting authentication with ${this.authenticators.length} authenticators`);
17
+ this.logger.debug(`Starting authentication with ${this.authenticators.length} authenticators`);
18
18
  for (const authenticator of this.authenticators) {
19
19
  const canAuth = authenticator.canAuthenticate(request);
20
- console.log(`[MultiAuthenticator] ${authenticator.constructor.name}.canAuthenticate: ${canAuth}`);
20
+ this.logger.debug(`${authenticator.constructor.name}.canAuthenticate: ${canAuth}`);
21
21
  if (canAuth) {
22
22
  const result = await authenticator.authenticate(request);
23
23
  if (result.success) {
@@ -1 +1 @@
1
- {"version":3,"file":"MultiAuthenticator.js","sourceRoot":"","sources":["../../../src/api/auth/MultiAuthenticator.ts"],"names":[],"mappings":";;;AACA,iEAAqD;AAOrD;;GAEG;AACH,MAAa,kBAAkB;IAI7B,YAAmB,OAAkC;QAHpC,WAAM,GAAG,IAAA,oCAAY,EAAC,IAAI,CAAC,CAAC;QAI3C,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IAC/C,CAAC;IAEM,eAAe,CAAC,OAAwB;QAC7C,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3E,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,OAAwB;QAChD,OAAO,CAAC,GAAG,CAAC,qDAAqD,IAAI,CAAC,cAAc,CAAC,MAAM,iBAAiB,CAAC,CAAC;QAC9G,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAChD,MAAM,OAAO,GAAG,aAAa,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YACvD,OAAO,CAAC,GAAG,CAAC,wBAAwB,aAAa,CAAC,WAAW,CAAC,IAAI,qBAAqB,OAAO,EAAE,CAAC,CAAC;YAClG,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;gBACzD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACnB,OAAO,MAAM,CAAC;gBAChB,CAAC;gBACD,4DAA4D;gBAC5D,sCAAsC;gBACtC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC3D,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,kCAAkC,EAAE,CAAC;IACvE,CAAC;CACF;AA/BD,gDA+BC","sourcesContent":["import type { IncomingMessage } from 'node:http';\nimport { getLoggerFor } from 'global-logger-factory';\nimport type { Authenticator, AuthResult } from './Authenticator';\n\nexport interface MultiAuthenticatorOptions {\n authenticators: Authenticator[];\n}\n\n/**\n * Combines multiple authenticators, trying each in order\n */\nexport class MultiAuthenticator implements Authenticator {\n private readonly logger = getLoggerFor(this);\n private readonly authenticators: Authenticator[];\n\n public constructor(options: MultiAuthenticatorOptions) {\n this.authenticators = options.authenticators;\n }\n\n public canAuthenticate(request: IncomingMessage): boolean {\n return this.authenticators.some((auth) => auth.canAuthenticate(request));\n }\n\n public async authenticate(request: IncomingMessage): Promise<AuthResult> {\n console.log(`[MultiAuthenticator] Starting authentication with ${this.authenticators.length} authenticators`);\n for (const authenticator of this.authenticators) {\n const canAuth = authenticator.canAuthenticate(request);\n console.log(`[MultiAuthenticator] ${authenticator.constructor.name}.canAuthenticate: ${canAuth}`);\n if (canAuth) {\n const result = await authenticator.authenticate(request);\n if (result.success) {\n return result;\n }\n // If this authenticator claimed it could handle but failed,\n // don't try others - return the error\n this.logger.debug(`Authenticator failed: ${result.error}`);\n return result;\n }\n }\n\n return { success: false, error: 'No valid authentication provided' };\n }\n}\n"]}
1
+ {"version":3,"file":"MultiAuthenticator.js","sourceRoot":"","sources":["../../../src/api/auth/MultiAuthenticator.ts"],"names":[],"mappings":";;;AACA,iEAAqD;AAOrD;;GAEG;AACH,MAAa,kBAAkB;IAI7B,YAAmB,OAAkC;QAHpC,WAAM,GAAG,IAAA,oCAAY,EAAC,IAAI,CAAC,CAAC;QAI3C,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IAC/C,CAAC;IAEM,eAAe,CAAC,OAAwB;QAC7C,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3E,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,OAAwB;QAChD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,IAAI,CAAC,cAAc,CAAC,MAAM,iBAAiB,CAAC,CAAC;QAC/F,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAChD,MAAM,OAAO,GAAG,aAAa,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YACvD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC,WAAW,CAAC,IAAI,qBAAqB,OAAO,EAAE,CAAC,CAAC;YACnF,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;gBACzD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACnB,OAAO,MAAM,CAAC;gBAChB,CAAC;gBACD,4DAA4D;gBAC5D,sCAAsC;gBACtC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC3D,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,kCAAkC,EAAE,CAAC;IACvE,CAAC;CACF;AA/BD,gDA+BC","sourcesContent":["import type { IncomingMessage } from 'node:http';\nimport { getLoggerFor } from 'global-logger-factory';\nimport type { Authenticator, AuthResult } from './Authenticator';\n\nexport interface MultiAuthenticatorOptions {\n authenticators: Authenticator[];\n}\n\n/**\n * Combines multiple authenticators, trying each in order\n */\nexport class MultiAuthenticator implements Authenticator {\n private readonly logger = getLoggerFor(this);\n private readonly authenticators: Authenticator[];\n\n public constructor(options: MultiAuthenticatorOptions) {\n this.authenticators = options.authenticators;\n }\n\n public canAuthenticate(request: IncomingMessage): boolean {\n return this.authenticators.some((auth) => auth.canAuthenticate(request));\n }\n\n public async authenticate(request: IncomingMessage): Promise<AuthResult> {\n this.logger.debug(`Starting authentication with ${this.authenticators.length} authenticators`);\n for (const authenticator of this.authenticators) {\n const canAuth = authenticator.canAuthenticate(request);\n this.logger.debug(`${authenticator.constructor.name}.canAuthenticate: ${canAuth}`);\n if (canAuth) {\n const result = await authenticator.authenticate(request);\n if (result.success) {\n return result;\n }\n // If this authenticator claimed it could handle but failed,\n // don't try others - return the error\n this.logger.debug(`Authenticator failed: ${result.error}`);\n return result;\n }\n }\n\n return { success: false, error: 'No valid authentication provided' };\n }\n}\n"]}
@@ -4,8 +4,10 @@ import { type RunListOptions, type RunRecordData, type RunStepRecordData, type R
4
4
  import { type TaskListOptions, type TaskRecordData, type TaskStore } from '../tasks/store';
5
5
  import { type TaskAuthBindingRepository } from '../tasks/TaskAuthBinding';
6
6
  import { CredentialStatus } from '../../credential/schema/types';
7
+ import { type ServerGroupReconcilerService } from '../reconciler';
7
8
  export interface PodChatKitStoreOptions {
8
9
  tokenEndpoint: string;
10
+ serverGroupReconcilerService?: ServerGroupReconcilerService;
9
11
  }
10
12
  /**
11
13
  * Pod-based ChatKit Store implementation
@@ -13,13 +15,13 @@ export interface PodChatKitStoreOptions {
13
15
  * 数据模型映射:
14
16
  * - ChatKit thread = Thread (sioc:Thread)
15
17
  * - ChatKit thread item = Message (meeting:Message)
16
- * - ChatKit 协议里的 chat_id 在内部映射为 surfaceId
17
- *
18
- * 每个 Thread 属于一个 Chat 容器。默认使用 'default' Chat。
18
+ * - Thread 通过 sioc:has_parent 归属到 Chat 或 Task command surface。
19
+ * - ChatKit/API 的 opaque 字段不进入 Pod 持久 metadata;内部存储路径从 parent/id 派生。
19
20
  */
20
21
  export declare class PodChatKitStore implements ChatKitStore<StoreContext>, RunStore<StoreContext>, TaskStore<StoreContext>, TaskAuthBindingRepository<StoreContext> {
21
22
  private readonly logger;
22
23
  private readonly tokenEndpoint;
24
+ private readonly serverGroupReconcilerService?;
23
25
  /** 默认 Chat 容器 ID */
24
26
  private static readonly DEFAULT_CHAT_ID;
25
27
  constructor(options: PodChatKitStoreOptions);
@@ -47,19 +49,25 @@ export declare class PodChatKitStore implements ChatKitStore<StoreContext>, RunS
47
49
  * 将字符串转为 ThreadStatus 对象
48
50
  */
49
51
  private stringToStatus;
50
- private getCommandKindFromMetadata;
51
- private getSurfaceIdFromMetadata;
52
+ private readMetadataString;
52
53
  private isBaseRelativeChatResourceId;
53
54
  private buildChatResourceId;
55
+ private buildMessageParentResourceId;
54
56
  private chatSurfaceIdFromResourceId;
55
57
  private chatSurfaceIdFromResource;
58
+ private commandSurfaceFromResourceRef;
59
+ private resolveTaskParentResource;
60
+ private resolveExplicitThreadParentResource;
61
+ private resolveThreadParent;
62
+ private threadStoredMetadata;
63
+ private mentionsFromUserMessageContent;
56
64
  /**
57
65
  * 确保 Chat 容器存在,如果不存在则创建
58
66
  */
59
67
  private ensureChat;
60
68
  /**
61
- * 将 ThreadRecord 转为 ThreadMetadata
62
- * ChatKit 边界继续暴露 metadata.chat_id;内部同一值叫 surface_id。
69
+ * 将 ThreadRecord 转为 ThreadMetadata
70
+ * Pod 中以 thread.parent 作为权威归属关系,metadata 只返回业务扩展字段。
63
71
  */
64
72
  private threadRecordToMetadata;
65
73
  private timestampToIso;
@@ -90,16 +98,6 @@ export declare class PodChatKitStore implements ChatKitStore<StoreContext>, RunS
90
98
  * thread_id 返回 Message 所属的 Thread ID
91
99
  */
92
100
  private messageRecordToItem;
93
- /**
94
- * 获取或构建 Chat resource -> surface id 的映射缓存。
95
- * drizzle-solid 的 link(Chat) 字段返回完整资源引用,通过 Chat 的 @id 比对还原路径槽位。
96
- */
97
- private getChatResourceMap;
98
- /**
99
- * 从 Chat resource 还原 surface id。
100
- * 优先通过 @id 映射;若调用方本来给的是裸 ID,则原样使用。
101
- */
102
- private resolveChatSurfaceFromResource;
103
101
  private isAbsoluteHttpResource;
104
102
  private parseThreadResource;
105
103
  private normalizeThreadCacheKey;
@@ -131,6 +129,7 @@ export declare class PodChatKitStore implements ChatKitStore<StoreContext>, RunS
131
129
  deleteThread(thread: ThreadRef, context: StoreContext): Promise<void>;
132
130
  loadThreadItems(thread: ThreadRef, after: string | undefined, limit: number, order: string, context: StoreContext): Promise<Page<ThreadItem>>;
133
131
  addThreadItem(thread: ThreadRef, item: ThreadItem, context: StoreContext): Promise<void>;
132
+ private reconcileGroupUserMessage;
134
133
  private recentlyCreatedIds;
135
134
  saveItem(thread: ThreadRef, item: ThreadItem, context: StoreContext): Promise<void>;
136
135
  /**