@ganglion/xacpx 0.9.2 → 0.9.3

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.
@@ -635,7 +635,6 @@ export interface CliUpdateMessages {
635
635
  updateFailed: (name: string, error: string) => string;
636
636
  targetNotFound: (name: string) => string;
637
637
  targetVersionUnknown: (name: string) => string;
638
- targetNotPinned: (name: string) => string;
639
638
  multiTargetNonInteractive: string;
640
639
  selectionPrompt: string;
641
640
  selectionInvalid: (part: string) => string;
@@ -0,0 +1,27 @@
1
+ /**
2
+ * The orchestration coordinator identity is derived from a session's transport
3
+ * name. `/clear` rotates that name from `workspace:alias` to
4
+ * `workspace:alias:reset-<timestamp>` (see session-reset-handler), which would
5
+ * otherwise orphan every task delegated before the reset. Stripping the
6
+ * volatile `:reset-<digits>` suffix yields the stable `workspace:alias` identity
7
+ * so ownership survives `/clear`.
8
+ *
9
+ * Pure leaf module: do not add imports, so it can be used from sessions/,
10
+ * commands/, and orchestration/ without risking an import cycle.
11
+ *
12
+ * No-op on any value lacking a trailing `:reset-<digits>` segment, so external
13
+ * coordinators (`external_*`) and normal sessions pass through unchanged.
14
+ */
15
+ export declare function stableCoordinatorSession(transportSession: string): string;
16
+ /**
17
+ * The single chokepoint for asking "do these two transport names refer to the
18
+ * same coordinator?". Both sides are reduced to their stable identity before
19
+ * comparison, so it is robust to either side carrying a volatile
20
+ * `:reset-<digits>` suffix (a live post-`/clear` session, or a legacy
21
+ * state.json record persisted before the identity was normalized at write).
22
+ *
23
+ * Every coordinator-ownership comparison must go through this rather than a raw
24
+ * `===`, so the normalization rule lives in one place instead of being
25
+ * re-derived (and inconsistently forgotten) at each call site.
26
+ */
27
+ export declare function sameCoordinatorSession(a: string, b: string): boolean;
@@ -206,23 +206,6 @@ export interface CleanTasksResult {
206
206
  removedTasks: number;
207
207
  removedBindings: number;
208
208
  }
209
- export type ResetGcTrigger = "startup" | "interval";
210
- export interface PurgeExpiredResetCoordinatorsInput {
211
- cutoffDays: number;
212
- trigger: ResetGcTrigger;
213
- }
214
- export interface PurgeExpiredResetCoordinatorsResult {
215
- candidates: number;
216
- purgedCoordinators: number;
217
- removed: {
218
- tasks: number;
219
- workerBindings: number;
220
- groups: number;
221
- coordinatorRoutes: number;
222
- humanQuestionPackages: number;
223
- coordinatorQuestionState: number;
224
- };
225
- }
226
209
  export interface OrchestrationTaskFilter {
227
210
  sourceHandle?: string;
228
211
  coordinatorSession?: string;
@@ -361,7 +344,6 @@ export declare class OrchestrationService {
361
344
  cleanTasks(coordinatorSession: string): Promise<CleanTasksResult>;
362
345
  listSessionBlockingTasks(transportSession: string): Promise<OrchestrationTaskRecord[]>;
363
346
  purgeSessionReferences(transportSession: string): Promise<CleanTasksResult>;
364
- purgeExpiredResetCoordinators(input: PurgeExpiredResetCoordinatorsInput): Promise<PurgeExpiredResetCoordinatorsResult>;
365
347
  listPendingCoordinatorResults(coordinatorSession: string): Promise<OrchestrationTaskRecord[]>;
366
348
  listPendingCoordinatorBlockers(coordinatorSession: string): Promise<OrchestrationTaskRecord[]>;
367
349
  listContestedCoordinatorResults(coordinatorSession: string): Promise<OrchestrationTaskRecord[]>;
@@ -439,11 +421,6 @@ export declare class OrchestrationService {
439
421
  private ensureGroups;
440
422
  private removeEmptyGroupsForCoordinator;
441
423
  private removeCoordinatorMetadataIfUnused;
442
- private isResetCoordinatorSession;
443
- private collectResetCoordinatorCandidates;
444
- private parseDateMs;
445
- private resolveResetCoordinatorActivityAtMs;
446
- private cascadeRemoveCoordinatorRecords;
447
424
  private bumpGroupUpdated;
448
425
  private getLatestDeliveredPackageMessage;
449
426
  private snapshotCoordinatorDeliveryRoute;
@@ -826,7 +826,6 @@ var init_cli_update = __esm(() => {
826
826
  updateFailed: (name, error) => `${name} update failed: ${error}`,
827
827
  targetNotFound: (name) => `Update target not found: ${name}`,
828
828
  targetVersionUnknown: (name) => `${name}: cannot check latest version; skipped.`,
829
- targetNotPinned: (name) => `${name} has no recorded version; use \`xacpx plugin update ${name}\` or specify a version explicitly.`,
830
829
  multiTargetNonInteractive: "Installed plugins detected; in non-interactive mode use `xacpx update --all` or `xacpx update <name>`.",
831
830
  selectionPrompt: "Select items to update (numbers, comma-separated; a=all; Enter to cancel): ",
832
831
  selectionInvalid: (part) => `Invalid selection: ${part}`,
@@ -1897,7 +1896,6 @@ var init_cli_update2 = __esm(() => {
1897
1896
  updateFailed: (name, error) => `${name} 更新失败:${error}`,
1898
1897
  targetNotFound: (name) => `没有找到更新项:${name}`,
1899
1898
  targetVersionUnknown: (name) => `${name} 无法检查最新版本,已跳过。`,
1900
- targetNotPinned: (name) => `${name} 未记录当前版本;请先使用 \`xacpx plugin update ${name}\` 或显式选择版本。`,
1901
1899
  multiTargetNonInteractive: "检测到已安装插件;非交互模式请使用 `xacpx update --all` 或 `xacpx update <name>`。",
1902
1900
  selectionPrompt: "请选择要更新的项目(数字,逗号分隔,a=全部,回车取消):",
1903
1901
  selectionInvalid: (part) => `无效选择:${part}`,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ganglion/xacpx",
3
- "version": "0.9.2",
3
+ "version": "0.9.3",
4
4
  "description": "随时随地通过聊天频道(微信 / 飞书 / 元宝等)远程控制 `acpx` 上的 Claude Code、Codex 等 Agents。",
5
5
  "keywords": [
6
6
  "acpx",