openfeel 1.2.0 → 1.2.1

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 (88) hide show
  1. package/README.en.md +27 -8
  2. package/README.md +24 -5
  3. package/README.zh-CN.md +27 -8
  4. package/bin/openfeel.js +3 -2
  5. package/dist/cli/index.d.ts.map +1 -1
  6. package/dist/cli/index.js +5 -4
  7. package/dist/cli/index.js.map +1 -1
  8. package/dist/commands/config.d.ts.map +1 -1
  9. package/dist/commands/config.js +6 -0
  10. package/dist/commands/config.js.map +1 -1
  11. package/dist/commands/flow.d.ts.map +1 -1
  12. package/dist/commands/flow.js +106 -8
  13. package/dist/commands/flow.js.map +1 -1
  14. package/dist/commands/plan.d.ts.map +1 -1
  15. package/dist/commands/plan.js +7 -1
  16. package/dist/commands/plan.js.map +1 -1
  17. package/dist/commands/req.d.ts +2 -1
  18. package/dist/commands/req.d.ts.map +1 -1
  19. package/dist/commands/req.js +199 -26
  20. package/dist/commands/req.js.map +1 -1
  21. package/dist/commands/stage.d.ts.map +1 -1
  22. package/dist/commands/stage.js +7 -1
  23. package/dist/commands/stage.js.map +1 -1
  24. package/dist/core/config.d.ts +6 -4
  25. package/dist/core/config.d.ts.map +1 -1
  26. package/dist/core/config.js +6 -5
  27. package/dist/core/config.js.map +1 -1
  28. package/dist/core/flow-manager.d.ts +60 -9
  29. package/dist/core/flow-manager.d.ts.map +1 -1
  30. package/dist/core/flow-manager.js +189 -38
  31. package/dist/core/flow-manager.js.map +1 -1
  32. package/dist/core/i18n-data/en.d.ts.map +1 -1
  33. package/dist/core/i18n-data/en.js +44 -8
  34. package/dist/core/i18n-data/en.js.map +1 -1
  35. package/dist/core/i18n-data/zh-CN.d.ts.map +1 -1
  36. package/dist/core/i18n-data/zh-CN.js +44 -8
  37. package/dist/core/i18n-data/zh-CN.js.map +1 -1
  38. package/dist/core/managed-region.d.ts +16 -2
  39. package/dist/core/managed-region.d.ts.map +1 -1
  40. package/dist/core/managed-region.js +24 -3
  41. package/dist/core/managed-region.js.map +1 -1
  42. package/dist/core/metrics.d.ts +2 -0
  43. package/dist/core/metrics.d.ts.map +1 -1
  44. package/dist/core/metrics.js +15 -0
  45. package/dist/core/metrics.js.map +1 -1
  46. package/dist/core/model-config.d.ts +1 -1
  47. package/dist/core/model-config.d.ts.map +1 -1
  48. package/dist/core/model-config.js +2 -2
  49. package/dist/core/model-config.js.map +1 -1
  50. package/dist/core/opencode-config.js +1 -1
  51. package/dist/core/opencode-config.js.map +1 -1
  52. package/dist/core/pipeline-schema.d.ts +15 -0
  53. package/dist/core/pipeline-schema.d.ts.map +1 -1
  54. package/dist/core/pipeline-schema.js +17 -0
  55. package/dist/core/pipeline-schema.js.map +1 -1
  56. package/dist/core/plan/stage.d.ts +2 -1
  57. package/dist/core/plan/stage.d.ts.map +1 -1
  58. package/dist/core/plan/stage.js +7 -2
  59. package/dist/core/plan/stage.js.map +1 -1
  60. package/dist/core/req/aggregate.d.ts +2 -1
  61. package/dist/core/req/aggregate.d.ts.map +1 -1
  62. package/dist/core/req/aggregate.js.map +1 -1
  63. package/dist/core/req/body-file.d.ts.map +1 -1
  64. package/dist/core/req/body-file.js +7 -3
  65. package/dist/core/req/body-file.js.map +1 -1
  66. package/dist/core/req/requirement-ops.d.ts +44 -2
  67. package/dist/core/req/requirement-ops.d.ts.map +1 -1
  68. package/dist/core/req/requirement-ops.js +108 -3
  69. package/dist/core/req/requirement-ops.js.map +1 -1
  70. package/dist/core/req/types.d.ts +7 -1
  71. package/dist/core/req/types.d.ts.map +1 -1
  72. package/dist/core/req/types.js +0 -6
  73. package/dist/core/req/types.js.map +1 -1
  74. package/dist/core/runtime-log.d.ts +18 -0
  75. package/dist/core/runtime-log.d.ts.map +1 -1
  76. package/dist/core/runtime-log.js +72 -0
  77. package/dist/core/runtime-log.js.map +1 -1
  78. package/dist/core/session.d.ts +24 -0
  79. package/dist/core/session.d.ts.map +1 -0
  80. package/dist/core/session.js +107 -0
  81. package/dist/core/session.js.map +1 -0
  82. package/dist/core/template-loader.d.ts.map +1 -1
  83. package/dist/core/template-loader.js +2982 -6686
  84. package/dist/core/template-loader.js.map +1 -1
  85. package/dist/core/update.d.ts.map +1 -1
  86. package/dist/core/update.js +694 -33
  87. package/dist/core/update.js.map +1 -1
  88. package/package.json +1 -1
@@ -4,12 +4,14 @@
4
4
  * 职责:需求读取(读侧宽容 + 浅副本)、ID 分配、写路径原语(add / claim / release / update / advance / link)
5
5
  * 与共用谓词(终态判定 / 全部关联阶段 done)。全部为**纯内存**操作 + 审计内嵌(`data.log`),
6
6
  * 零独立写盘点——落盘恒走调用方(命令层)的 `FlowManager` 落盘方法。
7
- * 正交声明:不依赖归档层 / 不引用工作流模式字段。
7
+ * 边界声明:不依赖归档层;模式属性(workflow_mode?)为调度属性——本层只做「值域校验 + 载体制门」,
8
+ * 解析 / 下发单点在 FlowManager;不参与聚合判定。
8
9
  */
9
10
  import type { FlowData } from '../flow-manager.js';
11
+ import { type WorkflowMode } from '../config.js';
10
12
  import { type RequirementData, type RequirementPriority, type RequirementStatus } from './types.js';
11
13
  /** 需求原语错误码(冻结;命令层据此映射 exit 非 0 零写盘) */
12
- export type RequirementErrorCode = 'not_found' | 'stage_not_found' | 'already_claimed' | 'already_linked' | 'invalid_status' | 'invalid_field';
14
+ export type RequirementErrorCode = 'not_found' | 'stage_not_found' | 'already_claimed' | 'already_linked' | 'invalid_status' | 'invalid_field' | 'general_mode_conflict';
13
15
  /** 写路径原语结果(ok=false 时携错误码;命令层映射 exit 非 0 零写盘) */
14
16
  export type RequirementOpResult = {
15
17
  ok: true;
@@ -18,6 +20,14 @@ export type RequirementOpResult = {
18
20
  ok: false;
19
21
  code: RequirementErrorCode;
20
22
  };
23
+ /** 拆分原语结果(成功携子需求**本体**列表;失败携错误码——**业务分流范式**,REV-87-002 定稿) */
24
+ export type RequirementSplitResult = {
25
+ ok: true;
26
+ children: RequirementData[];
27
+ } | {
28
+ ok: false;
29
+ code: RequirementErrorCode;
30
+ };
21
31
  /** 全量需求(读侧宽容:缺失/非数组 → [];数组 + 元素浅副本,防外部直改内存) */
22
32
  export declare function getRequirements(data: FlowData): RequirementData[];
23
33
  /** 按 id 查询(未命中 null;返回浅副本) */
@@ -34,6 +44,15 @@ export declare function nextRequirementId(data: FlowData): string;
34
44
  export declare function isTerminalRequirementStatus(status: RequirementStatus): boolean;
35
45
  /** 裁定 4:全部关联阶段 done(零关联 → false,空集守卫) */
36
46
  export declare function allLinkedStagesDone(data: FlowData, requirementId: string): boolean;
47
+ /**
48
+ * 完成门判据(BUG-002 单点收口;裁定 4 扩展为两路——stage-93):
49
+ * 路 1(不变):非 general 需求 → allLinkedStagesDone(有阶段且全 done;零关联恒 false);
50
+ * 路 2(新增):general 需求 → 载体制对偶完成路径(显式完成直接放行;general 恒零关联,
51
+ * 由双向载体制门保证——updateRequirement / linkRequirement)。
52
+ * 判据来源 = 需求自身 workflow_mode 字段直判(与载体制门同源;禁解析级联——解析链仅作用于阶段侧调度)。
53
+ * 防御:general 且有链接 = 载体制门不可达的数据损坏态 → 从严回落路 1(不因模式字段获得额外豁免)。
54
+ */
55
+ export declare function canCompleteRequirement(data: FlowData, req: RequirementData): boolean;
37
56
  /**
38
57
  * 新建需求(恒 `status: 'draft'`;读侧宽容写路径;返回**本体**供调用方继续设 body_path)。
39
58
  * 非法入参(空 title / 非法 priority / 空 target_version)属构造期契约违反 → 抛错(唯一抛错原语,REV-81-015)。
@@ -43,7 +62,29 @@ export declare function addRequirement(data: FlowData, input: {
43
62
  title: string;
44
63
  target_version?: string;
45
64
  priority?: RequirementPriority;
65
+ workflow_mode?: WorkflowMode;
46
66
  }): RequirementData;
67
+ /**
68
+ * 拆分需求为若干子需求(T1 / Q4 定稿;纯内存 + 单条审计,落盘恒由调用方 save())。
69
+ * 门(顺序固定;任一失败 → **零变更零审计**):
70
+ * ① children 非数组 / 空 → invalid_field(argument-shape)
71
+ * ② 父不存在 → not_found
72
+ * ③ 父终态 → invalid_status(与 claim / link 同款终态门)
73
+ * ④ 逐子项标题校验(trim 后空串)→ invalid_field
74
+ * —— **校验内容**对齐 add 构造期口径,**错误范式**为运行期错误码(REV-87-002 定稿:
75
+ * split 不复用 add 的抛错路径,自持校验循环,与 update 同族——命令层 failCode 分流零适配)。
76
+ * 构造(校验全通过后单趟完成,循环内零可失败语句):
77
+ * - 顺序分配 ID:第 N 子 = 当前 max + N(经 staged 容器复用 nextRequirementId **单源派生**——不新写解析);
78
+ * - parent_id = 父 ID;status = SPLIT_CHILD_STATUS;created_at / updated_at 同批;
79
+ * - **一次性并入** data.requirements(半成品不可达——全成或零变更);
80
+ * - 审计恰一条 requirement_split(detail {parentId, children: [ids]}——对齐 requirement_* 族命名);
81
+ * - 父需求**零副作用**(状态不变 / 不刷 updated_at / 不写父侧字段——父流转由 feel 显式执行)。
82
+ * 环检测:不写——子 ID 恒为新建 max+1、方向恒 `child → parent`,结构上无环。
83
+ * 返回子需求**本体**列表(供调用方逐条铺正文,对齐 addRequirement 返回本体先例;禁浅副本路径)。
84
+ */
85
+ export declare function splitRequirement(data: FlowData, parentId: string, children: Array<{
86
+ title: string;
87
+ }>): RequirementSplitResult;
47
88
  /** 认领需求(占用校验;同 owner 幂等;终态拒绝;他人占用零变更零审计) */
48
89
  export declare function claimRequirement(data: FlowData, id: string, owner: string): RequirementOpResult;
49
90
  /** 释放认领(裁定 5:无占用者 = no-op 成功——不刷 updated_at / 不写审计;不设状态门) */
@@ -62,6 +103,7 @@ export declare function updateRequirement(data: FlowData, id: string, patch: {
62
103
  title?: string;
63
104
  target_version?: string;
64
105
  priority?: RequirementPriority;
106
+ workflow_mode?: WorkflowMode;
65
107
  }): RequirementOpResult;
66
108
  /** 显式人工推进(裁定 M);语义与 update({status}) 完全一致(同表同门同审计,零第二套) */
67
109
  export declare function advanceRequirement(data: FlowData, id: string, to: RequirementStatus): RequirementOpResult;
@@ -1 +1 @@
1
- {"version":3,"file":"requirement-ops.d.ts","sourceRoot":"","sources":["../../../src/core/req/requirement-ops.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAEL,KAAK,eAAe,EAAE,KAAK,mBAAmB,EAAE,KAAK,iBAAiB,EACvE,MAAM,YAAY,CAAC;AAEpB,uCAAuC;AACvC,MAAM,MAAM,oBAAoB,GAC5B,WAAW,GACX,iBAAiB,GACjB,iBAAiB,GACjB,gBAAgB,GAChB,gBAAgB,GAChB,eAAe,CAAC;AAEpB,iDAAiD;AACjD,MAAM,MAAM,mBAAmB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,oBAAoB,CAAA;CAAE,CAAC;AAS7G,gDAAgD;AAChD,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,GAAG,eAAe,EAAE,CAGjE;AAED,8BAA8B;AAC9B,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAGjF;AAED,kGAAkG;AAClG,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,QAAQ,EACd,MAAM,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/E,eAAe,EAAE,CAMnB;AAED,gDAAgD;AAChD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CASxD;AAED,qDAAqD;AACrD,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAE9E;AAED,yCAAyC;AACzC,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAGlF;AAID;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,mBAAmB,CAAA;CAAE,GAChF,eAAe,CAuBjB;AAED,4CAA4C;AAC5C,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,mBAAmB,CAa/F;AAED,6DAA6D;AAC7D,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,mBAAmB,CASlF;AAWD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,iBAAiB,GAAG,iBAAiB,EAAE,CAErF;AAoBD;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,QAAQ,EACd,EAAE,EAAE,MAAM,EACV,KAAK,EAAE;IAAE,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,mBAAmB,CAAA;CAAE,GAC7G,mBAAmB,CAyDrB;AAED,2DAA2D;AAC3D,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,iBAAiB,GAAG,mBAAmB,CAEzG;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,mBAAmB,CAoBlH"}
1
+ {"version":3,"file":"requirement-ops.d.ts","sourceRoot":"","sources":["../../../src/core/req/requirement-ops.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { WORKFLOW_MODES } from '../config.js'; // 值域单源(运行时值导入,禁就地三值字面量)
1
2
  import { REQ_ID_PATTERN, REQ_PRIORITIES, REQ_STATUSES, } from './types.js';
2
3
  /** 追加需求审计日志(纯内存;save 由调用方承担) */
3
4
  function appendRequirementLog(data, action, detail) {
@@ -52,6 +53,23 @@ export function allLinkedStagesDone(data, requirementId) {
52
53
  const linked = Object.values(data.stages ?? {}).filter((s) => (s.requirement_id ?? null) === requirementId);
53
54
  return linked.length > 0 && linked.every((s) => s.phase === 'done');
54
55
  }
56
+ /**
57
+ * 完成门判据(BUG-002 单点收口;裁定 4 扩展为两路——stage-93):
58
+ * 路 1(不变):非 general 需求 → allLinkedStagesDone(有阶段且全 done;零关联恒 false);
59
+ * 路 2(新增):general 需求 → 载体制对偶完成路径(显式完成直接放行;general 恒零关联,
60
+ * 由双向载体制门保证——updateRequirement / linkRequirement)。
61
+ * 判据来源 = 需求自身 workflow_mode 字段直判(与载体制门同源;禁解析级联——解析链仅作用于阶段侧调度)。
62
+ * 防御:general 且有链接 = 载体制门不可达的数据损坏态 → 从严回落路 1(不因模式字段获得额外豁免)。
63
+ */
64
+ export function canCompleteRequirement(data, req) {
65
+ if (req.workflow_mode === 'general') {
66
+ const hasLinked = Object.values(data.stages ?? {}).some((s) => (s.requirement_id ?? null) === req.id);
67
+ if (!hasLinked) {
68
+ return true;
69
+ }
70
+ }
71
+ return allLinkedStagesDone(data, req.id);
72
+ }
55
73
  // ═══ 写路径原语 ═══
56
74
  /**
57
75
  * 新建需求(恒 `status: 'draft'`;读侧宽容写路径;返回**本体**供调用方继续设 body_path)。
@@ -66,6 +84,9 @@ export function addRequirement(data, input) {
66
84
  if (input.priority !== undefined && !REQ_PRIORITIES.includes(input.priority)) {
67
85
  throw new Error(`需求优先级非法:${String(input.priority)}`); // 值域单点 = REQ_PRIORITIES
68
86
  }
87
+ if (input.workflow_mode !== undefined && !WORKFLOW_MODES.includes(input.workflow_mode)) {
88
+ throw new Error(`需求工作流模式非法:${String(input.workflow_mode)}`); // 值域单点 = WORKFLOW_MODES
89
+ }
69
90
  // 命名统一(REV-81-012):API 面恒 target_version(与存储字段同名,零映射层)
70
91
  if (input.target_version !== undefined && String(input.target_version).trim() === '') {
71
92
  throw new Error('预估版本不能为空串');
@@ -86,10 +107,73 @@ export function addRequirement(data, input) {
86
107
  if (input.priority !== undefined) {
87
108
  req.priority = input.priority;
88
109
  }
110
+ if (input.workflow_mode !== undefined) {
111
+ req.workflow_mode = input.workflow_mode;
112
+ }
89
113
  data.requirements.push(req);
90
114
  appendRequirementLog(data, 'requirement_add', { id: req.id, title: req.title });
91
115
  return req; // 本体(调用方继续设 body_path)
92
116
  }
117
+ /** 子需求初值状态:拆分即发布(Q11 定稿——子需求直接入 `req next` 候选池,达成「并行接取就绪」) */
118
+ const SPLIT_CHILD_STATUS = 'scheduled';
119
+ /**
120
+ * 拆分需求为若干子需求(T1 / Q4 定稿;纯内存 + 单条审计,落盘恒由调用方 save())。
121
+ * 门(顺序固定;任一失败 → **零变更零审计**):
122
+ * ① children 非数组 / 空 → invalid_field(argument-shape)
123
+ * ② 父不存在 → not_found
124
+ * ③ 父终态 → invalid_status(与 claim / link 同款终态门)
125
+ * ④ 逐子项标题校验(trim 后空串)→ invalid_field
126
+ * —— **校验内容**对齐 add 构造期口径,**错误范式**为运行期错误码(REV-87-002 定稿:
127
+ * split 不复用 add 的抛错路径,自持校验循环,与 update 同族——命令层 failCode 分流零适配)。
128
+ * 构造(校验全通过后单趟完成,循环内零可失败语句):
129
+ * - 顺序分配 ID:第 N 子 = 当前 max + N(经 staged 容器复用 nextRequirementId **单源派生**——不新写解析);
130
+ * - parent_id = 父 ID;status = SPLIT_CHILD_STATUS;created_at / updated_at 同批;
131
+ * - **一次性并入** data.requirements(半成品不可达——全成或零变更);
132
+ * - 审计恰一条 requirement_split(detail {parentId, children: [ids]}——对齐 requirement_* 族命名);
133
+ * - 父需求**零副作用**(状态不变 / 不刷 updated_at / 不写父侧字段——父流转由 feel 显式执行)。
134
+ * 环检测:不写——子 ID 恒为新建 max+1、方向恒 `child → parent`,结构上无环。
135
+ * 返回子需求**本体**列表(供调用方逐条铺正文,对齐 addRequirement 返回本体先例;禁浅副本路径)。
136
+ */
137
+ export function splitRequirement(data, parentId, children) {
138
+ if (!Array.isArray(children) || children.length === 0) {
139
+ return { ok: false, code: 'invalid_field' };
140
+ }
141
+ const parent = (Array.isArray(data.requirements) ? data.requirements : []).find((r) => r?.id === parentId);
142
+ if (!parent) {
143
+ return { ok: false, code: 'not_found' };
144
+ }
145
+ if (isTerminalRequirementStatus(parent.status)) {
146
+ return { ok: false, code: 'invalid_status' };
147
+ }
148
+ const titles = [];
149
+ for (const c of children) {
150
+ const title = typeof c?.title === 'string' ? c.title.trim() : '';
151
+ if (title === '') {
152
+ return { ok: false, code: 'invalid_field' };
153
+ }
154
+ titles.push(title);
155
+ }
156
+ // staged 容器承载「当前 max」:复用 nextRequirementId 单源派生 → 顺序分配且不重解析
157
+ const list = Array.isArray(data.requirements) ? [...data.requirements] : [];
158
+ const staged = { ...data, requirements: list };
159
+ const now = new Date().toISOString();
160
+ const created = [];
161
+ for (const title of titles) {
162
+ const child = {
163
+ id: nextRequirementId(staged),
164
+ title,
165
+ status: SPLIT_CHILD_STATUS,
166
+ parent_id: parentId,
167
+ created_at: now,
168
+ updated_at: now,
169
+ };
170
+ list.push(child);
171
+ created.push(child);
172
+ }
173
+ data.requirements = list;
174
+ appendRequirementLog(data, 'requirement_split', { parentId, children: created.map((c) => c.id) });
175
+ return { ok: true, children: created };
176
+ }
93
177
  /** 认领需求(占用校验;同 owner 幂等;终态拒绝;他人占用零变更零审计) */
94
178
  export function claimRequirement(data, id, owner) {
95
179
  const name = typeof owner === 'string' ? owner.trim() : '';
@@ -159,9 +243,10 @@ function applyStatusChange(data, req, to) {
159
243
  if (!allowed || !allowed.includes(to)) {
160
244
  return false;
161
245
  }
162
- if (to === 'done' && !allLinkedStagesDone(data, req.id)) {
246
+ // 裁定 4 扩展(stage-93):completion 判据单点(canCompleteRequirement),不再直呼路 1
247
+ if (to === 'done' && !canCompleteRequirement(data, req)) {
163
248
  return false;
164
- } // 裁定 4(零关联拒绝)
249
+ }
165
250
  const from = req.status;
166
251
  req.status = to;
167
252
  req.updated_at = new Date().toISOString(); // 状态维度刷新(单次赋值纪律,REV-81-013)
@@ -169,7 +254,7 @@ function applyStatusChange(data, req, to) {
169
254
  return true;
170
255
  }
171
256
  /** 字段白名单(= RequirementData 可变字段名子集) */
172
- const PATCH_WHITELIST = ['status', 'title', 'target_version', 'priority'];
257
+ const PATCH_WHITELIST = ['status', 'title', 'target_version', 'priority', 'workflow_mode'];
173
258
  /**
174
259
  * 更新需求(patch 白名单;全部维度先校验后落地——校验失败整 patch 零变更)。
175
260
  * 恒 raw find 改 `data.requirements` 本体(禁经 getRequirement 的浅副本——副本陷阱,REV-81-011)。
@@ -206,6 +291,16 @@ export function updateRequirement(data, id, patch) {
206
291
  if (p.status !== undefined && !REQ_STATUSES.includes(p.status)) {
207
292
  return { ok: false, code: 'invalid_status' };
208
293
  }
294
+ if (p.workflow_mode !== undefined && !WORKFLOW_MODES.includes(p.workflow_mode)) {
295
+ return { ok: false, code: 'invalid_field' }; // 值域单点 = WORKFLOW_MODES
296
+ }
297
+ // 载体制门(D-90-4):general 仅限**无关联阶段**的需求(有链接阶段 → 拒绝;零变更零审计)
298
+ if (p.workflow_mode === 'general') {
299
+ const hasLinked = Object.values(data.stages ?? {}).some((s) => (s.requirement_id ?? null) === id);
300
+ if (hasLinked) {
301
+ return { ok: false, code: 'general_mode_conflict' };
302
+ }
303
+ }
209
304
  // ⑥ 状态维度(= 当前则无变更;≠ 走单点 applyStatusChange)
210
305
  let statusChanged = false;
211
306
  if (p.status !== undefined && p.status !== req.status) {
@@ -236,6 +331,12 @@ export function updateRequirement(data, id, patch) {
236
331
  changedFields.push('priority');
237
332
  }
238
333
  }
334
+ if (p.workflow_mode !== undefined) {
335
+ if (req.workflow_mode !== p.workflow_mode) {
336
+ req.workflow_mode = p.workflow_mode;
337
+ changedFields.push('workflow_mode');
338
+ }
339
+ }
239
340
  // ⑧ updated_at 单次赋值纪律(REV-81-013):字段维度实际变更且状态维度未变时刷新一次;
240
341
  // 状态维度已由 applyStatusChange 刷新,两维度并存时不重复赋值
241
342
  if (changedFields.length > 0) {
@@ -269,6 +370,10 @@ export function linkRequirement(data, stageId, requirementId) {
269
370
  if (isTerminalRequirementStatus(req.status)) {
270
371
  return { ok: false, code: 'invalid_status' };
271
372
  } // 终态拒绝
373
+ // 载体制门(D-90-4):general(无流水线)需求不接受阶段关联
374
+ if (req.workflow_mode === 'general') {
375
+ return { ok: false, code: 'general_mode_conflict' };
376
+ }
272
377
  if ((stage.requirement_id ?? null) === requirementId) {
273
378
  return { ok: true, changed: false };
274
379
  } // 同值幂等
@@ -1 +1 @@
1
- {"version":3,"file":"requirement-ops.js","sourceRoot":"","sources":["../../../src/core/req/requirement-ops.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"requirement-ops.js","sourceRoot":"","sources":["../../../src/core/req/requirement-ops.ts"],"names":[],"mappings":"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"}
@@ -2,8 +2,10 @@
2
2
  * 需求层类型与常量 — 单一来源(叶子模块)
3
3
  *
4
4
  * 职责:需求状态值域、优先级值域、需求 ID 格式与 `RequirementData` 字段表的**唯一权威定义**。
5
- * 正交声明:零 import(叶子模块);不依赖归档层 / 不引用工作流模式字段。
5
+ * 边界声明:仅类型导入(import type,编译期擦除、零运行时依赖);不依赖归档层;模式属性(workflow_mode?)为调度属性——
6
+ * 不参与聚合判定 / 不入 done 门(done 判定单源恒在 allLinkedStagesDone)。
6
7
  */
8
+ import type { WorkflowMode } from '../config.js';
7
9
  /** 需求状态值域(7 值,裁定 B;单一来源——stage-82 命令层校验须从此派生,禁硬编码) */
8
10
  export declare const REQ_STATUSES: readonly ["draft", "scheduled", "in_progress", "done", "blocked", "cancelled", "rejected"];
9
11
  /** 需求状态联合类型(自 REQ_STATUSES 派生,唯一权威) */
@@ -36,5 +38,9 @@ export interface RequirementData {
36
38
  updated_at: string;
37
39
  /** 正文相对路径(POSIX 分隔符,如 .openfeel/requirements/REQ-001.md) */
38
40
  body_path?: string;
41
+ /** 拆分来源父需求 ID(**仅溯源**:不参与聚合判定 / 不参与 done 门 / 无父子级联;可选——读侧宽容不 load 补齐) */
42
+ parent_id?: string;
43
+ /** 需求级工作流模式(**调度属性**:经解析单点作用于其关联阶段;可选 + 读侧宽容不 load 补齐;不入聚合 / 不入 done 门;值域权威 = WORKFLOW_MODES) */
44
+ workflow_mode?: WorkflowMode;
39
45
  }
40
46
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/req/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,sDAAsD;AACtD,eAAO,MAAM,YAAY,4FAA6F,CAAC;AACvH,uCAAuC;AACvC,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9D,uBAAuB;AACvB,eAAO,MAAM,cAAc,6BAA8B,CAAC;AAC1D,mCAAmC;AACnC,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAElE,4DAA4D;AAC5D,eAAO,MAAM,cAAc,QAAmB,CAAC;AAE/C,qCAAqC;AACrC,MAAM,WAAW,eAAe;IAC9B,kDAAkD;IAClD,EAAE,EAAE,MAAM,CAAC;IACX,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,wBAAwB;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uBAAuB;IACvB,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,0BAA0B;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/req/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,sDAAsD;AACtD,eAAO,MAAM,YAAY,4FAA6F,CAAC;AACvH,uCAAuC;AACvC,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9D,uBAAuB;AACvB,eAAO,MAAM,cAAc,6BAA8B,CAAC;AAC1D,mCAAmC;AACnC,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAElE,4DAA4D;AAC5D,eAAO,MAAM,cAAc,QAAmB,CAAC;AAE/C,qCAAqC;AACrC,MAAM,WAAW,eAAe;IAC9B,kDAAkD;IAClD,EAAE,EAAE,MAAM,CAAC;IACX,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,wBAAwB;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uBAAuB;IACvB,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,0BAA0B;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iGAAiG;IACjG,aAAa,CAAC,EAAE,YAAY,CAAC;CAC9B"}
@@ -1,9 +1,3 @@
1
- /**
2
- * 需求层类型与常量 — 单一来源(叶子模块)
3
- *
4
- * 职责:需求状态值域、优先级值域、需求 ID 格式与 `RequirementData` 字段表的**唯一权威定义**。
5
- * 正交声明:零 import(叶子模块);不依赖归档层 / 不引用工作流模式字段。
6
- */
7
1
  /** 需求状态值域(7 值,裁定 B;单一来源——stage-82 命令层校验须从此派生,禁硬编码) */
8
2
  export const REQ_STATUSES = ['draft', 'scheduled', 'in_progress', 'done', 'blocked', 'cancelled', 'rejected'];
9
3
  /** 需求优先级值域(三档;单一来源) */
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/req/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,sDAAsD;AACtD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,CAAU,CAAC;AAIvH,uBAAuB;AACvB,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU,CAAC;AAI1D,4DAA4D;AAC5D,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAC,CAAG,4CAA4C"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/req/types.ts"],"names":[],"mappings":"AASA,sDAAsD;AACtD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,CAAU,CAAC;AAIvH,uBAAuB;AACvB,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU,CAAC;AAI1D,4DAA4D;AAC5D,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAC,CAAG,4CAA4C"}
@@ -22,4 +22,22 @@ export declare function resolveRuntimeLogConfig(env: NodeJS.ProcessEnv, argv: st
22
22
  export declare function installRuntimeLog(opts?: InstallRuntimeLogOptions): void;
23
23
  /** 写入一条运行日志(best-effort;未安装/关闭/级别不足/任何异常均静默跳过) */
24
24
  export declare function runtimeLog(level: RuntimeLogLevel, message: string): void;
25
+ /** CLI 起始行(含 project / session 后缀;与 done 行对称) */
26
+ export declare function logCliStart(argv: string[]): void;
27
+ /**
28
+ * CLI 完成行(一次性旗标防双写;done 行含 duration_ms)。
29
+ * 旗标**置位先于写入**——即使日志被 `--no-log` / `OPENFEEL_LOG=0` 关闭也置位,
30
+ * 保「done 事件已发生」语义。
31
+ */
32
+ export declare function logCliDone(exitCode: number): void;
33
+ /** 测试用:重置 done 旗标(模块态隔离) */
34
+ export declare function resetDoneFlagForTest(): void;
35
+ /**
36
+ * 安装进程退出兜底(仅 bin 调用;库侧不自动安装;**不设 VITEST/env 守卫**)。
37
+ * 覆盖 process.exit / 正常结束 / 未捕获异常 / SIGINT / SIGTERM:
38
+ * - `exit` 为**单源**写盘点:正常路径已写则由旗标跳过;异常 / 中断 / process.exit 路径由此补齐。
39
+ * - 信号仅保中断语义(130=SIGINT / 143=SIGTERM);写行由 exit 钩子单源承担。
40
+ * @param proc 进程对象(缺省 = process;注入 EventEmitter 以便单测)
41
+ */
42
+ export declare function installExitHooks(proc?: Pick<NodeJS.Process, 'on' | 'once'>): void;
25
43
  //# sourceMappingURL=runtime-log.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-log.d.ts","sourceRoot":"","sources":["../../src/core/runtime-log.ts"],"names":[],"mappings":"AAuBA,wBAAwB;AACxB,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAElE,aAAa;AACb,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,eAAe,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,mCAAmC;AACnC,MAAM,WAAW,wBAAwB;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAkBD,8DAA8D;AAC9D,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,IAAiB,GAAG,MAAM,CAEjE;AAgBD,oBAAoB;AACpB,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAYhG;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,wBAA6B,GAAG,IAAI,CAE3E;AAED,kDAAkD;AAClD,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAkBxE"}
1
+ {"version":3,"file":"runtime-log.d.ts","sourceRoot":"","sources":["../../src/core/runtime-log.ts"],"names":[],"mappings":"AA+BA,wBAAwB;AACxB,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAElE,aAAa;AACb,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,eAAe,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,mCAAmC;AACnC,MAAM,WAAW,wBAAwB;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAkBD,8DAA8D;AAC9D,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,IAAiB,GAAG,MAAM,CAEjE;AAgBD,oBAAoB;AACpB,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAYhG;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,wBAA6B,GAAG,IAAI,CAE3E;AAED,kDAAkD;AAClD,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAkBxE;AAUD,iDAAiD;AACjD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAEhD;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CASjD;AAED,4BAA4B;AAC5B,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,GAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,GAAG,MAAM,CAAW,GAAG,IAAI,CA6B1F"}
@@ -20,6 +20,13 @@ import { appendFileSync, mkdirSync } from 'node:fs';
20
20
  import { dirname, join, resolve as resolvePath } from 'node:path';
21
21
  import { getCliLogsDir } from './global-paths.js';
22
22
  import { globalLockPath, withFileLock } from './fs/file-lock.js';
23
+ import { getSessionId } from './session.js';
24
+ /**
25
+ * CLI 进程序号起点(T2 duration_ms 口径)。
26
+ * 口径登记:自本模块加载 ≈ 进程早段起算——含其后的模块解析 / 加载 + 命令执行;
27
+ * 不含 node bootstrap 与更早加载;幂等,不随 installRuntimeLog 重装重置。
28
+ */
29
+ const PROCESS_START_MS = Date.now();
23
30
  /** 级别权重(级别过滤) */
24
31
  const LEVEL_ORDER = { debug: 10, info: 20, warn: 30, error: 40 };
25
32
  /** 模块级配置;null = 未安装 → 全 no-op */
@@ -91,4 +98,69 @@ export function runtimeLog(level, message) {
91
98
  // 写日志失败(磁盘/权限/锁超时)不得中断 CLI
92
99
  }
93
100
  }
101
+ /** done 行一次性旗标(正常路径已写 → exit 兜底 / 信号路径不重复写) */
102
+ let cliDoneLogged = false;
103
+ /** start / done 行共用的元信息后缀(方括号键值对——空格路径安全;T2) */
104
+ function cliMetaSuffix() {
105
+ return ' [project=' + process.cwd() + '] [session=' + getSessionId() + ']';
106
+ }
107
+ /** CLI 起始行(含 project / session 后缀;与 done 行对称) */
108
+ export function logCliStart(argv) {
109
+ runtimeLog('info', 'cli start: ' + argv.join(' ') + cliMetaSuffix());
110
+ }
111
+ /**
112
+ * CLI 完成行(一次性旗标防双写;done 行含 duration_ms)。
113
+ * 旗标**置位先于写入**——即使日志被 `--no-log` / `OPENFEEL_LOG=0` 关闭也置位,
114
+ * 保「done 事件已发生」语义。
115
+ */
116
+ export function logCliDone(exitCode) {
117
+ if (cliDoneLogged) {
118
+ return; // 一次性:正常路径已写 → exit 兜底 / 信号路径不重复
119
+ }
120
+ cliDoneLogged = true;
121
+ runtimeLog('info', 'cli done exit=' + exitCode + ' [duration_ms=' + (Date.now() - PROCESS_START_MS) + ']' + cliMetaSuffix());
122
+ }
123
+ /** 测试用:重置 done 旗标(模块态隔离) */
124
+ export function resetDoneFlagForTest() {
125
+ cliDoneLogged = false;
126
+ }
127
+ /**
128
+ * 安装进程退出兜底(仅 bin 调用;库侧不自动安装;**不设 VITEST/env 守卫**)。
129
+ * 覆盖 process.exit / 正常结束 / 未捕获异常 / SIGINT / SIGTERM:
130
+ * - `exit` 为**单源**写盘点:正常路径已写则由旗标跳过;异常 / 中断 / process.exit 路径由此补齐。
131
+ * - 信号仅保中断语义(130=SIGINT / 143=SIGTERM);写行由 exit 钩子单源承担。
132
+ * @param proc 进程对象(缺省 = process;注入 EventEmitter 以便单测)
133
+ */
134
+ export function installExitHooks(proc = process) {
135
+ try {
136
+ proc.on('exit', (code) => {
137
+ try {
138
+ // 退出码归一(@types/node 中 process.exitCode 为 number | string);非数值 → 0
139
+ logCliDone(typeof code === 'number' ? code : (typeof process.exitCode === 'number' ? process.exitCode : 0));
140
+ }
141
+ catch {
142
+ // 钩子体内任何异常不得影响进程退出
143
+ }
144
+ });
145
+ proc.once('SIGINT', () => {
146
+ try {
147
+ process.exit(130);
148
+ }
149
+ catch {
150
+ // 同上:best-effort
151
+ }
152
+ });
153
+ proc.once('SIGTERM', () => {
154
+ try {
155
+ process.exit(143);
156
+ }
157
+ catch {
158
+ // 同上:best-effort
159
+ }
160
+ });
161
+ }
162
+ catch {
163
+ // 钩子安装失败不得中断 CLI
164
+ }
165
+ }
94
166
  //# sourceMappingURL=runtime-log.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-log.js","sourceRoot":"","sources":["../../src/core/runtime-log.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime-log.js","sourceRoot":"","sources":["../../src/core/runtime-log.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /** 会话标识来源:env(harness 环境)/ project(项目续接文件)/ proc(单进程兜底) */
2
+ export type SessionSource = 'env' | 'project' | 'proc';
3
+ /** 会话标识:id 含来源前缀(env: / project: / proc:),机器可判人工 vs 自动化 */
4
+ export interface SessionIdentity {
5
+ id: string;
6
+ source: SessionSource;
7
+ }
8
+ /**
9
+ * 解析当前会话标识(三级链;按 projectPath memoized)。
10
+ * @param opts.env 环境变量表(缺省 = process.env;注入以便单测)
11
+ * @param opts.projectPath 项目根路径(缺省 = process.cwd())
12
+ */
13
+ export declare function getSessionIdentity(opts?: {
14
+ env?: NodeJS.ProcessEnv;
15
+ projectPath?: string;
16
+ }): SessionIdentity;
17
+ /** 会话标识字符串(= `getSessionIdentity().id`,含来源前缀) */
18
+ export declare function getSessionId(opts?: {
19
+ env?: NodeJS.ProcessEnv;
20
+ projectPath?: string;
21
+ }): string;
22
+ /** 清空 memo(测试用——模块态隔离) */
23
+ export declare function resetSessionCache(): void;
24
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/core/session.ts"],"names":[],"mappings":"AAoBA,2DAA2D;AAC3D,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,SAAS,GAAG,MAAM,CAAC;AAEvD,2DAA2D;AAC3D,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,aAAa,CAAC;CACvB;AAsDD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,eAAe,CAiChH;AAED,iDAAiD;AACjD,wBAAgB,YAAY,CAAC,IAAI,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAE7F;AAED,0BAA0B;AAC1B,wBAAgB,iBAAiB,IAAI,IAAI,CAExC"}