@unbrained/pm-cli 2026.5.11 → 2026.5.14

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 (171) hide show
  1. package/AGENTS.md +3 -116
  2. package/CHANGELOG.md +18 -0
  3. package/PRD.md +18 -39
  4. package/README.md +8 -5
  5. package/dist/cli/commander-usage.js +27 -0
  6. package/dist/cli/commander-usage.js.map +1 -1
  7. package/dist/cli/commands/activity.js +19 -4
  8. package/dist/cli/commands/activity.js.map +1 -1
  9. package/dist/cli/commands/calendar.js +5 -2
  10. package/dist/cli/commands/calendar.js.map +1 -1
  11. package/dist/cli/commands/contracts.js +63 -19
  12. package/dist/cli/commands/contracts.js.map +1 -1
  13. package/dist/cli/commands/create.js +58 -3
  14. package/dist/cli/commands/create.js.map +1 -1
  15. package/dist/cli/commands/extension.d.ts +14 -3
  16. package/dist/cli/commands/extension.js +481 -95
  17. package/dist/cli/commands/extension.js.map +1 -1
  18. package/dist/cli/commands/index.d.ts +1 -8
  19. package/dist/cli/commands/index.js +1 -8
  20. package/dist/cli/commands/index.js.map +1 -1
  21. package/dist/cli/commands/reindex.d.ts +8 -0
  22. package/dist/cli/commands/reindex.js +96 -23
  23. package/dist/cli/commands/reindex.js.map +1 -1
  24. package/dist/cli/commands/search.js +51 -25
  25. package/dist/cli/commands/search.js.map +1 -1
  26. package/dist/cli/commands/test.js +14 -6
  27. package/dist/cli/commands/test.js.map +1 -1
  28. package/dist/cli/commands/upgrade.d.ts +63 -0
  29. package/dist/cli/commands/upgrade.js +260 -0
  30. package/dist/cli/commands/upgrade.js.map +1 -0
  31. package/dist/cli/guide-topics.js +18 -16
  32. package/dist/cli/guide-topics.js.map +1 -1
  33. package/dist/cli/help-content.js +57 -18
  34. package/dist/cli/help-content.js.map +1 -1
  35. package/dist/cli/main.js +73 -7
  36. package/dist/cli/main.js.map +1 -1
  37. package/dist/cli/register-list-query.js +24 -142
  38. package/dist/cli/register-list-query.js.map +1 -1
  39. package/dist/cli/register-mutation.js +49 -257
  40. package/dist/cli/register-mutation.js.map +1 -1
  41. package/dist/cli/register-operations.js +29 -198
  42. package/dist/cli/register-operations.js.map +1 -1
  43. package/dist/cli/register-setup.js +181 -204
  44. package/dist/cli/register-setup.js.map +1 -1
  45. package/dist/cli/registration-helpers.d.ts +2 -2
  46. package/dist/cli/registration-helpers.js +1 -19
  47. package/dist/cli/registration-helpers.js.map +1 -1
  48. package/dist/core/extensions/loader.js +7 -1
  49. package/dist/core/extensions/loader.js.map +1 -1
  50. package/dist/core/packages/manifest.d.ts +38 -0
  51. package/dist/core/packages/manifest.js +221 -0
  52. package/dist/core/packages/manifest.js.map +1 -0
  53. package/dist/core/search/embedding-batches.d.ts +13 -1
  54. package/dist/core/search/embedding-batches.js +19 -1
  55. package/dist/core/search/embedding-batches.js.map +1 -1
  56. package/dist/core/store/front-matter-cache.d.ts +8 -1
  57. package/dist/core/store/front-matter-cache.js +20 -11
  58. package/dist/core/store/front-matter-cache.js.map +1 -1
  59. package/dist/mcp/server.d.ts +8 -0
  60. package/dist/mcp/server.js +100 -43
  61. package/dist/mcp/server.js.map +1 -1
  62. package/dist/sdk/cli-contracts/commander-mutation-options.d.ts +7 -0
  63. package/dist/sdk/cli-contracts/commander-mutation-options.js +477 -0
  64. package/dist/sdk/cli-contracts/commander-mutation-options.js.map +1 -0
  65. package/dist/sdk/cli-contracts/commander-types.d.ts +21 -0
  66. package/dist/sdk/cli-contracts/commander-types.js +92 -0
  67. package/dist/sdk/cli-contracts/commander-types.js.map +1 -0
  68. package/dist/sdk/cli-contracts.d.ts +22 -32
  69. package/dist/sdk/cli-contracts.js +155 -296
  70. package/dist/sdk/cli-contracts.js.map +1 -1
  71. package/dist/sdk/index.d.ts +2 -0
  72. package/dist/sdk/index.js +2 -0
  73. package/dist/sdk/index.js.map +1 -1
  74. package/dist/sdk/runtime.d.ts +29 -0
  75. package/dist/sdk/runtime.js +28 -0
  76. package/dist/sdk/runtime.js.map +1 -0
  77. package/docs/ARCHITECTURE.md +1 -1
  78. package/docs/COMMANDS.md +17 -1
  79. package/docs/EXTENSIONS.md +169 -61
  80. package/docs/QUICKSTART.md +11 -2
  81. package/docs/README.md +4 -6
  82. package/docs/RELEASING.md +4 -2
  83. package/docs/SDK.md +79 -438
  84. package/package.json +6 -23
  85. package/packages/pm-beads/README.md +10 -0
  86. package/packages/pm-beads/extensions/beads/index.js +113 -0
  87. package/{.agents/pm/extensions/beads/index.js → packages/pm-beads/extensions/beads/index.ts} +42 -20
  88. package/{.agents/pm → packages/pm-beads}/extensions/beads/runtime.js +2 -17
  89. package/{.agents/pm → packages/pm-beads}/extensions/beads/runtime.ts +41 -18
  90. package/packages/pm-beads/package.json +50 -0
  91. package/packages/pm-calendar/README.md +13 -0
  92. package/packages/pm-calendar/extensions/calendar/index.js +56 -0
  93. package/packages/pm-calendar/extensions/calendar/index.ts +62 -0
  94. package/packages/pm-calendar/extensions/calendar/manifest.json +7 -0
  95. package/packages/pm-calendar/extensions/calendar/runtime.js +95 -0
  96. package/packages/pm-calendar/extensions/calendar/runtime.ts +104 -0
  97. package/packages/pm-calendar/package.json +51 -0
  98. package/packages/pm-governance-audit/README.md +23 -0
  99. package/packages/pm-governance-audit/extensions/governance-audit/index.js +117 -0
  100. package/packages/pm-governance-audit/extensions/governance-audit/index.ts +118 -0
  101. package/packages/pm-governance-audit/extensions/governance-audit/manifest.json +7 -0
  102. package/packages/pm-governance-audit/extensions/governance-audit/runtime.js +159 -0
  103. package/packages/pm-governance-audit/extensions/governance-audit/runtime.ts +176 -0
  104. package/packages/pm-governance-audit/package.json +52 -0
  105. package/packages/pm-guide-shell/README.md +23 -0
  106. package/packages/pm-guide-shell/extensions/guide-shell/index.js +76 -0
  107. package/packages/pm-guide-shell/extensions/guide-shell/index.ts +81 -0
  108. package/packages/pm-guide-shell/extensions/guide-shell/manifest.json +7 -0
  109. package/packages/pm-guide-shell/extensions/guide-shell/runtime.js +263 -0
  110. package/packages/pm-guide-shell/extensions/guide-shell/runtime.ts +327 -0
  111. package/packages/pm-guide-shell/package.json +52 -0
  112. package/packages/pm-linked-test-adapters/README.md +24 -0
  113. package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/index.js +101 -0
  114. package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/index.ts +102 -0
  115. package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/manifest.json +7 -0
  116. package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/runtime.js +142 -0
  117. package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/runtime.ts +173 -0
  118. package/packages/pm-linked-test-adapters/package.json +53 -0
  119. package/packages/pm-search-advanced/README.md +27 -0
  120. package/packages/pm-search-advanced/extensions/search-advanced/index.js +93 -0
  121. package/packages/pm-search-advanced/extensions/search-advanced/index.ts +94 -0
  122. package/packages/pm-search-advanced/extensions/search-advanced/manifest.json +7 -0
  123. package/packages/pm-search-advanced/extensions/search-advanced/runtime.js +120 -0
  124. package/packages/pm-search-advanced/extensions/search-advanced/runtime.ts +144 -0
  125. package/packages/pm-search-advanced/package.json +54 -0
  126. package/packages/pm-templates/README.md +20 -0
  127. package/packages/pm-templates/extensions/templates/index.js +101 -0
  128. package/packages/pm-templates/extensions/templates/index.ts +109 -0
  129. package/packages/pm-templates/extensions/templates/manifest.json +7 -0
  130. package/packages/pm-templates/extensions/templates/runtime.js +226 -0
  131. package/packages/pm-templates/extensions/templates/runtime.ts +283 -0
  132. package/packages/pm-templates/package.json +50 -0
  133. package/packages/pm-todos/README.md +11 -0
  134. package/packages/pm-todos/extensions/todos/index.js +130 -0
  135. package/{.agents/pm/extensions/todos/index.js → packages/pm-todos/extensions/todos/index.ts} +47 -23
  136. package/{.agents/pm → packages/pm-todos}/extensions/todos/runtime.js +3 -18
  137. package/{.agents/pm → packages/pm-todos}/extensions/todos/runtime.ts +42 -20
  138. package/packages/pm-todos/package.json +51 -0
  139. package/plugins/pm-cli-claude/README.md +1 -2
  140. package/plugins/pm-cli-claude/hooks/session-start.mjs +4 -55
  141. package/plugins/pm-cli-claude/scripts/pm-mcp-server.mjs +4 -2
  142. package/plugins/pm-cli-codex/scripts/pm-mcp-server.mjs +4 -2
  143. package/.agents/pm/extensions/.managed-extensions.json +0 -42
  144. package/.agents/skills/HARNESS_COMPATIBILITY.md +0 -45
  145. package/.agents/skills/README.md +0 -21
  146. package/.agents/skills/pm-developer/SKILL.md +0 -73
  147. package/.agents/skills/pm-developer/references/COMMAND_PLAYBOOK.md +0 -48
  148. package/.agents/skills/pm-developer/references/PROMPTS.md +0 -17
  149. package/.agents/skills/pm-extensions/SKILL.md +0 -57
  150. package/.agents/skills/pm-extensions/references/LIFECYCLE.md +0 -40
  151. package/.agents/skills/pm-extensions/references/TROUBLESHOOTING.md +0 -25
  152. package/.agents/skills/pm-sdk/SKILL.md +0 -50
  153. package/.agents/skills/pm-sdk/references/INTEGRATION_CHECKLIST.md +0 -31
  154. package/.agents/skills/pm-sdk/references/PROMPTS.md +0 -13
  155. package/.agents/skills/pm-user/SKILL.md +0 -59
  156. package/.agents/skills/pm-user/references/PROMPTS.md +0 -17
  157. package/.agents/skills/pm-user/references/WORKFLOWS.md +0 -35
  158. package/.pi/README.md +0 -35
  159. package/.pi/agents/pm-triage-agent.md +0 -19
  160. package/.pi/agents/pm-verification-agent.md +0 -21
  161. package/.pi/chains/pm-native-delivery.chain.md +0 -11
  162. package/.pi/extensions/pm-cli/index.js +0 -387
  163. package/.pi/prompts/pm-workflow.md +0 -5
  164. package/.pi/skills/pm-native/SKILL.md +0 -44
  165. package/.pi/skills/pm-release/SKILL.md +0 -35
  166. package/dist/pi/native.d.ts +0 -5
  167. package/dist/pi/native.js +0 -236
  168. package/dist/pi/native.js.map +0 -1
  169. package/docs/PI_PACKAGE.md +0 -141
  170. /package/{.agents/pm → packages/pm-beads}/extensions/beads/manifest.json +0 -0
  171. /package/{.agents/pm → packages/pm-todos}/extensions/todos/manifest.json +0 -0
package/dist/pi/native.js DELETED
@@ -1,236 +0,0 @@
1
- import path from "node:path";
2
- import { fileURLToPath, pathToFileURL } from "node:url";
3
- import { PmCliError } from "../core/shared/errors.js";
4
- import { readSettings } from "../core/store/settings.js";
5
- import { resolvePmRoot } from "../core/store/paths.js";
6
- import { normalizeStatusInput } from "../core/item/status.js";
7
- import { resolveRuntimeStatusRegistry } from "../core/schema/runtime-schema.js";
8
- import { PM_TOOL_ACTIONS, isPmToolAction } from "../sdk/cli-contracts.js";
9
- import { runActivity, runAggregate, runAppend, runCalendar, runClaim, runClose, runComments, runCommentsAudit, runCompletion, runConfig, runContext, runContracts, runCreate, runDedupeAudit, runDelete, runDeps, runDocs, runExtension, runFiles, runFilesDiscover, runGc, runGet, runGuide, runHealth, runHistory, runInit, runLearnings, runList, runNormalize, runNotes, runReindex, runRelease, runRestore, runSearch, runStats, runTemplatesList, runTemplatesSave, runTemplatesShow, runTest, runTestAll, runTestRunsList, runTestRunsLogs, runTestRunsResume, runTestRunsStatus, runTestRunsStop, runUpdate, runUpdateMany, runValidate, } from "../cli/commands/index.js";
10
- const GLOBAL_KEYS = new Set([
11
- "action",
12
- "cwd",
13
- "path",
14
- "json",
15
- "quiet",
16
- "profile",
17
- "noExtensions",
18
- "noPager",
19
- "pmExecutable",
20
- "timeoutMs",
21
- "options",
22
- ]);
23
- const NATIVE_PM_ACTION_ALIASES = ["files-discover"];
24
- const NATIVE_PM_ACTIONS = new Set([...PM_TOOL_ACTIONS, ...NATIVE_PM_ACTION_ALIASES]);
25
- function asRecord(value) {
26
- return typeof value === "object" && value !== null && !Array.isArray(value) ? { ...value } : {};
27
- }
28
- function readString(args, key) {
29
- const value = args[key];
30
- return typeof value === "string" && value.trim().length > 0 ? value : undefined;
31
- }
32
- function mutationOptions(options) {
33
- return {
34
- author: readString(options, "author"),
35
- message: typeof options.message === "string" ? options.message : undefined,
36
- };
37
- }
38
- function requiredString(args, key, action) {
39
- const value = readString(args, key);
40
- if (!value) {
41
- throw new PmCliError(`Action "${action}" requires "${key}".`, 64);
42
- }
43
- return value;
44
- }
45
- export function nativeGlobalOptions(args) {
46
- return {
47
- json: args.json !== false,
48
- quiet: args.quiet === true,
49
- profile: args.profile === true,
50
- noExtensions: args.noExtensions === true,
51
- noPager: args.noPager !== false,
52
- path: readString(args, "path"),
53
- };
54
- }
55
- export function nativeCommandOptions(args) {
56
- const options = asRecord(args.options);
57
- for (const [key, value] of Object.entries(args)) {
58
- if (GLOBAL_KEYS.has(key) || value === undefined)
59
- continue;
60
- if (options[key] === undefined)
61
- options[key] = value;
62
- }
63
- const author = readString(args, "author");
64
- if (author && options.author === undefined)
65
- options.author = author;
66
- return options;
67
- }
68
- async function withCwd(cwd, run) {
69
- if (typeof cwd !== "string" || cwd.trim().length === 0)
70
- return run();
71
- const previous = process.cwd();
72
- process.chdir(cwd);
73
- try {
74
- return await run();
75
- }
76
- finally {
77
- process.chdir(previous);
78
- }
79
- }
80
- async function runStartTask(id, options, global) {
81
- const pmRoot = resolvePmRoot(process.cwd(), global.path);
82
- const settings = await readSettings(pmRoot);
83
- const statusRegistry = resolveRuntimeStatusRegistry(settings.schema);
84
- const status = normalizeStatusInput("in_progress", statusRegistry) ?? statusRegistry.open_status;
85
- const force = options.force === true;
86
- const baseOptions = mutationOptions(options);
87
- const claim = await runClaim(id, force, global, baseOptions);
88
- const update = await runUpdate(id, { ...baseOptions, status, force }, global);
89
- return { id, action: "start_task", claim, update };
90
- }
91
- async function runPauseTask(id, options, global) {
92
- const pmRoot = resolvePmRoot(process.cwd(), global.path);
93
- const settings = await readSettings(pmRoot);
94
- const statusRegistry = resolveRuntimeStatusRegistry(settings.schema);
95
- const force = options.force === true;
96
- const baseOptions = mutationOptions(options);
97
- const update = await runUpdate(id, { ...baseOptions, status: statusRegistry.open_status, force }, global);
98
- const release = await runRelease(id, force, global, baseOptions);
99
- return { id, action: "pause_task", update, release };
100
- }
101
- async function runCloseTask(id, reason, options, global) {
102
- const force = options.force === true;
103
- const baseOptions = mutationOptions(options);
104
- const close = await runClose(id, reason, { ...baseOptions, validateClose: readString(options, "validateClose"), force }, global);
105
- const release = await runRelease(id, force, global, baseOptions);
106
- return { id, action: "close_task", close, release };
107
- }
108
- function resolvePackageRoot() {
109
- return path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../..");
110
- }
111
- let bundledExtensionRuntimeReloadEpoch = 0;
112
- async function loadBundledExtensionRuntime(name, options) {
113
- const runtimePath = path.join(resolvePackageRoot(), ".agents", "pm", "extensions", name, "runtime.js");
114
- const runtimeUrl = new URL(pathToFileURL(runtimePath).href);
115
- if (options?.cacheBust === true) {
116
- bundledExtensionRuntimeReloadEpoch += 1;
117
- runtimeUrl.searchParams.set("pm_ext_reload", `${name}-${bundledExtensionRuntimeReloadEpoch}-${Date.now()}`);
118
- }
119
- return import(runtimeUrl.href);
120
- }
121
- async function runBeadsImport(options, global) {
122
- const runtime = await loadBundledExtensionRuntime("beads", { cacheBust: options.reload === true });
123
- const runner = runtime.runBeadsImport;
124
- if (typeof runner !== "function") {
125
- throw new PmCliError("Bundled beads runtime is missing runBeadsImport().", 1);
126
- }
127
- return runner(options, global);
128
- }
129
- async function runTodosImport(options, global) {
130
- const runtime = await loadBundledExtensionRuntime("todos", { cacheBust: options.reload === true });
131
- const runner = runtime.runTodosImport;
132
- if (typeof runner !== "function") {
133
- throw new PmCliError("Bundled todos runtime is missing runTodosImport().", 1);
134
- }
135
- return runner(options, global);
136
- }
137
- async function runTodosExport(options, global) {
138
- const runtime = await loadBundledExtensionRuntime("todos", { cacheBust: options.reload === true });
139
- const runner = runtime.runTodosExport;
140
- if (typeof runner !== "function") {
141
- throw new PmCliError("Bundled todos runtime is missing runTodosExport().", 1);
142
- }
143
- return runner(options, global);
144
- }
145
- export async function runNativePmAction(args) {
146
- return withCwd(args.cwd, async () => {
147
- const action = requiredString(args, "action", "pm").trim().toLowerCase();
148
- if (!NATIVE_PM_ACTIONS.has(action) && !isPmToolAction(action)) {
149
- throw new PmCliError(`Unsupported native pm action: ${action}`, 64);
150
- }
151
- const global = nativeGlobalOptions(args);
152
- const options = nativeCommandOptions(args);
153
- const id = readString(args, "id") ?? readString(options, "id");
154
- const force = args.force === true || options.force === true;
155
- switch (action) {
156
- case "init": return runInit(readString(args, "prefix") ?? readString(options, "prefix"), global, options);
157
- case "config": return runConfig(readString(args, "scope") ?? readString(options, "scope") ?? "project", readString(args, "configAction") ?? readString(options, "configAction") ?? requiredString(options, "action", action), readString(args, "key") ?? readString(options, "key"), options, global);
158
- case "extension-init": return runExtension(requiredString(args, "target", action), { ...options, init: true }, global);
159
- case "extension-install": return runExtension(readString(args, "target") ?? readString(options, "target"), { ...options, install: true }, global);
160
- case "extension-uninstall": return runExtension(requiredString(args, "target", action), { ...options, uninstall: true }, global);
161
- case "extension-explore": return runExtension(undefined, { ...options, explore: true }, global);
162
- case "extension-manage": return runExtension(undefined, { ...options, manage: true }, global);
163
- case "extension-reload": return runExtension(undefined, { ...options, reload: true }, global);
164
- case "extension-doctor": return runExtension(undefined, { ...options, doctor: true }, global);
165
- case "extension-adopt": return runExtension(requiredString(args, "target", action), { ...options, adopt: true }, global);
166
- case "extension-adopt-all": return runExtension(undefined, { ...options, adoptAll: true }, global);
167
- case "extension-activate": return runExtension(requiredString(args, "target", action), { ...options, activate: true }, global);
168
- case "extension-deactivate": return runExtension(requiredString(args, "target", action), { ...options, deactivate: true }, global);
169
- case "extension": return runExtension(readString(args, "target") ?? readString(options, "target"), options, global);
170
- case "beads-import": return runBeadsImport(options, global);
171
- case "todos-import": return runTodosImport(options, global);
172
- case "todos-export": return runTodosExport(options, global);
173
- case "create": return runCreate(options, global);
174
- case "list":
175
- case "list-all":
176
- case "list-draft":
177
- case "list-open":
178
- case "list-in-progress":
179
- case "list-blocked":
180
- case "list-closed":
181
- case "list-canceled": return runList(action === "list" ? readString(args, "status") : action === "list-all" ? undefined : action.replace("list-", "").replaceAll("-", "_"), options, global);
182
- case "aggregate": return runAggregate(options, global);
183
- case "dedupe-audit": return runDedupeAudit(options, global);
184
- case "calendar":
185
- case "cal": return runCalendar(options, global);
186
- case "context":
187
- case "ctx": return runContext(options, global);
188
- case "get": return runGet(id ?? requiredString(options, "id", action), global);
189
- case "search": return runSearch(readString(args, "query") ?? readString(args, "keywords") ?? requiredString(options, "query", action), options, global);
190
- case "reindex": return runReindex(options, global);
191
- case "history": return runHistory(id ?? requiredString(options, "id", action), options, global);
192
- case "activity": return runActivity(options, global);
193
- case "restore": return runRestore(id ?? requiredString(options, "id", action), readString(args, "target") ?? requiredString(options, "target", action), options, global);
194
- case "update": return runUpdate(id ?? requiredString(options, "id", action), options, global);
195
- case "update-many": return runUpdateMany(options, global);
196
- case "normalize": return runNormalize(options, global);
197
- case "close": return runClose(id ?? requiredString(options, "id", action), readString(args, "text") ?? readString(args, "reason") ?? requiredString(options, "text", action), options, global);
198
- case "delete": return runDelete(id ?? requiredString(options, "id", action), options, global);
199
- case "append": return runAppend(id ?? requiredString(options, "id", action), options, global);
200
- case "comments": return runComments(id ?? requiredString(options, "id", action), options, global);
201
- case "comments-audit": return runCommentsAudit(options, global);
202
- case "notes": return runNotes(id ?? requiredString(options, "id", action), options, global);
203
- case "learnings": return runLearnings(id ?? requiredString(options, "id", action), options, global);
204
- case "files": return runFiles(id ?? requiredString(options, "id", action), options, global);
205
- case "files-discover": return runFilesDiscover(id ?? requiredString(options, "id", action), options, global);
206
- case "docs": return runDocs(id ?? requiredString(options, "id", action), options, global);
207
- case "deps": return runDeps(id ?? requiredString(options, "id", action), options, global);
208
- case "test": return runTest(id ?? requiredString(options, "id", action), options, global);
209
- case "test-all": return runTestAll(options, global);
210
- case "test-runs-list": return runTestRunsList(options, global);
211
- case "test-runs-status": return runTestRunsStatus(requiredString(args, "runId", action), global);
212
- case "test-runs-logs": return runTestRunsLogs(requiredString(args, "runId", action), options, global);
213
- case "test-runs-stop": return runTestRunsStop(requiredString(args, "runId", action), options, global);
214
- case "test-runs-resume": return runTestRunsResume(requiredString(args, "runId", action), options, global);
215
- case "stats": return runStats(global);
216
- case "health": return runHealth(global, options);
217
- case "validate": return runValidate(options, global);
218
- case "gc": return runGc(global, options);
219
- case "contracts": return runContracts(options, global);
220
- case "completion": return runCompletion(requiredString(args, "shell", action), undefined, undefined, options.eagerTags === true, options.runtime);
221
- case "templates-save":
222
- return runTemplatesSave(readString(args, "template") ?? readString(options, "template") ?? requiredString(options, "name", action), options, global);
223
- case "templates-list": return runTemplatesList(global);
224
- case "templates-show":
225
- return runTemplatesShow(readString(args, "template") ?? readString(options, "template") ?? requiredString(options, "name", action), global);
226
- case "claim": return runClaim(id ?? requiredString(options, "id", action), force, global, options);
227
- case "release": return runRelease(id ?? requiredString(options, "id", action), force, global, options);
228
- case "start-task": return runStartTask(id ?? requiredString(options, "id", action), options, global);
229
- case "pause-task": return runPauseTask(id ?? requiredString(options, "id", action), options, global);
230
- case "close-task": return runCloseTask(id ?? requiredString(options, "id", action), readString(args, "text") ?? readString(args, "reason") ?? requiredString(options, "text", action), options, global);
231
- case "guide": return runGuide(options, global);
232
- default: throw new PmCliError(`Unsupported native pm action: ${action}`, 64);
233
- }
234
- });
235
- }
236
- //# sourceMappingURL=native.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"native.js","sourceRoot":"/","sources":["pi/native.ts"],"names":[],"mappings":"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","sourcesContent":["import path from \"node:path\";\nimport { fileURLToPath, pathToFileURL } from \"node:url\";\nimport type { GlobalOptions } from \"../core/shared/command-types.js\";\nimport { PmCliError } from \"../core/shared/errors.js\";\nimport { readSettings } from \"../core/store/settings.js\";\nimport { resolvePmRoot } from \"../core/store/paths.js\";\nimport { normalizeStatusInput } from \"../core/item/status.js\";\nimport { resolveRuntimeStatusRegistry } from \"../core/schema/runtime-schema.js\";\nimport { PM_TOOL_ACTIONS, isPmToolAction } from \"../sdk/cli-contracts.js\";\nimport {\n runActivity,\n runAggregate,\n runAppend,\n runCalendar,\n runClaim,\n runClose,\n runComments,\n runCommentsAudit,\n runCompletion,\n runConfig,\n runContext,\n runContracts,\n runCreate,\n runDedupeAudit,\n runDelete,\n runDeps,\n runDocs,\n runExtension,\n runFiles,\n runFilesDiscover,\n runGc,\n runGet,\n runGuide,\n runHealth,\n runHistory,\n runInit,\n runLearnings,\n runList,\n runNormalize,\n runNotes,\n runReindex,\n runRelease,\n runRestore,\n runSearch,\n runStats,\n runTemplatesList,\n runTemplatesSave,\n runTemplatesShow,\n runTest,\n runTestAll,\n runTestRunsList,\n runTestRunsLogs,\n runTestRunsResume,\n runTestRunsStatus,\n runTestRunsStop,\n runUpdate,\n runUpdateMany,\n runValidate,\n} from \"../cli/commands/index.js\";\n\nexport type NativePmArgs = Record<string, unknown>;\n\nconst GLOBAL_KEYS = new Set([\n \"action\",\n \"cwd\",\n \"path\",\n \"json\",\n \"quiet\",\n \"profile\",\n \"noExtensions\",\n \"noPager\",\n \"pmExecutable\",\n \"timeoutMs\",\n \"options\",\n]);\n\nconst NATIVE_PM_ACTION_ALIASES = [\"files-discover\"] as const;\nconst NATIVE_PM_ACTIONS = new Set<string>([...PM_TOOL_ACTIONS, ...NATIVE_PM_ACTION_ALIASES]);\n\nfunction asRecord(value: unknown): Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value) ? { ...(value as Record<string, unknown>) } : {};\n}\n\nfunction readString(args: Record<string, unknown>, key: string): string | undefined {\n const value = args[key];\n return typeof value === \"string\" && value.trim().length > 0 ? value : undefined;\n}\n\nfunction mutationOptions(options: Record<string, unknown>): { author?: string; message?: string } {\n return {\n author: readString(options, \"author\"),\n message: typeof options.message === \"string\" ? options.message : undefined,\n };\n}\n\nfunction requiredString(args: Record<string, unknown>, key: string, action: string): string {\n const value = readString(args, key);\n if (!value) {\n throw new PmCliError(`Action \"${action}\" requires \"${key}\".`, 64);\n }\n return value;\n}\n\nexport function nativeGlobalOptions(args: NativePmArgs): GlobalOptions {\n return {\n json: args.json !== false,\n quiet: args.quiet === true,\n profile: args.profile === true,\n noExtensions: args.noExtensions === true,\n noPager: args.noPager !== false,\n path: readString(args, \"path\"),\n };\n}\n\nexport function nativeCommandOptions(args: NativePmArgs): Record<string, unknown> {\n const options = asRecord(args.options);\n for (const [key, value] of Object.entries(args)) {\n if (GLOBAL_KEYS.has(key) || value === undefined) continue;\n if (options[key] === undefined) options[key] = value;\n }\n const author = readString(args, \"author\");\n if (author && options.author === undefined) options.author = author;\n return options;\n}\n\nasync function withCwd<T>(cwd: unknown, run: () => Promise<T>): Promise<T> {\n if (typeof cwd !== \"string\" || cwd.trim().length === 0) return run();\n const previous = process.cwd();\n process.chdir(cwd);\n try {\n return await run();\n } finally {\n process.chdir(previous);\n }\n}\n\nasync function runStartTask(id: string, options: Record<string, unknown>, global: GlobalOptions): Promise<unknown> {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n const settings = await readSettings(pmRoot);\n const statusRegistry = resolveRuntimeStatusRegistry(settings.schema);\n const status = normalizeStatusInput(\"in_progress\", statusRegistry) ?? statusRegistry.open_status;\n const force = options.force === true;\n const baseOptions = mutationOptions(options);\n const claim = await runClaim(id, force, global, baseOptions);\n const update = await runUpdate(id, { ...baseOptions, status, force }, global);\n return { id, action: \"start_task\", claim, update };\n}\n\nasync function runPauseTask(id: string, options: Record<string, unknown>, global: GlobalOptions): Promise<unknown> {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n const settings = await readSettings(pmRoot);\n const statusRegistry = resolveRuntimeStatusRegistry(settings.schema);\n const force = options.force === true;\n const baseOptions = mutationOptions(options);\n const update = await runUpdate(id, { ...baseOptions, status: statusRegistry.open_status, force }, global);\n const release = await runRelease(id, force, global, baseOptions);\n return { id, action: \"pause_task\", update, release };\n}\n\nasync function runCloseTask(id: string, reason: string, options: Record<string, unknown>, global: GlobalOptions): Promise<unknown> {\n const force = options.force === true;\n const baseOptions = mutationOptions(options);\n const close = await runClose(id, reason, { ...baseOptions, validateClose: readString(options, \"validateClose\"), force }, global);\n const release = await runRelease(id, force, global, baseOptions);\n return { id, action: \"close_task\", close, release };\n}\n\nfunction resolvePackageRoot(): string {\n return path.resolve(path.dirname(fileURLToPath(import.meta.url)), \"../..\");\n}\n\nlet bundledExtensionRuntimeReloadEpoch = 0;\n\nasync function loadBundledExtensionRuntime(\n name: \"beads\" | \"todos\",\n options?: { cacheBust?: boolean },\n): Promise<Record<string, unknown>> {\n const runtimePath = path.join(resolvePackageRoot(), \".agents\", \"pm\", \"extensions\", name, \"runtime.js\");\n const runtimeUrl = new URL(pathToFileURL(runtimePath).href);\n if (options?.cacheBust === true) {\n bundledExtensionRuntimeReloadEpoch += 1;\n runtimeUrl.searchParams.set(\"pm_ext_reload\", `${name}-${bundledExtensionRuntimeReloadEpoch}-${Date.now()}`);\n }\n return import(runtimeUrl.href) as Promise<Record<string, unknown>>;\n}\n\nasync function runBeadsImport(options: Record<string, unknown>, global: GlobalOptions): Promise<unknown> {\n const runtime = await loadBundledExtensionRuntime(\"beads\", { cacheBust: options.reload === true });\n const runner = runtime.runBeadsImport;\n if (typeof runner !== \"function\") {\n throw new PmCliError(\"Bundled beads runtime is missing runBeadsImport().\", 1);\n }\n return runner(options, global) as Promise<unknown>;\n}\n\nasync function runTodosImport(options: Record<string, unknown>, global: GlobalOptions): Promise<unknown> {\n const runtime = await loadBundledExtensionRuntime(\"todos\", { cacheBust: options.reload === true });\n const runner = runtime.runTodosImport;\n if (typeof runner !== \"function\") {\n throw new PmCliError(\"Bundled todos runtime is missing runTodosImport().\", 1);\n }\n return runner(options, global) as Promise<unknown>;\n}\n\nasync function runTodosExport(options: Record<string, unknown>, global: GlobalOptions): Promise<unknown> {\n const runtime = await loadBundledExtensionRuntime(\"todos\", { cacheBust: options.reload === true });\n const runner = runtime.runTodosExport;\n if (typeof runner !== \"function\") {\n throw new PmCliError(\"Bundled todos runtime is missing runTodosExport().\", 1);\n }\n return runner(options, global) as Promise<unknown>;\n}\n\nexport async function runNativePmAction(args: NativePmArgs): Promise<unknown> {\n return withCwd(args.cwd, async () => {\n const action = requiredString(args, \"action\", \"pm\").trim().toLowerCase();\n if (!NATIVE_PM_ACTIONS.has(action) && !isPmToolAction(action)) {\n throw new PmCliError(`Unsupported native pm action: ${action}`, 64);\n }\n const global = nativeGlobalOptions(args);\n const options = nativeCommandOptions(args);\n const id = readString(args, \"id\") ?? readString(options, \"id\");\n const force = args.force === true || options.force === true;\n\n switch (action) {\n case \"init\": return runInit(readString(args, \"prefix\") ?? readString(options, \"prefix\"), global, options);\n case \"config\": return runConfig(readString(args, \"scope\") ?? readString(options, \"scope\") ?? \"project\", readString(args, \"configAction\") ?? readString(options, \"configAction\") ?? requiredString(options, \"action\", action), readString(args, \"key\") ?? readString(options, \"key\"), options, global);\n case \"extension-init\": return runExtension(requiredString(args, \"target\", action), { ...options, init: true }, global);\n case \"extension-install\": return runExtension(readString(args, \"target\") ?? readString(options, \"target\"), { ...options, install: true }, global);\n case \"extension-uninstall\": return runExtension(requiredString(args, \"target\", action), { ...options, uninstall: true }, global);\n case \"extension-explore\": return runExtension(undefined, { ...options, explore: true }, global);\n case \"extension-manage\": return runExtension(undefined, { ...options, manage: true }, global);\n case \"extension-reload\": return runExtension(undefined, { ...options, reload: true }, global);\n case \"extension-doctor\": return runExtension(undefined, { ...options, doctor: true }, global);\n case \"extension-adopt\": return runExtension(requiredString(args, \"target\", action), { ...options, adopt: true }, global);\n case \"extension-adopt-all\": return runExtension(undefined, { ...options, adoptAll: true }, global);\n case \"extension-activate\": return runExtension(requiredString(args, \"target\", action), { ...options, activate: true }, global);\n case \"extension-deactivate\": return runExtension(requiredString(args, \"target\", action), { ...options, deactivate: true }, global);\n case \"extension\": return runExtension(readString(args, \"target\") ?? readString(options, \"target\"), options, global);\n case \"beads-import\": return runBeadsImport(options, global);\n case \"todos-import\": return runTodosImport(options, global);\n case \"todos-export\": return runTodosExport(options, global);\n case \"create\": return runCreate(options, global);\n case \"list\": case \"list-all\": case \"list-draft\": case \"list-open\": case \"list-in-progress\": case \"list-blocked\": case \"list-closed\": case \"list-canceled\": return runList(action === \"list\" ? readString(args, \"status\") : action === \"list-all\" ? undefined : action.replace(\"list-\", \"\").replaceAll(\"-\", \"_\"), options, global);\n case \"aggregate\": return runAggregate(options, global);\n case \"dedupe-audit\": return runDedupeAudit(options, global);\n case \"calendar\": case \"cal\": return runCalendar(options, global);\n case \"context\": case \"ctx\": return runContext(options, global);\n case \"get\": return runGet(id ?? requiredString(options, \"id\", action), global);\n case \"search\": return runSearch(readString(args, \"query\") ?? readString(args, \"keywords\") ?? requiredString(options, \"query\", action), options, global);\n case \"reindex\": return runReindex(options, global);\n case \"history\": return runHistory(id ?? requiredString(options, \"id\", action), options, global);\n case \"activity\": return runActivity(options, global);\n case \"restore\": return runRestore(id ?? requiredString(options, \"id\", action), readString(args, \"target\") ?? requiredString(options, \"target\", action), options, global);\n case \"update\": return runUpdate(id ?? requiredString(options, \"id\", action), options, global);\n case \"update-many\": return runUpdateMany(options as never, global);\n case \"normalize\": return runNormalize(options as never, global);\n case \"close\": return runClose(id ?? requiredString(options, \"id\", action), readString(args, \"text\") ?? readString(args, \"reason\") ?? requiredString(options, \"text\", action), options, global);\n case \"delete\": return runDelete(id ?? requiredString(options, \"id\", action), options, global);\n case \"append\": return runAppend(id ?? requiredString(options, \"id\", action), options as never, global);\n case \"comments\": return runComments(id ?? requiredString(options, \"id\", action), options, global);\n case \"comments-audit\": return runCommentsAudit(options, global);\n case \"notes\": return runNotes(id ?? requiredString(options, \"id\", action), options, global);\n case \"learnings\": return runLearnings(id ?? requiredString(options, \"id\", action), options, global);\n case \"files\": return runFiles(id ?? requiredString(options, \"id\", action), options, global);\n case \"files-discover\": return runFilesDiscover(id ?? requiredString(options, \"id\", action), options, global);\n case \"docs\": return runDocs(id ?? requiredString(options, \"id\", action), options, global);\n case \"deps\": return runDeps(id ?? requiredString(options, \"id\", action), options, global);\n case \"test\": return runTest(id ?? requiredString(options, \"id\", action), options, global);\n case \"test-all\": return runTestAll(options, global);\n case \"test-runs-list\": return runTestRunsList(options, global);\n case \"test-runs-status\": return runTestRunsStatus(requiredString(args, \"runId\", action), global);\n case \"test-runs-logs\": return runTestRunsLogs(requiredString(args, \"runId\", action), options, global);\n case \"test-runs-stop\": return runTestRunsStop(requiredString(args, \"runId\", action), options, global);\n case \"test-runs-resume\": return runTestRunsResume(requiredString(args, \"runId\", action), options, global);\n case \"stats\": return runStats(global);\n case \"health\": return runHealth(global, options);\n case \"validate\": return runValidate(options, global);\n case \"gc\": return runGc(global, options);\n case \"contracts\": return runContracts(options, global);\n case \"completion\": return runCompletion(requiredString(args, \"shell\", action), undefined, undefined, options.eagerTags === true, options.runtime as never);\n case \"templates-save\":\n return runTemplatesSave(\n readString(args, \"template\") ?? readString(options, \"template\") ?? requiredString(options, \"name\", action),\n options,\n global,\n );\n case \"templates-list\": return runTemplatesList(global);\n case \"templates-show\":\n return runTemplatesShow(\n readString(args, \"template\") ?? readString(options, \"template\") ?? requiredString(options, \"name\", action),\n global,\n );\n case \"claim\": return runClaim(id ?? requiredString(options, \"id\", action), force, global, options);\n case \"release\": return runRelease(id ?? requiredString(options, \"id\", action), force, global, options);\n case \"start-task\": return runStartTask(id ?? requiredString(options, \"id\", action), options, global);\n case \"pause-task\": return runPauseTask(id ?? requiredString(options, \"id\", action), options, global);\n case \"close-task\": return runCloseTask(id ?? requiredString(options, \"id\", action), readString(args, \"text\") ?? readString(args, \"reason\") ?? requiredString(options, \"text\", action), options, global);\n case \"guide\": return runGuide(options, global);\n default: throw new PmCliError(`Unsupported native pm action: ${action}`, 64);\n }\n });\n}\n"]}
@@ -1,141 +0,0 @@
1
- # Pi Native Package & Claude Code Plugin
2
-
3
- pm-cli ships both an official Pi package and a Claude Code plugin so AI coding agents can use pm through native integrations instead of shelling out to the `pm` CLI.
4
-
5
- ## Claude Code Plugin
6
-
7
- The Claude Code plugin (`plugins/pm-cli-claude/`) provides full native pm integration for Claude Code without any CLI dependency.
8
-
9
- ### Install
10
-
11
- ```
12
- /plugin install pm-cli@pm
13
- ```
14
-
15
- Both `pm` and `pm-cli` marketplace IDs work:
16
-
17
- ```
18
- /plugin install pm-cli@pm # canonical
19
- /plugin install pm-cli@pm-cli # legacy alias
20
- ```
21
-
22
- To add the marketplace first (local checkout):
23
-
24
- ```bash
25
- claude plugin marketplace add /path/to/pm-cli
26
- ```
27
-
28
- After npm publish, the marketplace will be available via GitHub:
29
-
30
- ```bash
31
- claude plugin marketplace add unbraind/pm-cli
32
- ```
33
-
34
- ### Plugin Components
35
-
36
- | Component | Path | What it provides |
37
- |-----------|------|-----------------|
38
- | MCP server | `scripts/pm-mcp-server.mjs` | 18 native MCP tools |
39
- | Skills | `skills/` | 5 workflow skills auto-loaded in Claude Code |
40
- | Commands | `commands/` | 14 slash commands |
41
- | Agents | `agents/` | 3 subagents + 1 delivery chain |
42
- | Hooks | `hooks/` | Session-start context injection |
43
-
44
- ### MCP Tools (18)
45
-
46
- Narrow tools: `pm_context`, `pm_search`, `pm_list`, `pm_get`, `pm_create`, `pm_update`, `pm_claim`, `pm_release`, `pm_close`, `pm_comments`, `pm_files`, `pm_docs`, `pm_test`, `pm_validate`, `pm_health`, `pm_contracts`, `pm_guide`
47
-
48
- General tool: `pm_run` (with explicit `action` for everything else)
49
-
50
- ### Subagents (4)
51
-
52
- | Agent | Description |
53
- |-------|-------------|
54
- | `pm-coordinator` | Multi-item batch coordination |
55
- | `pm-triage-agent` | Duplicate-safe item creation with lineage |
56
- | `pm-verification-agent` | Evidence collection and close readiness |
57
- | `pm-delivery-chain` | Full triage → implement → verify orchestration |
58
-
59
- ### Session Hook
60
-
61
- The session-start hook runs natively:
62
- 1. Walks up from plugin root to find `dist/pi/native.js` in a repo checkout
63
- 2. Falls back to `npx @unbrained/pm-cli` if no local dist
64
- 3. No `pm` CLI global install required in either path
65
-
66
- ---
67
-
68
- ## Pi Native Package
69
-
70
- The Pi package at `.pi/` exposes pm through Pi's native extension API.
71
-
72
- ### Install
73
-
74
- After the package is published:
75
-
76
- ```bash
77
- pi install npm:@unbrained/pm-cli
78
- ```
79
-
80
- From a local checkout:
81
-
82
- ```bash
83
- pnpm build
84
- pi install -l .
85
- # or try without writing settings
86
- pi --no-extensions -e .
87
- ```
88
-
89
- `pnpm build` is required for local checkouts because the Pi extension imports the compiled native integration from `dist/pi/native.js`.
90
-
91
- ### Package Resources
92
-
93
- The root `package.json` declares the Pi manifest:
94
-
95
- - `pi.extensions`: `.pi/extensions/pm-cli/index.js`
96
- - `pi.skills`: `.pi/skills`
97
- - `pi.prompts`: `.pi/prompts`
98
-
99
- The extension registers:
100
-
101
- - native `pm` tool using pm command modules directly, not the `pm` shell command
102
- - custom TUI rendering for pm tool calls/results (context, list/search, item details, history/activity)
103
- - `/pm-context`, `/pm-board`, `/pm-item`, `/pm-history`, `/pm-start`, `/pm-close`, `/pm-actions`, and `/pm-workflows` helper commands
104
- - `@pm-...` item autocomplete layered on top of Pi's editor completion
105
- - footer status and a small below-editor widget (`pm native ready`) in interactive mode
106
-
107
- ### Native Tool Usage
108
-
109
- Use the Pi `pm` tool with an `action` field. Examples:
110
-
111
- ```json
112
- { "action": "context", "limit": 10 }
113
- { "action": "search", "query": "pi extension", "limit": 10 }
114
- { "action": "start-task", "id": "pm-1234", "author": "pi-agent" }
115
- { "action": "files", "id": "pm-1234", "add": ["path=src/file.ts,scope=project,note=implementation"], "author": "pi-agent" }
116
- { "action": "close-task", "id": "pm-1234", "text": "Verified and complete", "author": "pi-agent", "validateClose": "warn" }
117
- ```
118
-
119
- For real project tracking, leave `path` unset. For tests, set `path` to a sandbox pm root and isolate `PM_GLOBAL_PATH`.
120
-
121
- ### Pi TUI Commands
122
-
123
- ```text
124
- /pm-board [limit] # context dashboard with active items
125
- /pm-item <pm-id> # item details and recent comments
126
- /pm-history <pm-id> # item history panel
127
- /pm-actions # installed native action list
128
- /pm-workflows # suggested native pm workflows
129
- ```
130
-
131
- ### Pi Skills and Subagents
132
-
133
- - Skills: `pm-native`, `pm-release`
134
- - Prompt template: `/pm-workflow`
135
- - Subagent files: `.pi/agents/pm-triage-agent.md`, `.pi/agents/pm-verification-agent.md`, `.pi/chains/pm-native-delivery.chain.md`
136
-
137
- ---
138
-
139
- ## Supported Surface
140
-
141
- Both integrations cover the core pm action set: init/config/extensions, item creation and lifecycle, list/search/context/calendar/activity, files/docs/deps/tests, validation/health/gc/contracts, templates, test-runs, guide workflows, bundled beads/todos import/export, and lifecycle shortcuts (`start-task`, `pause-task`, `close-task`).