@prd-improve/cli 1.0.0

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 (209) hide show
  1. package/README.md +38 -0
  2. package/dist/anchor-slicer.d.ts +18 -0
  3. package/dist/anchor-slicer.js +114 -0
  4. package/dist/anchor-slicer.js.map +1 -0
  5. package/dist/api/client.d.ts +68 -0
  6. package/dist/api/client.js +175 -0
  7. package/dist/api/client.js.map +1 -0
  8. package/dist/changelog.d.ts +9 -0
  9. package/dist/changelog.js +34 -0
  10. package/dist/changelog.js.map +1 -0
  11. package/dist/cli.d.ts +2 -0
  12. package/dist/cli.js +258 -0
  13. package/dist/cli.js.map +1 -0
  14. package/dist/commands/admin/_adminJson.d.ts +18 -0
  15. package/dist/commands/admin/_adminJson.js +27 -0
  16. package/dist/commands/admin/_adminJson.js.map +1 -0
  17. package/dist/commands/admin/_authResolve.d.ts +8 -0
  18. package/dist/commands/admin/_authResolve.js +56 -0
  19. package/dist/commands/admin/_authResolve.js.map +1 -0
  20. package/dist/commands/admin/index.d.ts +22 -0
  21. package/dist/commands/admin/index.js +100 -0
  22. package/dist/commands/admin/index.js.map +1 -0
  23. package/dist/commands/admin/io.d.ts +15 -0
  24. package/dist/commands/admin/io.js +30 -0
  25. package/dist/commands/admin/io.js.map +1 -0
  26. package/dist/commands/admin/member.d.ts +43 -0
  27. package/dist/commands/admin/member.js +362 -0
  28. package/dist/commands/admin/member.js.map +1 -0
  29. package/dist/commands/admin/project.d.ts +40 -0
  30. package/dist/commands/admin/project.js +182 -0
  31. package/dist/commands/admin/project.js.map +1 -0
  32. package/dist/commands/admin/team.d.ts +31 -0
  33. package/dist/commands/admin/team.js +157 -0
  34. package/dist/commands/admin/team.js.map +1 -0
  35. package/dist/commands/admin/teamMember.d.ts +33 -0
  36. package/dist/commands/admin/teamMember.js +262 -0
  37. package/dist/commands/admin/teamMember.js.map +1 -0
  38. package/dist/commands/admin/token.d.ts +29 -0
  39. package/dist/commands/admin/token.js +125 -0
  40. package/dist/commands/admin/token.js.map +1 -0
  41. package/dist/commands/admin/user.d.ts +2 -0
  42. package/dist/commands/admin/user.js +85 -0
  43. package/dist/commands/admin/user.js.map +1 -0
  44. package/dist/commands/config.d.ts +9 -0
  45. package/dist/commands/config.js +178 -0
  46. package/dist/commands/config.js.map +1 -0
  47. package/dist/commands/context.d.ts +11 -0
  48. package/dist/commands/context.js +235 -0
  49. package/dist/commands/context.js.map +1 -0
  50. package/dist/commands/diff.d.ts +6 -0
  51. package/dist/commands/diff.js +208 -0
  52. package/dist/commands/diff.js.map +1 -0
  53. package/dist/commands/freeze.d.ts +10 -0
  54. package/dist/commands/freeze.js +269 -0
  55. package/dist/commands/freeze.js.map +1 -0
  56. package/dist/commands/init.d.ts +24 -0
  57. package/dist/commands/init.js +229 -0
  58. package/dist/commands/init.js.map +1 -0
  59. package/dist/commands/login.d.ts +26 -0
  60. package/dist/commands/login.js +241 -0
  61. package/dist/commands/login.js.map +1 -0
  62. package/dist/commands/logout.d.ts +6 -0
  63. package/dist/commands/logout.js +75 -0
  64. package/dist/commands/logout.js.map +1 -0
  65. package/dist/commands/migrate-yaml.d.ts +17 -0
  66. package/dist/commands/migrate-yaml.js +288 -0
  67. package/dist/commands/migrate-yaml.js.map +1 -0
  68. package/dist/commands/project.d.ts +7 -0
  69. package/dist/commands/project.js +87 -0
  70. package/dist/commands/project.js.map +1 -0
  71. package/dist/commands/pull.d.ts +16 -0
  72. package/dist/commands/pull.js +197 -0
  73. package/dist/commands/pull.js.map +1 -0
  74. package/dist/commands/push.d.ts +9 -0
  75. package/dist/commands/push.js +392 -0
  76. package/dist/commands/push.js.map +1 -0
  77. package/dist/commands/refresh.d.ts +9 -0
  78. package/dist/commands/refresh.js +123 -0
  79. package/dist/commands/refresh.js.map +1 -0
  80. package/dist/commands/status.d.ts +7 -0
  81. package/dist/commands/status.js +190 -0
  82. package/dist/commands/status.js.map +1 -0
  83. package/dist/commands/team.d.ts +6 -0
  84. package/dist/commands/team.js +84 -0
  85. package/dist/commands/team.js.map +1 -0
  86. package/dist/commands/validate.d.ts +5 -0
  87. package/dist/commands/validate.js +129 -0
  88. package/dist/commands/validate.js.map +1 -0
  89. package/dist/commands/whoami.d.ts +6 -0
  90. package/dist/commands/whoami.js +81 -0
  91. package/dist/commands/whoami.js.map +1 -0
  92. package/dist/config/adminBackend.d.ts +43 -0
  93. package/dist/config/adminBackend.js +33 -0
  94. package/dist/config/adminBackend.js.map +1 -0
  95. package/dist/config/rc.d.ts +70 -0
  96. package/dist/config/rc.js +148 -0
  97. package/dist/config/rc.js.map +1 -0
  98. package/dist/config/schema.d.ts +132 -0
  99. package/dist/config/schema.js +36 -0
  100. package/dist/config/schema.js.map +1 -0
  101. package/dist/diff/engine.d.ts +35 -0
  102. package/dist/diff/engine.js +305 -0
  103. package/dist/diff/engine.js.map +1 -0
  104. package/dist/diff/render.d.ts +18 -0
  105. package/dist/diff/render.js +129 -0
  106. package/dist/diff/render.js.map +1 -0
  107. package/dist/formatter/colors.d.ts +17 -0
  108. package/dist/formatter/colors.js +35 -0
  109. package/dist/formatter/colors.js.map +1 -0
  110. package/dist/formatter/human.d.ts +7 -0
  111. package/dist/formatter/human.js +70 -0
  112. package/dist/formatter/human.js.map +1 -0
  113. package/dist/fs/atomicWrite.d.ts +7 -0
  114. package/dist/fs/atomicWrite.js +37 -0
  115. package/dist/fs/atomicWrite.js.map +1 -0
  116. package/dist/i18n/dispatch.d.ts +19 -0
  117. package/dist/i18n/dispatch.js +27 -0
  118. package/dist/i18n/dispatch.js.map +1 -0
  119. package/dist/i18n/en.d.ts +3 -0
  120. package/dist/i18n/en.js +275 -0
  121. package/dist/i18n/en.js.map +1 -0
  122. package/dist/i18n/help.d.ts +3 -0
  123. package/dist/i18n/help.en.d.ts +149 -0
  124. package/dist/i18n/help.en.js +150 -0
  125. package/dist/i18n/help.en.js.map +1 -0
  126. package/dist/i18n/help.js +7 -0
  127. package/dist/i18n/help.js.map +1 -0
  128. package/dist/i18n/help.zh.d.ts +149 -0
  129. package/dist/i18n/help.zh.js +150 -0
  130. package/dist/i18n/help.zh.js.map +1 -0
  131. package/dist/i18n/helpFormat.d.ts +7 -0
  132. package/dist/i18n/helpFormat.js +51 -0
  133. package/dist/i18n/helpFormat.js.map +1 -0
  134. package/dist/i18n/helpGroups.d.ts +3 -0
  135. package/dist/i18n/helpGroups.js +11 -0
  136. package/dist/i18n/helpGroups.js.map +1 -0
  137. package/dist/i18n/index.d.ts +16 -0
  138. package/dist/i18n/index.js +46 -0
  139. package/dist/i18n/index.js.map +1 -0
  140. package/dist/i18n/peekLang.d.ts +1 -0
  141. package/dist/i18n/peekLang.js +16 -0
  142. package/dist/i18n/peekLang.js.map +1 -0
  143. package/dist/i18n/zh.d.ts +680 -0
  144. package/dist/i18n/zh.js +288 -0
  145. package/dist/i18n/zh.js.map +1 -0
  146. package/dist/parser/discover.d.ts +2 -0
  147. package/dist/parser/discover.js +69 -0
  148. package/dist/parser/discover.js.map +1 -0
  149. package/dist/parser/load-yaml.d.ts +11 -0
  150. package/dist/parser/load-yaml.js +25 -0
  151. package/dist/parser/load-yaml.js.map +1 -0
  152. package/dist/pkgVersion.d.ts +9 -0
  153. package/dist/pkgVersion.js +22 -0
  154. package/dist/pkgVersion.js.map +1 -0
  155. package/dist/renderer/context-md.d.ts +27 -0
  156. package/dist/renderer/context-md.js +444 -0
  157. package/dist/renderer/context-md.js.map +1 -0
  158. package/dist/renderer/refresh-md.d.ts +18 -0
  159. package/dist/renderer/refresh-md.js +93 -0
  160. package/dist/renderer/refresh-md.js.map +1 -0
  161. package/dist/schema/index.d.ts +2 -0
  162. package/dist/schema/index.js +3 -0
  163. package/dist/schema/index.js.map +1 -0
  164. package/dist/schema/modules.d.ts +461 -0
  165. package/dist/schema/modules.js +184 -0
  166. package/dist/schema/modules.js.map +1 -0
  167. package/dist/schema/prd.d.ts +1018 -0
  168. package/dist/schema/prd.js +65 -0
  169. package/dist/schema/prd.js.map +1 -0
  170. package/dist/sync/cliRcHelpers.d.ts +25 -0
  171. package/dist/sync/cliRcHelpers.js +62 -0
  172. package/dist/sync/cliRcHelpers.js.map +1 -0
  173. package/dist/sync/conflicts.d.ts +7 -0
  174. package/dist/sync/conflicts.js +72 -0
  175. package/dist/sync/conflicts.js.map +1 -0
  176. package/dist/sync/headProbe.d.ts +1 -0
  177. package/dist/sync/headProbe.js +95 -0
  178. package/dist/sync/headProbe.js.map +1 -0
  179. package/dist/sync/normalize.d.ts +10 -0
  180. package/dist/sync/normalize.js +13 -0
  181. package/dist/sync/normalize.js.map +1 -0
  182. package/dist/sync/syncJson.d.ts +18 -0
  183. package/dist/sync/syncJson.js +42 -0
  184. package/dist/sync/syncJson.js.map +1 -0
  185. package/dist/types.d.ts +70 -0
  186. package/dist/types.js +21 -0
  187. package/dist/types.js.map +1 -0
  188. package/dist/validators/blocking.d.ts +2 -0
  189. package/dist/validators/blocking.js +25 -0
  190. package/dist/validators/blocking.js.map +1 -0
  191. package/dist/validators/duplicate-ids.d.ts +2 -0
  192. package/dist/validators/duplicate-ids.js +58 -0
  193. package/dist/validators/duplicate-ids.js.map +1 -0
  194. package/dist/validators/references.d.ts +5 -0
  195. package/dist/validators/references.js +165 -0
  196. package/dist/validators/references.js.map +1 -0
  197. package/dist/validators/required-modules.d.ts +8 -0
  198. package/dist/validators/required-modules.js +59 -0
  199. package/dist/validators/required-modules.js.map +1 -0
  200. package/dist/validators/runner.d.ts +11 -0
  201. package/dist/validators/runner.js +73 -0
  202. package/dist/validators/runner.js.map +1 -0
  203. package/dist/workspace.d.ts +32 -0
  204. package/dist/workspace.js +37 -0
  205. package/dist/workspace.js.map +1 -0
  206. package/dist/yaml-indexer.d.ts +15 -0
  207. package/dist/yaml-indexer.js +112 -0
  208. package/dist/yaml-indexer.js.map +1 -0
  209. package/package.json +50 -0
@@ -0,0 +1,37 @@
1
+ // T6-MN1 (v1.7) — atomic file write via tempfile + rename. POSIX rename(2) is
2
+ // atomic within the same filesystem, so a crash/abort mid-write leaves the
3
+ // original file intact instead of a half-written one.
4
+ //
5
+ // Used for rc and sync.json — both are small (< 4KB) state files where a torn
6
+ // write would brick `prd push/pull/whoami`.
7
+ import { writeFileSync, renameSync, unlinkSync, mkdirSync, existsSync, chmodSync } from "node:fs";
8
+ import { dirname, basename, join } from "node:path";
9
+ export function writeFileAtomic(path, data, opts = {}) {
10
+ const parent = dirname(path);
11
+ if (!existsSync(parent))
12
+ mkdirSync(parent, { recursive: true });
13
+ // tmp suffix: pid + hrtime to avoid collisions across concurrent writers
14
+ // on the same path (rare for rc/sync.json but cheap to guard).
15
+ const tmp = join(parent, `.${basename(path)}.${process.pid}.${process.hrtime.bigint().toString(36)}.tmp`);
16
+ try {
17
+ writeFileSync(tmp, data, { encoding: opts.encoding ?? "utf8", mode: opts.mode });
18
+ if (opts.mode !== undefined && process.platform !== "win32") {
19
+ // writeFileSync mode only applies on file create; chmod again is
20
+ // defensive in case the tmp file pre-existed (shouldn't, but harmless).
21
+ try {
22
+ chmodSync(tmp, opts.mode);
23
+ }
24
+ catch { /* best effort */ }
25
+ }
26
+ renameSync(tmp, path);
27
+ }
28
+ catch (e) {
29
+ // Best-effort cleanup; if unlink also fails (e.g. file never created), ignore.
30
+ try {
31
+ unlinkSync(tmp);
32
+ }
33
+ catch { /* ignore */ }
34
+ throw e;
35
+ }
36
+ }
37
+ //# sourceMappingURL=atomicWrite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"atomicWrite.js","sourceRoot":"","sources":["../../src/fs/atomicWrite.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,2EAA2E;AAC3E,sDAAsD;AACtD,EAAE;AACF,8EAA8E;AAC9E,4CAA4C;AAC5C,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAClG,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AASpD,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,IAAY,EAAE,OAA2B,EAAE;IACvF,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEhE,yEAAyE;IACzE,+DAA+D;IAC/D,MAAM,GAAG,GAAG,IAAI,CACd,MAAM,EACN,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAChF,CAAC;IAEF,IAAI,CAAC;QACH,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACjF,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YAC5D,iEAAiE;YACjE,wEAAwE;YACxE,IAAI,CAAC;gBAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;QAChE,CAAC;QACD,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACxB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,+EAA+E;QAC/E,IAAI,CAAC;YAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QAC/C,MAAM,CAAC,CAAC;IACV,CAAC;AACH,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { MessageMap } from "./index.js";
2
+ /** 所有 i18n key 的联合类型,编译期防 errorKey 拼错 */
3
+ export type MessageKey = keyof MessageMap;
4
+ /**
5
+ * 类型安全的 i18n 渲染 dispatch。
6
+ *
7
+ * 替代散布于 commands/* 的 `(m as any)[errorKey]` + 三段类型判断模式。
8
+ * 调用方仍负责 stderr.write 和 ✗ 前缀(IO 关注点不混入 helper)。
9
+ *
10
+ * @param m 已加载的 locale messages(zh.ts / en.ts)
11
+ * @param key 必须是 MessageMap 的合法 key,编译期检查
12
+ * @param details 渲染数据(每个 key 的 shape 不同,helper 不强约束)
13
+ * @param fallbackJson 当 key 不存在或类型异常时,fallback 是否带 details JSON。
14
+ * 验证命令(validate.ts)用 true,其余用 false(默认)。
15
+ *
16
+ * @example
17
+ * process.stderr.write(c.fail("✗ ") + renderError(m, "freeze_fs_error", { operation, message }) + "\n");
18
+ */
19
+ export declare function renderError(m: MessageMap, key: MessageKey, details?: Record<string, unknown>, fallbackJson?: boolean): string;
@@ -0,0 +1,27 @@
1
+ /**
2
+ * 类型安全的 i18n 渲染 dispatch。
3
+ *
4
+ * 替代散布于 commands/* 的 `(m as any)[errorKey]` + 三段类型判断模式。
5
+ * 调用方仍负责 stderr.write 和 ✗ 前缀(IO 关注点不混入 helper)。
6
+ *
7
+ * @param m 已加载的 locale messages(zh.ts / en.ts)
8
+ * @param key 必须是 MessageMap 的合法 key,编译期检查
9
+ * @param details 渲染数据(每个 key 的 shape 不同,helper 不强约束)
10
+ * @param fallbackJson 当 key 不存在或类型异常时,fallback 是否带 details JSON。
11
+ * 验证命令(validate.ts)用 true,其余用 false(默认)。
12
+ *
13
+ * @example
14
+ * process.stderr.write(c.fail("✗ ") + renderError(m, "freeze_fs_error", { operation, message }) + "\n");
15
+ */
16
+ export function renderError(m, key, details = {}, fallbackJson = false) {
17
+ const renderer = m[key];
18
+ if (typeof renderer === "function") {
19
+ return renderer(details);
20
+ }
21
+ if (typeof renderer === "string")
22
+ return renderer;
23
+ return fallbackJson
24
+ ? `${String(key)}: ${JSON.stringify(details)}`
25
+ : String(key);
26
+ }
27
+ //# sourceMappingURL=dispatch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispatch.js","sourceRoot":"","sources":["../../src/i18n/dispatch.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,WAAW,CACzB,CAAa,EACb,GAAe,EACf,UAAmC,EAAE,EACrC,eAAwB,KAAK;IAE7B,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACxB,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;QACnC,OAAQ,QAAmD,CAAC,OAAO,CAAC,CAAC;IACvE,CAAC;IACD,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAClD,OAAO,YAAY;QACjB,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;QAC9C,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAClB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Messages } from "./zh.js";
2
+ declare const en: Messages;
3
+ export default en;
@@ -0,0 +1,275 @@
1
+ const en = {
2
+ status_pass: "[PASS]",
3
+ status_fail: "[FAIL]",
4
+ status_skip: "[SKIP]",
5
+ missing_required_module: (d) => `Missing required module: ${d.module}`,
6
+ module_must_be_non_empty: (d) => `Required module is empty: ${d.module}`,
7
+ reference_not_found: (d) => `Reference error: ${d.path} points to non-existent ID "${d.reference}"`,
8
+ reference_wrong_type: (d) => `Wrong reference type: ${d.path} = "${d.value}", expected prefix ${d.expected_prefix}-`,
9
+ duplicate_id: (d) => `Duplicate ID: ${d.id} (first seen at ${d.first_seen_path})`,
10
+ blocking_question: (d) => `Blocking question: ${d.id} (${d.question})`,
11
+ unsupported_schema_version: (d) => `Unsupported schema version: ${d.got} (supported: v0.1 / v0.2)`,
12
+ schema_violation: (d) => `Schema violation: ${d.path} - ${d.message}`,
13
+ yaml_parse_error: (d) => `YAML parse error: ${d.message}`,
14
+ out_of_scope_empty_warning: "out_of_scope is an empty array; recommend explicitly listing what is NOT in this release",
15
+ validating: (d) => `Validating ${d.pattern} ...`,
16
+ feature_pass_summary: (d) => `${d.complete} of ${d.total} required business modules complete. schema_version=${d.schema_version}. No reference errors. No blocking questions.`,
17
+ feature_fail_summary: (d) => `${d.complete} of ${d.total} required business modules complete. Found ${d.refs} reference errors and ${d.blocks} blocking questions.`,
18
+ feature_skip_reason_no_yaml: "No working/prd.yaml found. Skipped.",
19
+ summary_line: (d) => `Summary: ${d.passed} passed, ${d.failed} failed, ${d.skipped} skipped.`,
20
+ exit_code_line: (d) => `Exit code: ${d.code}`,
21
+ prd_dir_not_found: 'No .prd directory found. Run "prd init" in your project root first (init command coming in next release).',
22
+ feature_not_found: (d) => `Feature not found: ${d.slug}. Check that .prd/features/${d.slug}/ exists.`,
23
+ path_not_found: (d) => `Path not found: ${d.path}`,
24
+ // === init command ===
25
+ init_success_manifest: (d) => `Created .prd/manifest.json (workspace=${d.workspace})`,
26
+ init_success_features: "Created .prd/features/",
27
+ init_next_step: "Next: create prd.yaml under .prd/features/<slug>/working/, then run prd validate",
28
+ init_already_exists: (d) => `.prd/ already exists (workspace=${d.workspace}, created_at=${d.created_at}). To re-init, run: rm -rf .prd/`,
29
+ init_already_exists_corrupt: `.prd/ exists but manifest.json is missing or corrupt, cannot identify. To re-init, run: rm -rf .prd/`,
30
+ init_invalid_workspace_empty: (d) => `Invalid workspace name: "${d.value}". Cannot be empty`,
31
+ init_invalid_workspace_too_long: (d) => `Invalid workspace name: "${d.value}". Exceeds 64 characters`,
32
+ init_invalid_workspace_invalid_char: (d) => `Invalid workspace name: "${d.value}". Cannot contain control chars or / \\ : * ? " < > |`,
33
+ init_fs_error: (d) => `Failed to create .prd (${d.operation}): ${d.message}`,
34
+ // === freeze command ===
35
+ freeze_prevalidating: (d) => `Pre-validating ${d.slug}...`,
36
+ freeze_prevalidate_pass: "[PASS] All checks passed, ready to freeze.",
37
+ freeze_prevalidate_fail: "Pre-validation failed, cannot freeze. Resolve the issues above before retrying prd freeze.",
38
+ freeze_success_yaml: (d) => `Created .prd/features/${d.slug}/frozen/${d.version}/prd.yaml`,
39
+ freeze_success_snapshot: (d) => `Created .prd/features/${d.slug}/frozen/${d.version}/snapshot.json`,
40
+ freeze_success_manifest: (d) => `Updated .prd/manifest.json (features[${d.slug}].latest_frozen_version=${d.version})`,
41
+ freeze_success_summary: (d) => `${d.slug} ${d.version} frozen.`,
42
+ freeze_version_exists: (d) => `frozen/${d.version}/ already exists (frozen_at=${d.frozen_at}). Frozen versions are immutable. Use --version <new> or --auto`,
43
+ freeze_feature_required: "Specify feature slug: prd freeze <slug>",
44
+ freeze_version_or_auto_required: "Specify --version <vX.Y[.Z]> or --auto",
45
+ freeze_version_auto_conflict: "--version and --auto are mutually exclusive",
46
+ freeze_invalid_version: (d) => `Invalid version format: "${d.value}". Regex: ^v\\d+\\.\\d+(\\.\\d+)?$, e.g. v1.0 / v1.0.1`,
47
+ freeze_working_not_found: (d) => `feature ${d.slug}: working/prd.yaml not found, nothing to freeze`,
48
+ freeze_workspace_not_init: "Workspace not initialized. Run prd init first.",
49
+ freeze_fs_error: (d) => `Freeze failed (${d.operation}): ${d.message}`,
50
+ freeze_partial_recovery_hint: (d) => `Partial files written; this frozen version is incomplete. Run: rm -rf ${d.dir} and retry`,
51
+ // === context command ===
52
+ context_feature_required: "Specify --feature <slug>",
53
+ context_workspace_not_init: "Workspace not initialized. Run prd init first.",
54
+ context_feature_not_frozen: (d) => `feature ${d.slug} has not been frozen yet. Run prd freeze ${d.slug} --version <v> first.`,
55
+ context_version_not_found: (d) => `frozen/${d.version}/ does not exist. Existing versions: ${d.existing}`,
56
+ context_working_not_found: (d) => `feature ${d.slug}: working/prd.yaml not found`,
57
+ context_working_version_conflict: "--working and --version are mutually exclusive",
58
+ context_invalid_version: (d) => `Invalid version format: "${d.value}". Regex: ^v\\d+\\.\\d+(\\.\\d+)?$, e.g. v1.0 / v1.0.1`,
59
+ context_manifest_disk_mismatch: (d) => `Manifest disagrees with disk: features[${d.slug}].latest_frozen_version=${d.version}, but frozen/${d.version}/prd.yaml is missing`,
60
+ context_out_parent_not_exists: (d) => `Output directory does not exist: ${d.dir} (create it first)`,
61
+ context_out_success: (d) => `Wrote ${d.path} (${d.bytes} bytes)`,
62
+ context_yaml_parse_error: (d) => `Failed to parse ${d.path}: ${d.message}`,
63
+ context_fs_error: (d) => `Context failed (${d.operation}): ${d.message}`,
64
+ context_render_error: (d) => `Render failed: ${d.message}`,
65
+ context_out_write_failed_hint: "Check that the target path is writable and the parent directory exists.",
66
+ // === validate command ===
67
+ validate_manifest_corrupt_warning: "⚠ .prd/manifest.json is corrupt or invalid; yaml was validated but workspace may be in an abnormal state.",
68
+ // === diff command ===
69
+ diff_feature_required: "Specify --feature <slug>",
70
+ diff_workspace_not_init: "Workspace not initialized. Run prd init first.",
71
+ diff_feature_not_frozen_default: (d) => `feature ${d.slug} has not been frozen yet, cannot default-compare to latest_frozen. Run prd freeze or specify --from working.`,
72
+ diff_invalid_ref: (d) => `Invalid ref: "${d.value}". Must be "working" or vX.Y[.Z] format.`,
73
+ diff_version_not_found: (d) => `frozen/${d.version}/ does not exist. Existing versions: ${d.existing}`,
74
+ diff_working_not_found: (d) => `feature ${d.slug}: working/prd.yaml not found`,
75
+ diff_manifest_disk_mismatch: (d) => `Manifest disagrees with disk: features[${d.slug}].latest_frozen_version=${d.version}, but frozen/${d.version}/prd.yaml is missing`,
76
+ diff_yaml_parse_error: (d) => `Failed to parse ${d.path}: ${d.message}`,
77
+ diff_fs_error: (d) => `Diff failed (${d.operation}): ${d.message}`,
78
+ diff_header: (d) => `Diff ${d.from} vs ${d.to}`,
79
+ diff_summary: (d) => `Summary: ${d.added} added / ${d.modified} modified / ${d.removed} removed / ${d.unchanged} modules unchanged`,
80
+ diff_no_changes: "No changes.",
81
+ diff_section_added: (d) => `## Added (${d.count})`,
82
+ diff_section_modified: (d) => `## Modified (${d.count})`,
83
+ diff_section_removed: (d) => `## Removed (${d.count})`,
84
+ diff_before_label: "before",
85
+ diff_after_label: "after",
86
+ // === refresh command ===
87
+ refresh_started: (d) => `Preparing refresh context for ${d.feature}`,
88
+ refresh_loaded_yaml: (d) => `Loaded yaml (${d.lines} lines)`,
89
+ refresh_yaml_not_found: (d) => `working/prd.yaml not found for feature "${d.feature}" (${d.path}). Run prd init or check slug.`,
90
+ refresh_new_prd_not_found: (d) => `New PRD file not found: ${d.path}`,
91
+ refresh_indexed_entries: (d) => `Indexed (${d.count} entries + refers_to reverse graph)`,
92
+ refresh_anchor_not_found: (d) => `Anchor "${d.anchor}" not found in PRD`,
93
+ refresh_anchor_multiple_matches: (d) => `Anchor "${d.anchor}" matched ${d.count} headings; cannot determine unique slice`,
94
+ refresh_anchor_candidates_hint: (d) => `Candidate locations:\n${d.lines}`,
95
+ refresh_prd_not_markdown: (d) => `--prd-anchor only supports markdown PRD (.md / .markdown); got: ${d.path}`,
96
+ refresh_output_written: (d) => `✓ Output written to ${d.path}`,
97
+ refresh_section_reverse_graph_heading: () => "## refers_to Reverse Graph",
98
+ refresh_section_entry_titles_heading: () => "## All Entry Titles (for PRD cross-check)",
99
+ refresh_section_entry_titles_usage: () => `> Usage: AI greps each title in new PRD; titles with zero match → candidates for deletion`,
100
+ refresh_section_prd_slice_heading: (d) => `## New PRD Section · ${d.anchor} (anchor slice)`,
101
+ // === freeze CHANGELOG.md sync ===
102
+ freeze_changelog_copied: (d) => `CHANGELOG.md copied to ${d.path}`,
103
+ freeze_changelog_unreleased_promoted: (d) => `[Unreleased] in working CHANGELOG.md promoted to [${d.version}]`,
104
+ freeze_changelog_new_unreleased_inserted: () => `New empty [Unreleased] section inserted at top of working CHANGELOG.md`,
105
+ freeze_changelog_copy_failed: (d) => `CHANGELOG.md copy failed: ${d.message}`,
106
+ freeze_changelog_rewrite_failed: (d) => `working CHANGELOG.md rewrite failed: ${d.message}`,
107
+ freeze_changelog_recovery_sed_hint: (d) => `Recover with: sed -i '' 's/^## \\[Unreleased\\]$/## [${d.version}] - ${d.frozenAt}/' working/CHANGELOG.md then manually add new [Unreleased] section`,
108
+ // === sync commands (T6) ===
109
+ backend_not_configured: "No backend configured (~/.prdrc missing or default_backend unset). Run `prd login --url <url>` first.",
110
+ backend_unknown: (d) => `No backend named "${d.name}" in ~/.prdrc`,
111
+ rc_invalid: (d) => `~/.prdrc is invalid: ${d.message}`,
112
+ rc_chmod_warn: (d) => `⚠ ~/.prdrc has loose permissions (${d.mode}); ignoring. Run chmod 600 ~/.prdrc and retry`,
113
+ rc_env_url_without_token: "PRDSERVER_URL is set but PRDSERVER_TOKEN is not. Either set both or neither.",
114
+ rc_token_masked: "****",
115
+ rc_saved: (d) => `Wrote ${d.path}`,
116
+ push_working_not_found: (d) => `working/prd.yaml not found for ${d.slug} (${d.path})`,
117
+ // v1.1 Q1 boundary — `prd push --allow-create` does NOT auto-create yaml.
118
+ push_allow_create_needs_yaml: (d) => `yaml not found (${d.path}); --allow-create does not auto-create the yaml. Run:\n prd init ${d.slug} --team <team> --project <project>`,
119
+ push_no_sync_needs_allow_create: "No local sync.json and no remote feature. Use --allow-create to push as new.",
120
+ push_remote_exists_needs_pull: (d) => `Remote has a newer version (remote=${d.remote}, local base=${d.base}). Run prd pull first.`,
121
+ push_remote_not_found_no_create: (d) => `Remote has no ${d.slug}. Use --allow-create to push as new.`,
122
+ push_local_validate_failed: "Local working/prd.yaml failed validation; cannot push. Resolve validate errors first.",
123
+ push_success: (d) => `Pushed ${d.slug} → backend (version=${d.version})`,
124
+ push_409_conflict: (d) => `Push rejected: backend was updated by someone else. Conflict snapshot saved to ${d.dir}`,
125
+ push_409_conflict_hint: (d) => `See ${d.dir}/README.md for merge steps`,
126
+ push_frozen_sync_start: "Syncing local frozen versions to backend ...",
127
+ push_frozen_sync_skipped: (d) => `Skipped frozen sync (--skip-frozen); ${d.count} local frozen versions`,
128
+ push_frozen_sync_uploaded: (d) => ` uploaded frozen ${d.version}`,
129
+ push_frozen_sync_already: (d) => ` ${d.version} already exists (matching hash)`,
130
+ push_frozen_sync_warn: (d) => ` WARNING: frozen ${d.version} sync failed (ignored): ${d.message}`,
131
+ push_frozen_sync_hash_conflict: (d) => `frozen ${d.version}: local hash differs from backend — violates "frozen is immutable" rule. Manually compare frozen/${d.version}/prd.yaml with backend version.`,
132
+ push_network_error: (d) => `Network error: ${d.message}`,
133
+ push_no_access: (d) => `Project ${d.team}/${d.project} not found or you have no access — ask an admin to add your membership (or have them run \`prd admin team-member add --team ${d.team}\` to cover the whole team)`,
134
+ pull_refuse_dirty: (d) => `Local ${d.path} has uncommitted changes vs last sync. Run prd push or prd diff to inspect, --stash to save edits to .prd/.conflicts/ before fast-forward, or --force to discard them.`,
135
+ pull_force_overwrote: (d) => `--force: overwrote local ${d.slug} working/prd.yaml`,
136
+ pull_stash_success: (d) => `--stash: saved local edits to ${d.dir} before fast-forward (see README.md inside to re-apply)`,
137
+ pull_success: (d) => `Pulled ${d.slug} ← backend (version=${d.version})`,
138
+ pull_remote_not_found: (d) => `No feature ${d.slug} on backend`,
139
+ pull_backend_url_changed: (d) => `sync.json records backend (${d.old}) different from current (${d.current}). Verify explicitly before re-pulling.`,
140
+ pull_already_up_to_date: (d) => `· ${d.slug} already up to date (version=${d.version}, no change)`,
141
+ pull_scope_unresolvable: (d) => `Cannot resolve team/project for ${d.slug}: no local working/prd.yaml and sync.json has no scope. Pass --team <T> --project <P> explicitly, or run prd init first.`,
142
+ api_v0_gone_hint: "API v0 is gone and your local yaml is still v0.1. Run prd migrate-yaml to upgrade schema to v0.2 and retry.",
143
+ status_header_local: "Local",
144
+ status_header_remote: "Remote",
145
+ status_state_synced: "synced",
146
+ status_state_ahead: "ahead",
147
+ status_state_stale: "stale",
148
+ status_state_untracked: "untracked",
149
+ status_state_unknown: "unknown",
150
+ status_state_remote_only: "remote-only",
151
+ status_no_features: "(no features in this workspace yet)",
152
+ status_no_backend_hint: "No backend configured; showing local view only. Run prd login first.",
153
+ status_legend: "Legend: ↑ ahead (local newer) / ⊘ untracked (local-only) / ⚠ stale (remote newer) / ? unknown (probe timed out)",
154
+ login_prompt_url: "Backend URL: ",
155
+ login_prompt_name: "Your name: ",
156
+ login_prompt_email: "Your email (optional, press Enter to skip): ",
157
+ login_prompt_credential_admin: "Admin token (from your team admin): ",
158
+ login_prompt_credential_bootstrap: "Bootstrap secret (from your team admin): ",
159
+ login_success: (d) => `Logged in: ${d.name} → ${d.url}`,
160
+ login_invalid_credential: "Invalid credential. Check your admin token / bootstrap secret with your team admin.",
161
+ login_bootstrap_disabled: "This backend does not allow bootstrap login. Ask your admin to create your user.",
162
+ login_user_exists_confirm: (d) => `User ${d.name} already exists; reissuing a token will invalidate the old one. Continue? [y/N]: `,
163
+ login_aborted: "Aborted",
164
+ logout_success: (d) => `Logged out from ${d.backend}`,
165
+ logout_no_session: "No active session found (likely already expired).",
166
+ logout_no_token: "Current backend has no token; nothing to log out.",
167
+ whoami_backend: (d) => `Backend: ${d.url} (${d.name})`,
168
+ whoami_user: (d) => `User: ${d.name} (${d.email})`,
169
+ whoami_token: (d) => `Token: ${d.masked} (label: ${d.label}, last used: ${d.last_used})`,
170
+ whoami_token_no_label: (d) => `Token: ${d.masked} (last used: ${d.last_used})`,
171
+ whoami_no_backend: "No backend configured. Run prd login --url <url> first.",
172
+ whoami_unauth: "Token expired or revoked. Run prd login again.",
173
+ config_show_header: "~/.prdrc:",
174
+ config_no_rc: "~/.prdrc does not exist",
175
+ config_set_success: (d) => `Updated ${d.key} = ${d.value}`,
176
+ config_use_success: (d) => `default_backend → ${d.name}`,
177
+ config_set_unknown_key: (d) => `Unsupported key "${d.key}". Supported: user.name / user.email / default_backend / backends.<name>.url / backends.<name>.token`,
178
+ config_use_unknown_backend: (d) => `~/.prdrc has no backend "${d.name}"`,
179
+ config_set_backend_token_no_url: (d) => `Backend "${d.name}" must have a URL before setting a token. First run: prd config set backends.${d.name}.url <url>`,
180
+ config_set_invalid_url: (d) => `Invalid URL "${d.value}". Must start with http:// or https://`,
181
+ config_set_invalid_backend_name: (d) => `Invalid backend name "${d.name}". Must match [a-zA-Z][a-zA-Z0-9_-]{0,31}`,
182
+ head_probe_drift_warn: (d) => `⚠ ${d.slug}: backend has ${d.remote}, local base ${d.base}. Run prd pull to sync.`,
183
+ // v1.1 / F4 / F5
184
+ login_credential_prompt: "Credential (admin_token / bootstrap_secret for new accounts; if you already have a PAT exit and use `prd config set backends.<n>.token <pat>`): ",
185
+ admin_user_create_setup_hint: (d) => `\nRun these commands to install the token:\n prd config set backends.default.url ${d.url}\n prd config set backends.default.token ${d.token}\n prd config set user.name ${d.name}`,
186
+ init_next_step_complete: "\nFull next-step chain:\n prd validate\n prd freeze <slug> --auto\n prd push --allow-create <slug>",
187
+ // v1.1 §6.1 admin team
188
+ admin_auth_unconfigured: "Error: Admin backend not configured.\n\nSet env vars (per-shell, ephemeral):\n export PRDSERVER_URL=https://your-server.example.com\n export PRDSERVER_ADMIN_TOKEN=prd_pat_...\n\nOr add to ~/.prdrc (persistent, chmod 600):\n admin_backends:\n <backend-name>:\n url: https://your-server.example.com\n token: prd_pat_elevated...\n\nThen retry your command.",
189
+ admin_auth_env_partial: (d) => `Error: Admin auth env vars partially set. ${d.present} is set but ${d.missing} is missing. Either set ${d.missing}, or unset both and configure ~/.prdrc admin_backends instead.`,
190
+ admin_auth_no_token: (d) => `Error: ~/.prdrc admin_backends.${d.name} exists but its 'token' field is empty. Add the token, or use PRDSERVER_URL + PRDSERVER_ADMIN_TOKEN env vars.`,
191
+ rc_permissions_warning: (d) => `Warning: ~/.prdrc permissions are ${d.mode}; expected 600. Fix: chmod 600 ~/.prdrc`,
192
+ admin_network_error: (d) => `Network error: ${d.message}`,
193
+ // v1.9 §5.2 prd admin token issue
194
+ admin_token_issue_success: (d) => `✓ Token issued to ${d.user}: ${d.token}`,
195
+ admin_token_issue_scope: (d) => ` Scope: ${d.scope}`,
196
+ admin_token_issue_invalid_scope: (d) => `--scope must be 'admin' or 'normal' (got '${d.scope}')`,
197
+ admin_token_issue_user_not_found: (d) => `User "${d.user}" not found or disabled`,
198
+ admin_token_list_empty: "(no tokens yet)",
199
+ admin_token_revoke_success: (d) => `✓ Revoked token ${d.id}`,
200
+ admin_token_revoke_not_found: (d) => `Token ${d.id} not found or already revoked`,
201
+ admin_team_create_success: (d) => `✓ Team created: ${d.slug}`,
202
+ admin_team_already_exists: (d) => `Team "${d.slug}" already exists`,
203
+ admin_team_list_empty: "(no teams yet)",
204
+ admin_team_rename_success: (d) => `✓ Team renamed: ${d.slug} → ${d.new_slug}`,
205
+ admin_team_delete_success: (d) => `✓ Team deleted: ${d.slug}`,
206
+ admin_team_not_found: (d) => `Team "${d.slug}" not found`,
207
+ admin_team_has_projects: (d) => `Team "${d.slug}" still owns project(s); migrate or delete them first`,
208
+ admin_rewrite_yaml_not_impl: "⚠ --rewrite-yaml-in is not implemented yet (v1.2 polish); CLI signature is in place but no yaml was modified",
209
+ // v1.1 §6.1 admin project
210
+ admin_project_create_success: (d) => `✓ Project created: ${d.team}/${d.slug}`,
211
+ admin_project_already_exists: (d) => `Project "${d.team}/${d.slug}" already exists`,
212
+ admin_project_list_empty: (d) => `(team ${d.team} has no projects yet)`,
213
+ admin_project_rename_success: (d) => `✓ Project renamed: ${d.team}/${d.slug} → ${d.team}/${d.new_slug}`,
214
+ admin_project_delete_success: (d) => `✓ Project deleted: ${d.team}/${d.slug}`,
215
+ admin_project_not_found: (d) => `Project "${d.team}/${d.slug}" not found`,
216
+ admin_project_has_features: (d) => `Project "${d.team}/${d.slug}" still hosts feature(s); delete them first`,
217
+ // v1.1 §6.1 admin member
218
+ admin_member_add_success: (d) => `✓ Added member ${d.user} → ${d.team}/${d.project} (role=${d.role})`,
219
+ admin_member_already_exists: (d) => `${d.user} is already a member of ${d.team}/${d.project}`,
220
+ admin_member_user_not_found: (d) => `User "${d.user}" not found (run prd admin user create ${d.user} first)`,
221
+ admin_member_list_empty: (d) => `(${d.team}/${d.project} has no members yet)`,
222
+ admin_member_role_success: (d) => `✓ Role updated: ${d.user} @ ${d.team}/${d.project} → ${d.new_role}`,
223
+ admin_member_remove_success: (d) => `✓ Removed member ${d.user} from ${d.team}/${d.project}`,
224
+ admin_member_not_found: (d) => `${d.user} is not a member of ${d.team}/${d.project}`,
225
+ admin_member_last_admin: (d) => `Cannot remove/demote the last admin of ${d.team}/${d.project}`,
226
+ admin_member_invalid_role: (d) => `Invalid role "${d.role}" (use admin / editor / viewer)`,
227
+ // v1.2 §5.2: prd admin member --all-projects
228
+ admin_member_all_projects_help: "Apply to all projects in the team (mutually exclusive with --project)",
229
+ admin_member_all_projects_summary: (d) => d.role
230
+ ? `✓ --all-projects done: ${d.n} project(s) processed (team=${d.team} user=${d.user} role=${d.role})`
231
+ : `✓ --all-projects done: ${d.n} project(s) processed (team=${d.team} user=${d.user})`,
232
+ // v1.1 §6.1 admin audit
233
+ admin_audit_list_empty: "(no audit rows matched)",
234
+ // v1.1 §5.2 prd migrate-yaml
235
+ migrate_yaml_workspace_not_init: "No .prd directory found. Run prd init first.",
236
+ migrate_yaml_feature_yaml_missing: (d) => `working/prd.yaml not found for ${d.slug} (${d.path})`,
237
+ migrate_yaml_already_v02: (d) => `· ${d.slug}: already v0.2, no upgrade needed`,
238
+ migrate_yaml_unknown_schema: (d) => `${d.slug}: unsupported schema version "${d.got}" (only v0.1 can be upgraded)`,
239
+ migrate_yaml_parse_error: (d) => `${d.slug}: YAML parse failed — ${d.message}`,
240
+ migrate_yaml_prompt_confirm: (d) => `v1.1 requires meta.team + meta.project in yaml. Current backend defaults: default_team=${d.team} / default_project=${d.project}. Use these? [Y/n]: `,
241
+ migrate_yaml_prompt_team: "Enter team slug (run `prd admin team list` to see options): ",
242
+ migrate_yaml_prompt_project: "Enter project slug (run `prd admin project list --team <T>` to see options): ",
243
+ migrate_yaml_server_miss: (d) => `Server has no such team/project (${d.team}/${d.project}). Ask admin to create or change the slug. yaml not modified.`,
244
+ migrate_yaml_server_network_error: (d) => `Failed to verify team/project on server (network error): ${d.message}. yaml not modified.`,
245
+ migrate_yaml_written: (d) => `✓ ${d.slug} upgraded v0.1 → v0.2 (team=${d.team}, project=${d.project})`,
246
+ migrate_yaml_batch_summary: (d) => `Batch upgrade done: ${d.upgraded} upgraded / ${d.skipped} skipped (already v0.2) / ${d.failed} failed`,
247
+ migrate_yaml_batch_no_features: "(no feature yaml found in this workspace, nothing to upgrade)",
248
+ migrate_yaml_skipped_user_no: "Aborted. Pass --team / --project explicitly, or set the .prdrc defaults and retry.",
249
+ migrate_yaml_non_interactive_missing_flags: "--non-interactive requires explicit --team <slug> --project <slug> (.prdrc defaults only apply in interactive mode)",
250
+ // v1.1 §6.3 init --team / --project
251
+ init_team_project_required: "--team <slug> and --project <slug> required, or set default_team / default_project under .prdrc backends.<n>",
252
+ init_success_yaml: (d) => `Created ${d.path} (meta.team / meta.project populated)`,
253
+ // v1.2 §5.1: prd admin team-member
254
+ admin_team_member_add_success: (d) => `✓ Added team-level membership ${d.user} → ${d.team} (role=${d.role})`,
255
+ admin_team_member_already_exists: (d) => `${d.user} already a team-level member of ${d.team}; use \`prd admin team-member update\` to change role`,
256
+ admin_team_member_user_not_found: (d) => `User "${d.user}" not found (run prd admin user create ${d.user} first)`,
257
+ admin_team_member_team_not_found: (d) => `Team "${d.team}" not found (run prd admin team create ${d.team} first)`,
258
+ admin_team_member_list_empty: "(no team-level memberships)",
259
+ admin_team_member_update_success: (d) => `✓ Updated role ${d.user} @ ${d.team} → ${d.new_role}`,
260
+ admin_team_member_remove_success: (d) => `✓ Removed team-level membership ${d.user} @ ${d.team}`,
261
+ admin_team_member_not_found: (d) => `${d.user} is not a team-level member of ${d.team} (project-level only? try \`prd admin member\`)`,
262
+ // UAT2-G1: prd team list / prd project list (user view, via ~/.prdrc PAT)
263
+ team_list_header_slug: "SLUG",
264
+ team_list_header_name: "NAME",
265
+ team_list_header_memberships: "MEMBERSHIPS",
266
+ team_list_empty: "No teams (you have no project memberships)",
267
+ project_list_header_slug: "SLUG",
268
+ project_list_header_name: "NAME",
269
+ project_list_header_role: "ROLE",
270
+ project_list_header_features: "FEATURES",
271
+ project_list_empty: (d) => `No projects in team ${d.team} (you have no project memberships in this team)`,
272
+ project_list_team_required: "--team <slug> required (run `prd team list` to see visible teams)",
273
+ };
274
+ export default en;
275
+ //# sourceMappingURL=en.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"en.js","sourceRoot":"","sources":["../../src/i18n/en.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import zh from "./help.zh.js";
2
+ import type { Locale } from "./index.js";
3
+ export declare function getHelp(locale: Locale): typeof zh;
@@ -0,0 +1,149 @@
1
+ declare const _default: {
2
+ program_desc: string;
3
+ program_lang_opt: string;
4
+ group: {
5
+ lifecycle: string;
6
+ auth: string;
7
+ sync: string;
8
+ team: string;
9
+ admin: string;
10
+ };
11
+ cmd: {
12
+ init: {
13
+ desc: string;
14
+ opts: {
15
+ workspace: string;
16
+ team: string;
17
+ project: string;
18
+ backend: string;
19
+ };
20
+ };
21
+ freeze: {
22
+ desc: string;
23
+ opts: {
24
+ version: string;
25
+ auto: string;
26
+ };
27
+ };
28
+ context: {
29
+ desc: string;
30
+ opts: {
31
+ feature: string;
32
+ version: string;
33
+ working: string;
34
+ includeQuestions: string;
35
+ out: string;
36
+ };
37
+ };
38
+ diff: {
39
+ desc: string;
40
+ opts: {
41
+ feature: string;
42
+ from: string;
43
+ to: string;
44
+ };
45
+ };
46
+ refresh: {
47
+ desc: string;
48
+ opts: {
49
+ feature: string;
50
+ newPrd: string;
51
+ prdAnchor: string;
52
+ prdAnchorExact: string;
53
+ out: string;
54
+ format: string;
55
+ };
56
+ };
57
+ validate: {
58
+ desc: string;
59
+ opts: {
60
+ feature: string;
61
+ };
62
+ };
63
+ "migrate-yaml": {
64
+ desc: string;
65
+ opts: {
66
+ team: string;
67
+ project: string;
68
+ nonInteractive: string;
69
+ backend: string;
70
+ };
71
+ };
72
+ push: {
73
+ desc: string;
74
+ opts: {
75
+ backend: string;
76
+ allowCreate: string;
77
+ skipFrozen: string;
78
+ };
79
+ };
80
+ pull: {
81
+ desc: string;
82
+ opts: {
83
+ backend: string;
84
+ stash: string;
85
+ force: string;
86
+ };
87
+ };
88
+ status: {
89
+ desc: string;
90
+ opts: {
91
+ backend: string;
92
+ };
93
+ };
94
+ login: {
95
+ desc: string;
96
+ opts: {
97
+ backend: string;
98
+ url: string;
99
+ bootstrap: string;
100
+ admin: string;
101
+ };
102
+ };
103
+ logout: {
104
+ desc: string;
105
+ opts: {
106
+ backend: string;
107
+ };
108
+ };
109
+ whoami: {
110
+ desc: string;
111
+ opts: {
112
+ backend: string;
113
+ };
114
+ };
115
+ team: {
116
+ desc: string;
117
+ opts: {
118
+ backend: string;
119
+ };
120
+ sub: {
121
+ list: string;
122
+ };
123
+ };
124
+ project: {
125
+ desc: string;
126
+ opts: {
127
+ team: string;
128
+ backend: string;
129
+ };
130
+ sub: {
131
+ list: string;
132
+ };
133
+ };
134
+ admin: {
135
+ desc: string;
136
+ opts: {};
137
+ };
138
+ config: {
139
+ desc: string;
140
+ opts: {};
141
+ sub: {
142
+ show: string;
143
+ set: string;
144
+ use: string;
145
+ };
146
+ };
147
+ };
148
+ };
149
+ export default _default;