projectstore-claude 0.30.5 → 0.30.7
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/node_modules/projectstore/.claude-plugin/marketplace.json +2 -2
- package/node_modules/projectstore/.claude-plugin/plugin.json +6 -2
- package/node_modules/projectstore/.mcp.json +1 -2
- package/node_modules/projectstore/README.md +65 -17
- package/node_modules/projectstore/agents/archaeologist.md +1 -1
- package/node_modules/projectstore/agents/librarian.md +1 -1
- package/node_modules/projectstore/agents/planner.md +1 -1
- package/node_modules/projectstore/commands/doctor.md +14 -11
- package/node_modules/projectstore/commands/reconcile.md +1 -1
- package/node_modules/projectstore/commands/review.md +2 -2
- package/node_modules/projectstore/commands/story.md +1 -1
- package/node_modules/projectstore/docs/getting-started.md +3 -4
- package/node_modules/projectstore/docs/harnesses.md +1 -1
- package/node_modules/projectstore/docs/images/icon.png +0 -0
- package/node_modules/projectstore/harnesses/claude-code.json +60 -33
- package/node_modules/projectstore/hooks/hooks.json +6 -6
- package/node_modules/projectstore/hooks/session-start.mjs +55 -24
- package/node_modules/projectstore/package.json +11 -12
- package/node_modules/projectstore/scripts/binding.mjs +1 -1
- package/node_modules/projectstore/scripts/build-adapters.mjs +45 -4
- package/node_modules/projectstore/scripts/cli.mjs +74 -1373
- package/node_modules/projectstore/scripts/configure-menu.mjs +9 -7
- package/node_modules/projectstore/scripts/configure.mjs +0 -1
- package/node_modules/projectstore/scripts/convergence.mjs +59 -16
- package/node_modules/projectstore/scripts/doctor.mjs +184 -32
- package/node_modules/projectstore/scripts/harness.mjs +34 -3
- package/node_modules/projectstore/scripts/install-handlers.mjs +925 -0
- package/node_modules/projectstore/scripts/install-harness.mjs +129 -2081
- package/node_modules/projectstore/scripts/install-layout.mjs +453 -0
- package/node_modules/projectstore/scripts/install-preview.mjs +747 -0
- package/node_modules/projectstore/scripts/lib.mjs +167 -68
- package/node_modules/projectstore/scripts/mcp-server.mjs +33 -0
- package/node_modules/projectstore/scripts/mcp.mjs +60 -60
- package/node_modules/projectstore/scripts/model-spec.mjs +25 -0
- package/node_modules/projectstore/scripts/models.mjs +26 -120
- package/node_modules/projectstore/scripts/query.mjs +7 -6
- package/node_modules/projectstore/scripts/read-verbs.mjs +277 -0
- package/node_modules/projectstore/scripts/setup.mjs +62 -12
- package/node_modules/projectstore/scripts/statusline-launcher.mjs +36 -3
- package/node_modules/projectstore/scripts/surfaces.mjs +18 -5
- package/node_modules/projectstore/scripts/verbs.mjs +1202 -0
- package/node_modules/projectstore/scripts/version-guard.mjs +18 -6
- package/package.json +3 -3
- package/node_modules/projectstore/docs/images/loop-light.svg +0 -94
- package/node_modules/projectstore/docs/images/team-light.svg +0 -79
|
@@ -321,6 +321,28 @@ export function harnessHome(manifest, { env = process.env, home = homedir() } =
|
|
|
321
321
|
return fromEnv || (home && r.home_default ? join(home, r.home_default) : null);
|
|
322
322
|
}
|
|
323
323
|
|
|
324
|
+
// The registry block of a manifest's host plugin registration, where it names
|
|
325
|
+
// its host's own folders and files (cache_dir, synced_dir, the registry
|
|
326
|
+
// files), or null for a harness whose registration is not the host's plugin
|
|
327
|
+
// system.
|
|
328
|
+
export function hostRegistry(manifest) {
|
|
329
|
+
const [surface, s] =
|
|
330
|
+
Object.entries(manifest?.surfaces || {}).find(
|
|
331
|
+
([k, x]) => !k.startsWith("_") && x?.format === "host-plugin-registration" && x.registry,
|
|
332
|
+
) || [];
|
|
333
|
+
return s ? { ...s.registry, plugin_name: s.plugin_name, surface } : null;
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
// Whether the host auto-updates `marketplace` when no settings entry and no
|
|
337
|
+
// registry entry say (registry.auto_update: its names and name prefixes are on,
|
|
338
|
+
// every other marketplace off). null when the manifest states no default.
|
|
339
|
+
export function autoUpdateDefault(manifest, marketplace) {
|
|
340
|
+
const d = hostRegistry(manifest)?.auto_update;
|
|
341
|
+
if (!d) return null;
|
|
342
|
+
const name = String(marketplace || "");
|
|
343
|
+
return (d.on || []).includes(name) || (d.on_prefix || []).some((p) => name.startsWith(p));
|
|
344
|
+
}
|
|
345
|
+
|
|
324
346
|
// The agents block of a RUN (the story "One run plans the agents block once,
|
|
325
347
|
// and a bare uninstall selects every harness the project uses", rules 1–2):
|
|
326
348
|
// the files every manifest of the run names for it, in the FIRST manifest's
|
|
@@ -603,7 +625,8 @@ export function projectRootDeclared(env = process.env) {
|
|
|
603
625
|
// Where this projectstore's core lives on disk: its layouts, templates and
|
|
604
626
|
// scripts. The bin runs ITS OWN copy of the core: a child gets that through childEnv's
|
|
605
627
|
// pluginRoot, an in-process read (the query verbs' loadLayout, the headings
|
|
606
|
-
// registry) through this pin. Set
|
|
628
|
+
// registry) through this pin. Set by verbs.mjs's dispatch, on every run of
|
|
629
|
+
// the CLI and of the read runner; nothing else may call it.
|
|
607
630
|
let _pinnedPluginRoot = null;
|
|
608
631
|
export function pinPluginRoot(root) {
|
|
609
632
|
_pinnedPluginRoot = root || null;
|
|
@@ -733,8 +756,10 @@ export function layoutPaths(projectDir, { harnessDir = null, dir = MANIFEST_DIR
|
|
|
733
756
|
//
|
|
734
757
|
// What is ours on the machine but belongs to no project and no harness home:
|
|
735
758
|
// the shell fetch's scratch (<root>/fetch/<pid>-<ms>/, removed when its run
|
|
736
|
-
// ends)
|
|
737
|
-
// (<root>/registry.json, named now and read by no one yet)
|
|
759
|
+
// ends), the registry answer the update notice caches for a day
|
|
760
|
+
// (<root>/registry.json, named now and read by no one yet), the model lists
|
|
761
|
+
// (<root>/models/<id>.json) and the welcome an unbound project has shown
|
|
762
|
+
// (<root>/welcomed/<id>). The XDG Base
|
|
738
763
|
// Directory spec puts a cache at $XDG_CACHE_HOME when that is an absolute
|
|
739
764
|
// path and ignores a relative one; an empty one is ignored too. Otherwise it
|
|
740
765
|
// is <home>/.cache. With neither, `root` is null and the fetch refuses. This
|
|
@@ -755,6 +780,12 @@ export function cachePaths({ env = process.env, home = homedir() } = {}) {
|
|
|
755
780
|
// A harness's model list, as its last live read answered (the ADR "Agent
|
|
756
781
|
// model lists are read from each harness's own catalog…", decision 4).
|
|
757
782
|
models: (id) => (root && id ? join(root, "models", `${id}.json`) : null),
|
|
783
|
+
// A harness's first-run welcome, seen on this machine: the SessionStart
|
|
784
|
+
// hook writes it in place of the project's marker when the project is not
|
|
785
|
+
// bound, so an unbound project gets no writes (layout spec contract 5, as
|
|
786
|
+
// amended by the story "Opening a project that is not bound writes nothing
|
|
787
|
+
// into it…"). A lost marker costs one more welcome.
|
|
788
|
+
welcomed: (id) => (root && id ? join(root, "welcomed", id) : null),
|
|
758
789
|
from: fromEnv ? variable : "the home directory",
|
|
759
790
|
variable,
|
|
760
791
|
};
|