pm-starter 2026.5.31 → 2026.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +405 -171
- package/dist/index.js.map +1 -1
- package/manifest.json +5 -4
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2026.06.02 - 2026-06-02
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- Make pm-starter the canonical full ExtensionApi reference ([pm-starter-oi1i](https://github.com/unbraind/pm-starter/blob/main/.agents/pm/features/pm-starter-oi1i.toon))
|
|
8
|
+
|
|
3
9
|
## 2026.05.28 - 2026-05-28
|
|
4
10
|
|
|
5
11
|
### Added
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,26 @@
|
|
|
1
|
+
export declare const EXIT_CODE: {
|
|
2
|
+
readonly GENERIC_FAILURE: 1;
|
|
3
|
+
readonly USAGE: 2;
|
|
4
|
+
readonly NOT_FOUND: 3;
|
|
5
|
+
};
|
|
6
|
+
export declare class CommandError extends Error {
|
|
7
|
+
exitCode: number;
|
|
8
|
+
constructor(message: string, exitCode?: number);
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Read a boolean option honoring both the kebab-case long flag and the
|
|
12
|
+
* camelCase key the runtime may normalize it to (e.g. `--dry-run` -> `dryRun`).
|
|
13
|
+
* Without this, `ctx.options["dry-run"]` can silently be `undefined`.
|
|
14
|
+
*/
|
|
15
|
+
export declare function optionEnabled(options: Record<string, unknown>, ...keys: string[]): boolean;
|
|
16
|
+
/** Read a string option, trying multiple key spellings; returns undefined if absent. */
|
|
17
|
+
export declare function optionString(options: Record<string, unknown>, ...keys: string[]): string | undefined;
|
|
18
|
+
/**
|
|
19
|
+
* Safely read all items from the workspace by shelling out to `pm`. Returns an
|
|
20
|
+
* empty array on any failure so demos never throw at activation/read time.
|
|
21
|
+
* This is the SAFE read pattern every demo reuses.
|
|
22
|
+
*/
|
|
23
|
+
export declare function readPmItems(pmRoot: string): Array<Record<string, any>>;
|
|
1
24
|
declare const _default: {
|
|
2
25
|
name: string;
|
|
3
26
|
version: string;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AA+DA,eAAO,MAAM,SAAS;;;;CAIZ,CAAC;AAEX,qBAAa,YAAa,SAAQ,KAAK;IACrC,QAAQ,EAAE,MAAM,CAAC;gBACL,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAkC;CAK1E;AAMD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAK1F;AAED,wFAAwF;AACxF,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAMpG;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CActE;;;;kBA0Ye,GAAG;;AAJnB,wBAkBG"}
|
package/dist/index.js
CHANGED
|
@@ -1,258 +1,492 @@
|
|
|
1
|
-
// pm-starter —
|
|
2
|
-
// Demonstrates all capability types. Copy this file to start a new extension.
|
|
1
|
+
// pm-starter — the CANONICAL reference extension for pm-cli.
|
|
3
2
|
//
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
//
|
|
7
|
-
// 3. hooks — React to lifecycle events (before/after create, update, close)
|
|
8
|
-
// 4. importers — Programmatic data import
|
|
9
|
-
// 5. renderers — Custom output formatting
|
|
10
|
-
// 6. search — Custom search providers
|
|
11
|
-
// 7. preflight — Pre-flight checks before commands run
|
|
12
|
-
// 8. services — Background services and health checks
|
|
3
|
+
// This file is a learning template: it demonstrates EVERY capability of the
|
|
4
|
+
// pm-cli ExtensionApi with a small, SAFE, heavily-commented example of each.
|
|
5
|
+
// Copy the pattern you need into your own extension and delete the rest.
|
|
13
6
|
//
|
|
14
|
-
//
|
|
15
|
-
//
|
|
16
|
-
//
|
|
17
|
-
//
|
|
18
|
-
//
|
|
19
|
-
//
|
|
20
|
-
//
|
|
7
|
+
// Each demonstration is labelled in comments as "DEMO: <capability>" and is
|
|
8
|
+
// deliberately INERT — no destructive behavior and no network access. The demos
|
|
9
|
+
// only read (via `pm ... --json`), print, or return data; they never delete or
|
|
10
|
+
// mutate your workspace on their own.
|
|
11
|
+
//
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
// CAPABILITY → setup function → manifest capability (see README for the full
|
|
14
|
+
// copy-paste matrix):
|
|
15
|
+
//
|
|
16
|
+
// registerCommand setupCommands "commands"
|
|
17
|
+
// registerRenderer setupRenderers "renderers"
|
|
18
|
+
// hooks.before/after/ setupHooks "hooks"
|
|
19
|
+
// onWrite/onRead/onIndex
|
|
20
|
+
// registerItemFields setupSchema "schema"
|
|
21
|
+
// registerItemTypes setupSchema "schema"
|
|
22
|
+
// registerMigration setupSchema "schema"
|
|
23
|
+
// registerImporter setupImportExport "importers"
|
|
24
|
+
// registerExporter setupImportExport "importers"
|
|
25
|
+
// registerSearchProvider setupSearch "search"
|
|
26
|
+
// registerVectorStoreAdapter setupSearch "search"
|
|
27
|
+
// registerParser setupParser "parser"
|
|
28
|
+
// registerPreflight setupPreflight "preflight"
|
|
29
|
+
// registerService setupServices "services"
|
|
30
|
+
// registerFlags setupFlags "commands"
|
|
31
|
+
//
|
|
32
|
+
// NOTE on naming / collisions: `registerImporter("starter-demo")` auto-creates
|
|
33
|
+
// the command path `pm starter-demo import`, and `registerExporter("starter-demo")`
|
|
34
|
+
// creates `pm starter-demo export`. We therefore namespace our human-facing
|
|
35
|
+
// commands under `pm starter ...` (greet/summary/demo) so they never collide
|
|
36
|
+
// with the importer/exporter command paths under `pm starter-demo ...`.
|
|
37
|
+
// `pm extension doctor` reports 0 collisions as a result.
|
|
38
|
+
//
|
|
39
|
+
// ---------------------------------------------------------------------------
|
|
40
|
+
import { spawnSync } from "node:child_process";
|
|
41
|
+
// Standalone-installed extensions load ONLY their own `dist/` at runtime, so
|
|
42
|
+
// `@unbrained/pm-cli` is not resolvable as a runtime value. We therefore use the
|
|
43
|
+
// zero-runtime-coupling pattern: import `defineExtension` as a TYPE only and
|
|
44
|
+
// provide a trivial identity implementation. The real CLI supplies the live
|
|
45
|
+
// `api` object at activation time.
|
|
21
46
|
const defineExtension = ((extension) => extension);
|
|
22
47
|
// ---------------------------------------------------------------------------
|
|
23
|
-
//
|
|
48
|
+
// Error contract (re-implemented locally — DO NOT import from the SDK)
|
|
49
|
+
//
|
|
50
|
+
// pm's extension command runtime only treats a thrown error as a cleanly
|
|
51
|
+
// handled non-zero exit when the error carries a numeric `exitCode` property
|
|
52
|
+
// (see @unbrained/pm-cli runCommandHandler). A plain `Error` makes the runtime
|
|
53
|
+
// fall through to its "unhandled" path, which RE-INVOKES the command handler a
|
|
54
|
+
// second time — doubling side effects and exiting with a generic code instead
|
|
55
|
+
// of a semantic one. We mirror the SDK's EXIT_CODE contract here rather than
|
|
56
|
+
// importing it, because standalone extensions cannot resolve the SDK at runtime.
|
|
57
|
+
// ---------------------------------------------------------------------------
|
|
58
|
+
export const EXIT_CODE = {
|
|
59
|
+
GENERIC_FAILURE: 1,
|
|
60
|
+
USAGE: 2,
|
|
61
|
+
NOT_FOUND: 3,
|
|
62
|
+
};
|
|
63
|
+
export class CommandError extends Error {
|
|
64
|
+
exitCode;
|
|
65
|
+
constructor(message, exitCode = EXIT_CODE.GENERIC_FAILURE) {
|
|
66
|
+
super(message);
|
|
67
|
+
this.name = "CommandError";
|
|
68
|
+
this.exitCode = exitCode;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// ---------------------------------------------------------------------------
|
|
72
|
+
// Shared helpers
|
|
73
|
+
// ---------------------------------------------------------------------------
|
|
74
|
+
/**
|
|
75
|
+
* Read a boolean option honoring both the kebab-case long flag and the
|
|
76
|
+
* camelCase key the runtime may normalize it to (e.g. `--dry-run` -> `dryRun`).
|
|
77
|
+
* Without this, `ctx.options["dry-run"]` can silently be `undefined`.
|
|
78
|
+
*/
|
|
79
|
+
export function optionEnabled(options, ...keys) {
|
|
80
|
+
return keys.some((k) => {
|
|
81
|
+
const v = options[k];
|
|
82
|
+
return v === true || v === "true" || v === "1";
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
/** Read a string option, trying multiple key spellings; returns undefined if absent. */
|
|
86
|
+
export function optionString(options, ...keys) {
|
|
87
|
+
for (const k of keys) {
|
|
88
|
+
const v = options[k];
|
|
89
|
+
if (typeof v === "string" && v.trim().length > 0)
|
|
90
|
+
return v.trim();
|
|
91
|
+
}
|
|
92
|
+
return undefined;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Safely read all items from the workspace by shelling out to `pm`. Returns an
|
|
96
|
+
* empty array on any failure so demos never throw at activation/read time.
|
|
97
|
+
* This is the SAFE read pattern every demo reuses.
|
|
98
|
+
*/
|
|
99
|
+
export function readPmItems(pmRoot) {
|
|
100
|
+
const result = spawnSync("pm", ["--path", pmRoot, "list-all", "--json", "--include-body"], { encoding: "utf-8" });
|
|
101
|
+
if (result.status !== 0)
|
|
102
|
+
return [];
|
|
103
|
+
try {
|
|
104
|
+
const parsed = JSON.parse(result.stdout);
|
|
105
|
+
if (Array.isArray(parsed))
|
|
106
|
+
return parsed;
|
|
107
|
+
return parsed.items ?? parsed.results ?? [];
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
return [];
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
// ---------------------------------------------------------------------------
|
|
114
|
+
// DEMO: commands (registerCommand)
|
|
115
|
+
//
|
|
116
|
+
// Three commands, all under the `pm starter ...` namespace so they never
|
|
117
|
+
// collide with the importer/exporter command paths (`pm starter-demo ...`).
|
|
118
|
+
// `greet` and `summary` are kept for backward compatibility.
|
|
24
119
|
// ---------------------------------------------------------------------------
|
|
25
120
|
function setupCommands(api) {
|
|
26
|
-
//
|
|
121
|
+
// DEMO: registerCommand — a self-contained command with typed flags.
|
|
122
|
+
// Because this command declares a `flags` array, the manifest MUST also list
|
|
123
|
+
// the "schema" capability (the flag schema), in addition to "commands".
|
|
27
124
|
api.registerCommand({
|
|
28
125
|
name: "starter greet",
|
|
29
126
|
description: "A demo greeting command from the starter extension.",
|
|
30
|
-
intent: "demonstrate command registration",
|
|
127
|
+
intent: "demonstrate command registration with flags",
|
|
31
128
|
examples: [
|
|
32
129
|
"pm starter greet",
|
|
33
130
|
"pm starter greet --name Developer",
|
|
34
|
-
"pm starter greet --name Dev --
|
|
131
|
+
"pm starter greet --name Dev --uppercase",
|
|
35
132
|
],
|
|
36
133
|
flags: [
|
|
37
|
-
{ long: "--name", value_name: "name", description: "Name to greet (default: World)" },
|
|
38
|
-
{ long: "--emoji", value_name: "emoji", description: "Emoji to include (default:
|
|
39
|
-
{ long: "--uppercase", description: "Uppercase the output" },
|
|
134
|
+
{ long: "--name", value_name: "name", description: "Name to greet (default: World)", type: "string" },
|
|
135
|
+
{ long: "--emoji", value_name: "emoji", description: "Emoji to include (default: wave)", type: "string" },
|
|
136
|
+
{ long: "--uppercase", description: "Uppercase the output", type: "boolean" },
|
|
40
137
|
],
|
|
41
138
|
async run(ctx) {
|
|
42
|
-
const name = ctx.options
|
|
43
|
-
const emoji = ctx.options
|
|
44
|
-
const upper =
|
|
45
|
-
let
|
|
139
|
+
const name = optionString(ctx.options, "name") || "World";
|
|
140
|
+
const emoji = optionString(ctx.options, "emoji") || "👋";
|
|
141
|
+
const upper = optionEnabled(ctx.options, "uppercase");
|
|
142
|
+
let message = `${emoji} Hello, ${name}!`;
|
|
46
143
|
if (upper)
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
144
|
+
message = message.toUpperCase();
|
|
145
|
+
// Print human output to stderr; return structured data for --json hosts.
|
|
146
|
+
console.error(message);
|
|
147
|
+
return { message };
|
|
50
148
|
},
|
|
51
149
|
});
|
|
52
|
-
//
|
|
150
|
+
// DEMO: registerCommand — a command that calls back into `pm` (read-only).
|
|
53
151
|
api.registerCommand({
|
|
54
152
|
name: "starter summary",
|
|
55
|
-
description: "Show a quick workspace summary using pm stats
|
|
153
|
+
description: "Show a quick workspace summary using `pm stats`.",
|
|
56
154
|
intent: "demonstrate calling pm from an extension",
|
|
57
|
-
examples: ["pm starter summary"],
|
|
155
|
+
examples: ["pm starter summary", "pm starter summary --verbose"],
|
|
58
156
|
flags: [
|
|
59
|
-
{ long: "--verbose", description: "Include
|
|
157
|
+
{ long: "--verbose", description: "Include a per-type breakdown", type: "boolean" },
|
|
60
158
|
],
|
|
61
159
|
async run(ctx) {
|
|
62
|
-
const { spawnSync } = await import("node:child_process");
|
|
63
160
|
const result = spawnSync("pm", ["--path", ctx.pm_root, "stats", "--json"], {
|
|
64
161
|
encoding: "utf-8",
|
|
65
162
|
});
|
|
66
163
|
if (result.status !== 0) {
|
|
67
|
-
|
|
68
|
-
|
|
164
|
+
// Throw a CommandError (carrying an exitCode) so the CLI exits non-zero
|
|
165
|
+
// exactly ONCE rather than re-invoking this handler.
|
|
166
|
+
throw new CommandError("`pm stats` failed", EXIT_CODE.GENERIC_FAILURE);
|
|
69
167
|
}
|
|
168
|
+
let stats;
|
|
70
169
|
try {
|
|
71
|
-
|
|
72
|
-
const total = stats.totals?.items ?? 0;
|
|
73
|
-
const byStatus = stats.by_status ?? {};
|
|
74
|
-
console.error(`\n Workspace Summary`);
|
|
75
|
-
console.error(` ================`);
|
|
76
|
-
console.error(` Total items: ${total}`);
|
|
77
|
-
for (const [status, count] of Object.entries(byStatus)) {
|
|
78
|
-
if (count > 0) {
|
|
79
|
-
console.error(` ${status}: ${count}`);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
if (ctx.options["verbose"] && stats.by_type) {
|
|
83
|
-
console.error(`\n By type:`);
|
|
84
|
-
for (const [type, count] of Object.entries(stats.by_type)) {
|
|
85
|
-
if (count > 0) {
|
|
86
|
-
console.error(` ${type}: ${count}`);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
return stats;
|
|
170
|
+
stats = JSON.parse(result.stdout);
|
|
91
171
|
}
|
|
92
172
|
catch {
|
|
93
|
-
|
|
94
|
-
|
|
173
|
+
throw new CommandError("Could not parse `pm stats --json` output.");
|
|
174
|
+
}
|
|
175
|
+
const total = stats.totals?.items ?? 0;
|
|
176
|
+
const byStatus = stats.by_status ?? {};
|
|
177
|
+
console.error(`\n Workspace Summary\n =================`);
|
|
178
|
+
console.error(` Total items: ${total}`);
|
|
179
|
+
for (const [status, count] of Object.entries(byStatus)) {
|
|
180
|
+
if (count > 0)
|
|
181
|
+
console.error(` ${status}: ${count}`);
|
|
182
|
+
}
|
|
183
|
+
if (optionEnabled(ctx.options, "verbose") && stats.by_type) {
|
|
184
|
+
console.error(`\n By type:`);
|
|
185
|
+
for (const [type, count] of Object.entries(stats.by_type)) {
|
|
186
|
+
if (count > 0)
|
|
187
|
+
console.error(` ${type}: ${count}`);
|
|
188
|
+
}
|
|
95
189
|
}
|
|
190
|
+
return stats;
|
|
191
|
+
},
|
|
192
|
+
});
|
|
193
|
+
// DEMO: registerCommand — a command whose RESULT is reshaped by our renderer
|
|
194
|
+
// override (see setupRenderers). Run `pm starter demo --json` /
|
|
195
|
+
// `pm --toon starter demo` to see the custom rendering kick in.
|
|
196
|
+
api.registerCommand({
|
|
197
|
+
name: "starter demo",
|
|
198
|
+
description: "Emit a small structured result that the starter renderer reshapes.",
|
|
199
|
+
intent: "demonstrate a command result flowing through a custom renderer",
|
|
200
|
+
examples: ["pm starter demo", "pm starter demo --json"],
|
|
201
|
+
async run(ctx) {
|
|
202
|
+
const items = readPmItems(ctx.pm_root);
|
|
203
|
+
// Return a small, predictable shape the renderer override can recognize.
|
|
204
|
+
return {
|
|
205
|
+
starter_demo: true,
|
|
206
|
+
item_count: items.length,
|
|
207
|
+
sample: items.slice(0, 3).map((i) => ({ id: i.id, title: i.title, status: i.status })),
|
|
208
|
+
};
|
|
96
209
|
},
|
|
97
210
|
});
|
|
98
211
|
}
|
|
99
212
|
// ---------------------------------------------------------------------------
|
|
100
|
-
//
|
|
213
|
+
// DEMO: renderers (registerRenderer)
|
|
214
|
+
//
|
|
215
|
+
// A renderer override receives the command RESULT and returns the final string
|
|
216
|
+
// the CLI prints. Valid formats are ONLY "toon" and "json". We make both
|
|
217
|
+
// pass-through-safe: if we don't recognize the payload, we fall back to the
|
|
218
|
+
// default serialization so we never break unrelated commands.
|
|
101
219
|
// ---------------------------------------------------------------------------
|
|
102
|
-
function
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
220
|
+
function setupRenderers(api) {
|
|
221
|
+
// DEMO: registerRenderer("json") — reshape ONLY our own `starter demo`
|
|
222
|
+
// payload. A renderer override is registered per-format and is invoked for
|
|
223
|
+
// EVERY command using that format, so for anything that isn't our payload we
|
|
224
|
+
// return a non-string (null): pm then falls through to its native renderer
|
|
225
|
+
// and no other command's output is altered. This is the safe pattern — never
|
|
226
|
+
// globally hijack toon/json output from a shared extension.
|
|
227
|
+
api.registerRenderer("json", (ctx) => {
|
|
228
|
+
const result = ctx.result;
|
|
229
|
+
if (result && typeof result === "object" && result.starter_demo) {
|
|
230
|
+
return JSON.stringify({ rendered_by: "pm-starter", ...result }, null, 2);
|
|
231
|
+
}
|
|
232
|
+
return null; // not ours → native rendering
|
|
233
|
+
});
|
|
234
|
+
// DEMO: registerRenderer("toon") — a compact line view for OUR payload only;
|
|
235
|
+
// null for everything else so native TOON rendering is preserved.
|
|
236
|
+
api.registerRenderer("toon", (ctx) => {
|
|
237
|
+
const result = ctx.result;
|
|
238
|
+
if (result && typeof result === "object" && result.starter_demo) {
|
|
239
|
+
const r = result;
|
|
240
|
+
const lines = [`pm-starter demo — ${r.item_count} item(s)`];
|
|
241
|
+
for (const s of r.sample ?? [])
|
|
242
|
+
lines.push(` ${s.id}\t${s.status}\t${s.title}`);
|
|
243
|
+
return lines.join("\n");
|
|
244
|
+
}
|
|
245
|
+
return null; // not ours → native rendering
|
|
118
246
|
});
|
|
119
247
|
}
|
|
120
248
|
// ---------------------------------------------------------------------------
|
|
121
|
-
//
|
|
249
|
+
// DEMO: hooks (all five)
|
|
250
|
+
//
|
|
251
|
+
// Hooks are observe-only here. They print to stderr only when the opt-in
|
|
252
|
+
// env var PM_STARTER_HOOKS is set, so installing the reference extension never
|
|
253
|
+
// adds noise to an unrelated workspace.
|
|
122
254
|
// ---------------------------------------------------------------------------
|
|
123
255
|
function setupHooks(api) {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
console.error(`[starter] ✨ Item created: #${item.id} "${item.title}" (${item.type}/${item.status})`);
|
|
131
|
-
}
|
|
256
|
+
const enabled = () => Boolean(process.env.PM_STARTER_HOOKS);
|
|
257
|
+
const log = (msg) => { if (enabled())
|
|
258
|
+
console.error(`[pm-starter] ${msg}`); };
|
|
259
|
+
// DEMO: hooks.beforeCommand — runs before any command handler.
|
|
260
|
+
api.hooks.beforeCommand((ctx) => {
|
|
261
|
+
log(`beforeCommand: ${ctx.command} ${(ctx.args ?? []).join(" ")}`.trimEnd());
|
|
132
262
|
});
|
|
133
|
-
//
|
|
134
|
-
api.
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
263
|
+
// DEMO: hooks.afterCommand — runs after a command, with ok/error/result.
|
|
264
|
+
api.hooks.afterCommand((ctx) => {
|
|
265
|
+
log(`afterCommand: ${ctx.command} -> ${ctx.ok ? "ok" : `error: ${ctx.error ?? "?"}`}`);
|
|
266
|
+
});
|
|
267
|
+
// DEMO: hooks.onWrite — fires when pm writes an item file to disk.
|
|
268
|
+
api.hooks.onWrite((ctx) => {
|
|
269
|
+
log(`onWrite: ${ctx.op} ${ctx.scope} ${ctx.path}`);
|
|
139
270
|
});
|
|
140
|
-
//
|
|
141
|
-
api.
|
|
142
|
-
|
|
143
|
-
|
|
271
|
+
// DEMO: hooks.onRead — fires when pm reads an item file.
|
|
272
|
+
api.hooks.onRead((ctx) => {
|
|
273
|
+
log(`onRead: ${ctx?.path ?? "(item)"}`);
|
|
274
|
+
});
|
|
275
|
+
// DEMO: hooks.onIndex — fires when pm (re)indexes items for search.
|
|
276
|
+
api.hooks.onIndex((ctx) => {
|
|
277
|
+
log(`onIndex: ${(ctx && (ctx.count ?? ctx.path)) ?? "(index event)"}`);
|
|
144
278
|
});
|
|
145
279
|
}
|
|
146
280
|
// ---------------------------------------------------------------------------
|
|
147
|
-
//
|
|
281
|
+
// DEMO: schema (registerItemFields + registerItemTypes + registerMigration)
|
|
282
|
+
//
|
|
283
|
+
// All three are declarative and additive. They teach the workspace about new
|
|
284
|
+
// fields/types and a no-op migration; nothing is mutated until a user opts in
|
|
285
|
+
// by creating items of the new type.
|
|
148
286
|
// ---------------------------------------------------------------------------
|
|
149
|
-
function
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
api.
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
287
|
+
function setupSchema(api) {
|
|
288
|
+
// DEMO: registerItemFields — declare optional custom fields so the workspace
|
|
289
|
+
// knows about them (and tooling/validation can surface them).
|
|
290
|
+
api.registerItemFields([
|
|
291
|
+
{ name: "starter_origin", type: "string", optional: true },
|
|
292
|
+
{ name: "starter_score", type: "number", optional: true },
|
|
293
|
+
]);
|
|
294
|
+
// DEMO: registerItemTypes — declare a custom item type. `folder` keeps its
|
|
295
|
+
// markdown under a dedicated directory; `aliases` give short CLI handles.
|
|
296
|
+
api.registerItemTypes([
|
|
297
|
+
{
|
|
298
|
+
name: "StarterNote",
|
|
299
|
+
folder: "starter-notes",
|
|
300
|
+
aliases: ["snote"],
|
|
301
|
+
required_create_fields: ["title"],
|
|
302
|
+
},
|
|
303
|
+
]);
|
|
304
|
+
// DEMO: registerMigration — a safe, idempotent, no-op migration. A real
|
|
305
|
+
// migration would transform existing items; this one only records that it
|
|
306
|
+
// ran so authors can see the migration plumbing without risking data.
|
|
307
|
+
api.registerMigration({
|
|
308
|
+
id: "pm-starter-0001-noop",
|
|
309
|
+
description: "DEMO: inert starter migration (no-op; records that it ran).",
|
|
310
|
+
// The runtime calls up() during migration runs. We do nothing destructive.
|
|
311
|
+
up(_ctx) {
|
|
312
|
+
// Intentionally a no-op. Return a benign summary.
|
|
313
|
+
return { migrated: 0, note: "pm-starter demo migration is a no-op" };
|
|
314
|
+
},
|
|
158
315
|
});
|
|
159
316
|
}
|
|
160
317
|
// ---------------------------------------------------------------------------
|
|
161
|
-
//
|
|
318
|
+
// DEMO: importers + exporters (registerImporter / registerExporter)
|
|
319
|
+
//
|
|
320
|
+
// registerImporter("starter-demo") creates `pm starter-demo import`.
|
|
321
|
+
// registerExporter("starter-demo") creates `pm starter-demo export`.
|
|
322
|
+
// Both are safe: the importer only previews (never writes unless explicitly
|
|
323
|
+
// told to with --commit, which we deliberately do NOT implement here to keep
|
|
324
|
+
// the reference inert); the exporter only reads and prints.
|
|
162
325
|
// ---------------------------------------------------------------------------
|
|
163
|
-
function
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
//
|
|
167
|
-
api.
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
.
|
|
326
|
+
function setupImportExport(api) {
|
|
327
|
+
// DEMO: registerImporter — `pm starter-demo import`.
|
|
328
|
+
// Inert by design: it describes what a real importer WOULD do and returns a
|
|
329
|
+
// dry-run-style summary. Swap the body for real parse + `pm create` calls.
|
|
330
|
+
api.registerImporter("starter-demo", async (ctx) => {
|
|
331
|
+
const source = optionString(ctx.options || {}, "file", "url") || "(no source given)";
|
|
332
|
+
console.error(`[pm-starter] DEMO importer: would import from ${source}. ` +
|
|
333
|
+
"This reference importer is inert — implement parse + `pm create` here.");
|
|
334
|
+
return { imported: 0, dryRun: true, source };
|
|
171
335
|
});
|
|
172
|
-
//
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
const
|
|
177
|
-
|
|
336
|
+
// DEMO: registerExporter — `pm starter-demo export`.
|
|
337
|
+
// Read-only: serializes the current items to a compact JSON payload and
|
|
338
|
+
// prints it (or returns it for --json hosts). Never writes to disk.
|
|
339
|
+
api.registerExporter("starter-demo", async (ctx) => {
|
|
340
|
+
const items = readPmItems(ctx.pm_root);
|
|
341
|
+
const payload = items.map((i) => ({
|
|
342
|
+
id: i.id,
|
|
343
|
+
title: i.title,
|
|
344
|
+
type: i.type,
|
|
345
|
+
status: i.status,
|
|
346
|
+
}));
|
|
347
|
+
console.log(JSON.stringify(payload, null, 2));
|
|
348
|
+
return { exported: payload.length, format: "json" };
|
|
178
349
|
});
|
|
179
350
|
}
|
|
180
351
|
// ---------------------------------------------------------------------------
|
|
181
|
-
//
|
|
352
|
+
// DEMO: search (registerSearchProvider + registerVectorStoreAdapter)
|
|
182
353
|
// ---------------------------------------------------------------------------
|
|
183
354
|
function setupSearch(api) {
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
// Simple substring search provider
|
|
355
|
+
// DEMO: registerSearchProvider — a simple, dependency-free substring matcher
|
|
356
|
+
// over title + body. Reads items via `pm` and filters in-process.
|
|
187
357
|
api.registerSearchProvider({
|
|
188
358
|
name: "starter-substring",
|
|
189
359
|
async query(ctx) {
|
|
190
|
-
const
|
|
191
|
-
const
|
|
192
|
-
const
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
const items = (data.items || []).filter((item) => {
|
|
200
|
-
const title = (item.title || "").toLowerCase();
|
|
201
|
-
const desc = (item.description || "").toLowerCase();
|
|
202
|
-
return title.includes(q) || desc.includes(q);
|
|
203
|
-
});
|
|
204
|
-
return { results: items, query };
|
|
360
|
+
const q = String(ctx?.query ?? "").toLowerCase();
|
|
361
|
+
const items = readPmItems(ctx?.pm_root ?? ".");
|
|
362
|
+
const results = !q
|
|
363
|
+
? []
|
|
364
|
+
: items.filter((i) => {
|
|
365
|
+
const hay = `${i.title ?? ""} ${i.body ?? ""} ${i.description ?? ""}`.toLowerCase();
|
|
366
|
+
return hay.includes(q);
|
|
367
|
+
});
|
|
368
|
+
return { results, query: q };
|
|
205
369
|
},
|
|
206
370
|
});
|
|
371
|
+
// DEMO: registerVectorStoreAdapter — an in-memory, deterministic adapter so
|
|
372
|
+
// authors can see the vector-store contract without an external service.
|
|
373
|
+
// It produces a tiny hashed pseudo-embedding (NOT a real model) and keeps
|
|
374
|
+
// vectors in a Map for the lifetime of the process.
|
|
375
|
+
const store = new Map();
|
|
376
|
+
const pseudoEmbed = (text, dims = 8) => {
|
|
377
|
+
const vec = new Array(dims).fill(0);
|
|
378
|
+
for (let i = 0; i < text.length; i++)
|
|
379
|
+
vec[i % dims] += text.charCodeAt(i) % 17;
|
|
380
|
+
return vec;
|
|
381
|
+
};
|
|
382
|
+
api.registerVectorStoreAdapter({
|
|
383
|
+
name: "starter-memory",
|
|
384
|
+
async upsert(ctx) {
|
|
385
|
+
const id = String(ctx?.id ?? "");
|
|
386
|
+
const text = String(ctx?.text ?? ctx?.title ?? "");
|
|
387
|
+
if (id)
|
|
388
|
+
store.set(id, pseudoEmbed(text));
|
|
389
|
+
return { upserted: id ? 1 : 0 };
|
|
390
|
+
},
|
|
391
|
+
async query(ctx) {
|
|
392
|
+
// Return nearest by simple dot-product over the in-memory vectors.
|
|
393
|
+
const qVec = pseudoEmbed(String(ctx?.query ?? ""));
|
|
394
|
+
const scored = [...store.entries()].map(([id, v]) => ({
|
|
395
|
+
id,
|
|
396
|
+
score: v.reduce((s, x, i) => s + x * (qVec[i] ?? 0), 0),
|
|
397
|
+
}));
|
|
398
|
+
scored.sort((a, b) => b.score - a.score);
|
|
399
|
+
return { results: scored.slice(0, ctx?.limit ?? 5) };
|
|
400
|
+
},
|
|
401
|
+
});
|
|
402
|
+
}
|
|
403
|
+
// ---------------------------------------------------------------------------
|
|
404
|
+
// DEMO: parser (registerParser)
|
|
405
|
+
//
|
|
406
|
+
// A parser override can pre-normalize args/options for a NATIVE command before
|
|
407
|
+
// its handler runs. We attach to `list` and pass everything through unchanged
|
|
408
|
+
// (a safe identity transform) so the reference never alters real behavior.
|
|
409
|
+
// ---------------------------------------------------------------------------
|
|
410
|
+
function setupParser(api) {
|
|
411
|
+
// DEMO: registerParser — identity pass-through for the native `list` command.
|
|
412
|
+
api.registerParser("list", (ctx) => {
|
|
413
|
+
// A real override might inject a default flag, e.g. force --json. Here we
|
|
414
|
+
// simply return args/options unchanged so behavior is identical.
|
|
415
|
+
return { args: ctx?.args ?? [], options: ctx?.options ?? {} };
|
|
416
|
+
});
|
|
207
417
|
}
|
|
208
418
|
// ---------------------------------------------------------------------------
|
|
209
|
-
//
|
|
419
|
+
// DEMO: preflight (registerPreflight)
|
|
420
|
+
//
|
|
421
|
+
// A preflight override can adjust the gate decisions the CLI makes before a
|
|
422
|
+
// command runs. We return a conservative pass-through that preserves the
|
|
423
|
+
// runtime's existing decision (or sane defaults), changing nothing.
|
|
210
424
|
// ---------------------------------------------------------------------------
|
|
211
425
|
function setupPreflight(api) {
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
api.registerPreflight(async (ctx) => {
|
|
216
|
-
console.error(`[starter] Preflight check for workspace: ${ctx.pm_root ?? "unknown"}`);
|
|
217
|
-
// Return the current decision unchanged (pass-through)
|
|
426
|
+
// DEMO: registerPreflight — pass-through decision (no behavior change).
|
|
427
|
+
api.registerPreflight((ctx) => {
|
|
428
|
+
const d = ctx?.decision ?? {};
|
|
218
429
|
return {
|
|
219
|
-
enforce_item_format_gate:
|
|
220
|
-
run_preflight_item_format_sync:
|
|
221
|
-
run_extension_migrations:
|
|
222
|
-
enforce_mandatory_migration_gate:
|
|
430
|
+
enforce_item_format_gate: d.enforce_item_format_gate ?? true,
|
|
431
|
+
run_preflight_item_format_sync: d.run_preflight_item_format_sync ?? false,
|
|
432
|
+
run_extension_migrations: d.run_extension_migrations ?? true,
|
|
433
|
+
enforce_mandatory_migration_gate: d.enforce_mandatory_migration_gate ?? false,
|
|
223
434
|
};
|
|
224
435
|
});
|
|
225
436
|
}
|
|
226
437
|
// ---------------------------------------------------------------------------
|
|
227
|
-
//
|
|
438
|
+
// DEMO: services (registerService)
|
|
439
|
+
//
|
|
440
|
+
// A service override lets an extension supply/augment a named internal service.
|
|
441
|
+
// We override "output_format" with an inert pass-through that returns the
|
|
442
|
+
// existing/default format, demonstrating the hook point without changing output.
|
|
228
443
|
// ---------------------------------------------------------------------------
|
|
229
444
|
function setupServices(api) {
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
//
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
return
|
|
445
|
+
// DEMO: registerService — a TRUE pass-through for the "output_format"
|
|
446
|
+
// service. A service override replaces a core service for the whole CLI, so
|
|
447
|
+
// the only safe demonstration is to return the incoming payload UNCHANGED
|
|
448
|
+
// (returning a fabricated value here would corrupt every command's output).
|
|
449
|
+
api.registerService("output_format", (ctx) => {
|
|
450
|
+
return ctx?.payload;
|
|
236
451
|
});
|
|
237
452
|
}
|
|
238
453
|
// ---------------------------------------------------------------------------
|
|
454
|
+
// DEMO: flags (registerFlags)
|
|
455
|
+
//
|
|
456
|
+
// registerFlags adds extra flags to an EXISTING native command (here, `list`).
|
|
457
|
+
// The flag is observe-only: native `list` ignores unknown options, and our
|
|
458
|
+
// parser/hook demos don't act on it — it exists purely to show the wiring.
|
|
459
|
+
// ---------------------------------------------------------------------------
|
|
460
|
+
function setupFlags(api) {
|
|
461
|
+
// DEMO: registerFlags — augment the native `list` command with a demo flag.
|
|
462
|
+
api.registerFlags("list", [
|
|
463
|
+
{
|
|
464
|
+
long: "--starter-tag",
|
|
465
|
+
value_name: "tag",
|
|
466
|
+
description: "DEMO flag added by pm-starter (inert; illustrates registerFlags).",
|
|
467
|
+
type: "string",
|
|
468
|
+
},
|
|
469
|
+
]);
|
|
470
|
+
}
|
|
471
|
+
// ---------------------------------------------------------------------------
|
|
239
472
|
// EXTENSION ENTRY POINT
|
|
240
473
|
// ---------------------------------------------------------------------------
|
|
241
474
|
export default defineExtension({
|
|
242
475
|
name: "pm-starter",
|
|
243
|
-
version: "2026.
|
|
476
|
+
version: "2026.6.3",
|
|
244
477
|
activate(api) {
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
478
|
+
// Register every capability group. Each helper is defensive enough to be
|
|
479
|
+
// safely deleted when you fork this scaffold for a real extension.
|
|
480
|
+
setupCommands(api); // registerCommand
|
|
481
|
+
setupRenderers(api); // registerRenderer (toon|json)
|
|
482
|
+
setupHooks(api); // hooks.before/after/onWrite/onRead/onIndex
|
|
483
|
+
setupSchema(api); // registerItemFields/registerItemTypes/registerMigration
|
|
484
|
+
setupImportExport(api); // registerImporter/registerExporter
|
|
485
|
+
setupSearch(api); // registerSearchProvider/registerVectorStoreAdapter
|
|
486
|
+
setupParser(api); // registerParser
|
|
487
|
+
setupPreflight(api); // registerPreflight
|
|
488
|
+
setupServices(api); // registerService
|
|
489
|
+
setupFlags(api); // registerFlags
|
|
256
490
|
},
|
|
257
491
|
});
|
|
258
492
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,EAAE;AACF,4EAA4E;AAC5E,6EAA6E;AAC7E,yEAAyE;AACzE,EAAE;AACF,4EAA4E;AAC5E,gFAAgF;AAChF,+EAA+E;AAC/E,sCAAsC;AACtC,EAAE;AACF,8EAA8E;AAC9E,8EAA8E;AAC9E,sBAAsB;AACtB,EAAE;AACF,iEAAiE;AACjE,kEAAkE;AAClE,8DAA8D;AAC9D,6BAA6B;AAC7B,+DAA+D;AAC/D,+DAA+D;AAC/D,+DAA+D;AAC/D,kEAAkE;AAClE,kEAAkE;AAClE,+DAA+D;AAC/D,+DAA+D;AAC/D,+DAA+D;AAC/D,kEAAkE;AAClE,iEAAiE;AACjE,iEAAiE;AACjE,EAAE;AACF,+EAA+E;AAC/E,oFAAoF;AACpF,4EAA4E;AAC5E,6EAA6E;AAC7E,wEAAwE;AACxE,0DAA0D;AAC1D,EAAE;AACF,8EAA8E;AAE9E,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAI/C,6EAA6E;AAC7E,iFAAiF;AACjF,6EAA6E;AAC7E,4EAA4E;AAC5E,mCAAmC;AACnC,MAAM,eAAe,GAA+B,CAAC,CAAC,SAAc,EAAE,EAAE,CAAC,SAAS,CAAQ,CAAC;AAE3F,8EAA8E;AAC9E,uEAAuE;AACvE,EAAE;AACF,yEAAyE;AACzE,6EAA6E;AAC7E,+EAA+E;AAC/E,+EAA+E;AAC/E,8EAA8E;AAC9E,6EAA6E;AAC7E,iFAAiF;AACjF,8EAA8E;AAE9E,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,eAAe,EAAE,CAAC;IAClB,KAAK,EAAE,CAAC;IACR,SAAS,EAAE,CAAC;CACJ,CAAC;AAEX,MAAM,OAAO,YAAa,SAAQ,KAAK;IACrC,QAAQ,CAAS;IACjB,YAAY,OAAe,EAAE,WAAmB,SAAS,CAAC,eAAe;QACvE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AAED,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,OAAgC,EAAE,GAAG,IAAc;IAC/E,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;QACrB,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACrB,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,GAAG,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,YAAY,CAAC,OAAgC,EAAE,GAAG,IAAc;IAC9E,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACrB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IACpE,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,MAAM,MAAM,GAAG,SAAS,CACtB,IAAI,EACJ,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,gBAAgB,CAAC,EAC1D,EAAE,QAAQ,EAAE,OAAO,EAAE,CACtB,CAAC;IACF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;QACzC,OAAO,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,mCAAmC;AACnC,EAAE;AACF,yEAAyE;AACzE,4EAA4E;AAC5E,6DAA6D;AAC7D,8EAA8E;AAE9E,SAAS,aAAa,CAAC,GAAQ;IAC7B,qEAAqE;IACrE,6EAA6E;IAC7E,wEAAwE;IACxE,GAAG,CAAC,eAAe,CAAC;QAClB,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,qDAAqD;QAClE,MAAM,EAAE,6CAA6C;QACrD,QAAQ,EAAE;YACR,kBAAkB;YAClB,mCAAmC;YACnC,yCAAyC;SAC1C;QACD,KAAK,EAAE;YACL,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,gCAAgC,EAAE,IAAI,EAAE,QAAQ,EAAE;YACrG,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,kCAAkC,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzG,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,sBAAsB,EAAE,IAAI,EAAE,SAAS,EAAE;SAC9E;QACD,KAAK,CAAC,GAAG,CAAC,GAAQ;YAChB,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,OAAO,CAAC;YAC1D,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC;YACzD,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YACtD,IAAI,OAAO,GAAG,GAAG,KAAK,WAAW,IAAI,GAAG,CAAC;YACzC,IAAI,KAAK;gBAAE,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;YAC3C,yEAAyE;YACzE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACvB,OAAO,EAAE,OAAO,EAAE,CAAC;QACrB,CAAC;KACF,CAAC,CAAC;IAEH,2EAA2E;IAC3E,GAAG,CAAC,eAAe,CAAC;QAClB,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,kDAAkD;QAC/D,MAAM,EAAE,0CAA0C;QAClD,QAAQ,EAAE,CAAC,oBAAoB,EAAE,8BAA8B,CAAC;QAChE,KAAK,EAAE;YACL,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,8BAA8B,EAAE,IAAI,EAAE,SAAS,EAAE;SACpF;QACD,KAAK,CAAC,GAAG,CAAC,GAAQ;YAChB,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE;gBACzE,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,wEAAwE;gBACxE,qDAAqD;gBACrD,MAAM,IAAI,YAAY,CAAC,mBAAmB,EAAE,SAAS,CAAC,eAAe,CAAC,CAAC;YACzE,CAAC;YACD,IAAI,KAAU,CAAC;YACf,IAAI,CAAC;gBACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACpC,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,IAAI,YAAY,CAAC,2CAA2C,CAAC,CAAC;YACtE,CAAC;YACD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,CAAC;YACvC,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC;YACvC,OAAO,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAC5D,OAAO,CAAC,KAAK,CAAC,kBAAkB,KAAK,EAAE,CAAC,CAAC;YACzC,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACvD,IAAK,KAAgB,GAAG,CAAC;oBAAE,OAAO,CAAC,KAAK,CAAC,KAAK,MAAM,KAAK,KAAK,EAAE,CAAC,CAAC;YACpE,CAAC;YACD,IAAI,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBAC3D,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;gBAC9B,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC1D,IAAK,KAAgB,GAAG,CAAC;wBAAE,OAAO,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC;gBACpE,CAAC;YACH,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;KACF,CAAC,CAAC;IAEH,6EAA6E;IAC7E,gEAAgE;IAChE,gEAAgE;IAChE,GAAG,CAAC,eAAe,CAAC;QAClB,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,oEAAoE;QACjF,MAAM,EAAE,gEAAgE;QACxE,QAAQ,EAAE,CAAC,iBAAiB,EAAE,wBAAwB,CAAC;QACvD,KAAK,CAAC,GAAG,CAAC,GAAQ;YAChB,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACvC,yEAAyE;YACzE,OAAO;gBACL,YAAY,EAAE,IAAI;gBAClB,UAAU,EAAE,KAAK,CAAC,MAAM;gBACxB,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;aACvF,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,8EAA8E;AAC9E,qCAAqC;AACrC,EAAE;AACF,+EAA+E;AAC/E,yEAAyE;AACzE,4EAA4E;AAC5E,8DAA8D;AAC9D,8EAA8E;AAE9E,SAAS,cAAc,CAAC,GAAQ;IAC9B,uEAAuE;IACvE,2EAA2E;IAC3E,6EAA6E;IAC7E,2EAA2E;IAC3E,6EAA6E;IAC7E,4DAA4D;IAC5D,GAAG,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,GAAQ,EAAE,EAAE;QACxC,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAK,MAAc,CAAC,YAAY,EAAE,CAAC;YACzE,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC3E,CAAC;QACD,OAAO,IAAW,CAAC,CAAC,8BAA8B;IACpD,CAAC,CAAC,CAAC;IAEH,6EAA6E;IAC7E,kEAAkE;IAClE,GAAG,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,GAAQ,EAAE,EAAE;QACxC,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAK,MAAc,CAAC,YAAY,EAAE,CAAC;YACzE,MAAM,CAAC,GAAG,MAAa,CAAC;YACxB,MAAM,KAAK,GAAG,CAAC,qBAAqB,CAAC,CAAC,UAAU,UAAU,CAAC,CAAC;YAC5D,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE;gBAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YACjF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD,OAAO,IAAW,CAAC,CAAC,8BAA8B;IACpD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,8EAA8E;AAC9E,yBAAyB;AACzB,EAAE;AACF,yEAAyE;AACzE,+EAA+E;AAC/E,wCAAwC;AACxC,8EAA8E;AAE9E,SAAS,UAAU,CAAC,GAAQ;IAC1B,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC5D,MAAM,GAAG,GAAG,CAAC,GAAW,EAAE,EAAE,GAAG,IAAI,OAAO,EAAE;QAAE,OAAO,CAAC,KAAK,CAAC,gBAAgB,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAEtF,+DAA+D;IAC/D,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,GAAQ,EAAE,EAAE;QACnC,GAAG,CAAC,kBAAkB,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;IAEH,yEAAyE;IACzE,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,GAAQ,EAAE,EAAE;QAClC,GAAG,CAAC,iBAAiB,GAAG,CAAC,OAAO,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,KAAK,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;IACzF,CAAC,CAAC,CAAC;IAEH,mEAAmE;IACnE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAQ,EAAE,EAAE;QAC7B,GAAG,CAAC,YAAY,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,yDAAyD;IACzD,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAQ,EAAE,EAAE;QAC5B,GAAG,CAAC,WAAW,GAAG,EAAE,IAAI,IAAI,QAAQ,EAAE,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,oEAAoE;IACpE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAQ,EAAE,EAAE;QAC7B,GAAG,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,eAAe,EAAE,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,8EAA8E;AAC9E,4EAA4E;AAC5E,EAAE;AACF,6EAA6E;AAC7E,8EAA8E;AAC9E,qCAAqC;AACrC,8EAA8E;AAE9E,SAAS,WAAW,CAAC,GAAQ;IAC3B,6EAA6E;IAC7E,8DAA8D;IAC9D,GAAG,CAAC,kBAAkB,CAAC;QACrB,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC1D,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;KAC1D,CAAC,CAAC;IAEH,2EAA2E;IAC3E,0EAA0E;IAC1E,GAAG,CAAC,iBAAiB,CAAC;QACpB;YACE,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,eAAe;YACvB,OAAO,EAAE,CAAC,OAAO,CAAC;YAClB,sBAAsB,EAAE,CAAC,OAAO,CAAC;SAClC;KACF,CAAC,CAAC;IAEH,wEAAwE;IACxE,0EAA0E;IAC1E,sEAAsE;IACtE,GAAG,CAAC,iBAAiB,CAAC;QACpB,EAAE,EAAE,sBAAsB;QAC1B,WAAW,EAAE,6DAA6D;QAC1E,2EAA2E;QAC3E,EAAE,CAAC,IAAS;YACV,kDAAkD;YAClD,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,sCAAsC,EAAE,CAAC;QACvE,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,8EAA8E;AAC9E,oEAAoE;AACpE,EAAE;AACF,qEAAqE;AACrE,qEAAqE;AACrE,4EAA4E;AAC5E,6EAA6E;AAC7E,4DAA4D;AAC5D,8EAA8E;AAE9E,SAAS,iBAAiB,CAAC,GAAQ;IACjC,qDAAqD;IACrD,4EAA4E;IAC5E,2EAA2E;IAC3E,GAAG,CAAC,gBAAgB,CAAC,cAAc,EAAE,KAAK,EAAE,GAAQ,EAAE,EAAE;QACtD,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,mBAAmB,CAAC;QACrF,OAAO,CAAC,KAAK,CACX,iDAAiD,MAAM,IAAI;YACzD,wEAAwE,CAC3E,CAAC;QACF,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,qDAAqD;IACrD,wEAAwE;IACxE,oEAAoE;IACpE,GAAG,CAAC,gBAAgB,CAAC,cAAc,EAAE,KAAK,EAAE,GAAQ,EAAE,EAAE;QACtD,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAChC,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,MAAM,EAAE,CAAC,CAAC,MAAM;SACjB,CAAC,CAAC,CAAC;QACJ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9C,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,8EAA8E;AAC9E,qEAAqE;AACrE,8EAA8E;AAE9E,SAAS,WAAW,CAAC,GAAQ;IAC3B,6EAA6E;IAC7E,kEAAkE;IAClE,GAAG,CAAC,sBAAsB,CAAC;QACzB,IAAI,EAAE,mBAAmB;QACzB,KAAK,CAAC,KAAK,CAAC,GAAQ;YAClB,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;YACjD,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC;YAC/C,MAAM,OAAO,GAAG,CAAC,CAAC;gBAChB,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;oBACjB,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,CAAC,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC;oBACpF,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACzB,CAAC,CAAC,CAAC;YACP,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAC/B,CAAC;KACF,CAAC,CAAC;IAEH,4EAA4E;IAC5E,yEAAyE;IACzE,0EAA0E;IAC1E,oDAAoD;IACpD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC1C,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,IAAI,GAAG,CAAC,EAAY,EAAE;QACvD,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE;YAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QAC/E,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IACF,GAAG,CAAC,0BAA0B,CAAC;QAC7B,IAAI,EAAE,gBAAgB;QACtB,KAAK,CAAC,MAAM,CAAC,GAAQ;YACnB,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YACjC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;YACnD,IAAI,EAAE;gBAAE,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;YACzC,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAClC,CAAC;QACD,KAAK,CAAC,KAAK,CAAC,GAAQ;YAClB,mEAAmE;YACnE,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;YACnD,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACpD,EAAE;gBACF,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;aACxD,CAAC,CAAC,CAAC;YACJ,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;YACzC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC;QACvD,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,8EAA8E;AAC9E,gCAAgC;AAChC,EAAE;AACF,+EAA+E;AAC/E,8EAA8E;AAC9E,2EAA2E;AAC3E,8EAA8E;AAE9E,SAAS,WAAW,CAAC,GAAQ;IAC3B,8EAA8E;IAC9E,GAAG,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,GAAQ,EAAE,EAAE;QACtC,0EAA0E;QAC1E,iEAAiE;QACjE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,IAAI,EAAE,EAAE,CAAC;IAChE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,8EAA8E;AAC9E,sCAAsC;AACtC,EAAE;AACF,4EAA4E;AAC5E,yEAAyE;AACzE,oEAAoE;AACpE,8EAA8E;AAE9E,SAAS,cAAc,CAAC,GAAQ;IAC9B,wEAAwE;IACxE,GAAG,CAAC,iBAAiB,CAAC,CAAC,GAAQ,EAAE,EAAE;QACjC,MAAM,CAAC,GAAG,GAAG,EAAE,QAAQ,IAAI,EAAE,CAAC;QAC9B,OAAO;YACL,wBAAwB,EAAE,CAAC,CAAC,wBAAwB,IAAI,IAAI;YAC5D,8BAA8B,EAAE,CAAC,CAAC,8BAA8B,IAAI,KAAK;YACzE,wBAAwB,EAAE,CAAC,CAAC,wBAAwB,IAAI,IAAI;YAC5D,gCAAgC,EAAE,CAAC,CAAC,gCAAgC,IAAI,KAAK;SAC9E,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,8EAA8E;AAC9E,mCAAmC;AACnC,EAAE;AACF,gFAAgF;AAChF,0EAA0E;AAC1E,iFAAiF;AACjF,8EAA8E;AAE9E,SAAS,aAAa,CAAC,GAAQ;IAC7B,sEAAsE;IACtE,4EAA4E;IAC5E,0EAA0E;IAC1E,4EAA4E;IAC5E,GAAG,CAAC,eAAe,CAAC,eAAe,EAAE,CAAC,GAAQ,EAAE,EAAE;QAChD,OAAO,GAAG,EAAE,OAAO,CAAC;IACtB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,8EAA8E;AAC9E,8BAA8B;AAC9B,EAAE;AACF,+EAA+E;AAC/E,2EAA2E;AAC3E,2EAA2E;AAC3E,8EAA8E;AAE9E,SAAS,UAAU,CAAC,GAAQ;IAC1B,4EAA4E;IAC5E,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE;QACxB;YACE,IAAI,EAAE,eAAe;YACrB,UAAU,EAAE,KAAK;YACjB,WAAW,EAAE,mEAAmE;YAChF,IAAI,EAAE,QAAQ;SACf;KACF,CAAC,CAAC;AACL,CAAC;AAED,8EAA8E;AAC9E,wBAAwB;AACxB,8EAA8E;AAE9E,eAAe,eAAe,CAAC;IAC7B,IAAI,EAAE,YAAY;IAClB,OAAO,EAAE,UAAU;IAEnB,QAAQ,CAAC,GAAQ;QACf,yEAAyE;QACzE,mEAAmE;QACnE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAO,kBAAkB;QAC5C,cAAc,CAAC,GAAG,CAAC,CAAC,CAAM,+BAA+B;QACzD,UAAU,CAAC,GAAG,CAAC,CAAC,CAAU,4CAA4C;QACtE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAS,yDAAyD;QACnF,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAG,oCAAoC;QAC9D,WAAW,CAAC,GAAG,CAAC,CAAC,CAAS,oDAAoD;QAC9E,WAAW,CAAC,GAAG,CAAC,CAAC,CAAS,iBAAiB;QAC3C,cAAc,CAAC,GAAG,CAAC,CAAC,CAAM,oBAAoB;QAC9C,aAAa,CAAC,GAAG,CAAC,CAAC,CAAO,kBAAkB;QAC5C,UAAU,CAAC,GAAG,CAAC,CAAC,CAAU,gBAAgB;IAC5C,CAAC;CACF,CAAC,CAAC"}
|
package/manifest.json
CHANGED
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pm-starter",
|
|
3
|
-
"version": "2026.
|
|
3
|
+
"version": "2026.6.3",
|
|
4
4
|
"description": "Complete scaffold showing all 8 capability types: commands, schema, hooks, importers, renderers, preflight, search, services. Use as a starting template for new extensions.",
|
|
5
5
|
"author": "@unbraind",
|
|
6
6
|
"entry": "./dist/index.js",
|
|
7
7
|
"priority": 99,
|
|
8
8
|
"capabilities": [
|
|
9
9
|
"commands",
|
|
10
|
-
"
|
|
10
|
+
"renderers",
|
|
11
11
|
"hooks",
|
|
12
|
+
"schema",
|
|
12
13
|
"importers",
|
|
13
|
-
"renderers",
|
|
14
|
-
"preflight",
|
|
15
14
|
"search",
|
|
15
|
+
"parser",
|
|
16
|
+
"preflight",
|
|
16
17
|
"services"
|
|
17
18
|
],
|
|
18
19
|
"pm": {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pm-starter",
|
|
3
|
-
"version": "2026.
|
|
3
|
+
"version": "2026.6.3",
|
|
4
4
|
"description": "Complete starter/scaffold extension for pm-cli showing all capability types",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -34,12 +34,12 @@
|
|
|
34
34
|
"release:check": "npm run typecheck && npm run build && npm run audit:prod && npm run pack:dry-run && npm run changelog:check"
|
|
35
35
|
},
|
|
36
36
|
"peerDependencies": {
|
|
37
|
-
"@unbrained/pm-cli": ">=2026.5.
|
|
37
|
+
"@unbrained/pm-cli": ">=2026.5.31"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@types/node": "^25.9.1",
|
|
41
|
-
"@unbrained/pm-cli": "^2026.5.
|
|
42
|
-
"pm-changelog": "^2026.
|
|
41
|
+
"@unbrained/pm-cli": "^2026.5.31",
|
|
42
|
+
"pm-changelog": "^2026.6.2",
|
|
43
43
|
"typescript": "^6.0.3"
|
|
44
44
|
},
|
|
45
45
|
"keywords": [
|