@bastani/atomic 0.8.4 → 0.8.5-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/README.md +24 -23
- package/dist/builtin/intercom/README.md +5 -5
- package/dist/builtin/intercom/index.ts +1 -1
- package/dist/builtin/intercom/package.json +1 -1
- package/dist/builtin/intercom/ui/compose.ts +19 -1
- package/dist/builtin/intercom/ui/session-list.ts +19 -1
- package/dist/builtin/mcp/README.md +3 -3
- package/dist/builtin/mcp/commands.ts +1 -1
- package/dist/builtin/mcp/host-html-template.ts +1 -1
- package/dist/builtin/mcp/mcp-panel.ts +14 -14
- package/dist/builtin/mcp/mcp-setup-panel.ts +4 -4
- package/dist/builtin/mcp/package.json +1 -1
- package/dist/builtin/mcp/tool-result-renderer.ts +1 -1
- package/dist/builtin/subagents/README.md +3 -3
- package/dist/builtin/subagents/package.json +1 -1
- package/dist/builtin/subagents/src/tui/render.ts +1844 -1062
- package/dist/builtin/web-access/README.md +1 -1
- package/dist/builtin/web-access/curator-page.ts +2 -2
- package/dist/builtin/web-access/index.ts +1 -1
- package/dist/builtin/web-access/package.json +1 -1
- package/dist/builtin/workflows/README.md +34 -7
- package/dist/builtin/workflows/builtin/deep-research-codebase.ts +23 -4
- package/dist/builtin/workflows/builtin/ralph.ts +1 -1
- package/dist/builtin/workflows/package.json +1 -1
- package/dist/builtin/workflows/skills/workflow/SKILL.md +75 -16
- package/dist/builtin/workflows/skills/workflow/references/running-workflows.md +34 -11
- package/dist/builtin/workflows/skills/workflow/references/sdk-authoring.md +111 -20
- package/dist/builtin/workflows/src/extension/discovery.ts +32 -4
- package/dist/builtin/workflows/src/extension/index.ts +347 -63
- package/dist/builtin/workflows/src/extension/render-call.ts +3 -1
- package/dist/builtin/workflows/src/extension/render-result.ts +7 -0
- package/dist/builtin/workflows/src/extension/runtime.ts +4 -2
- package/dist/builtin/workflows/src/extension/wiring.ts +32 -8
- package/dist/builtin/workflows/src/extension/workflow-schema.ts +36 -14
- package/dist/builtin/workflows/src/runs/background/runner.ts +2 -2
- package/dist/builtin/workflows/src/runs/background/status.ts +89 -0
- package/dist/builtin/workflows/src/runs/foreground/executor.ts +338 -78
- package/dist/builtin/workflows/src/runs/foreground/stage-control-registry.ts +2 -0
- package/dist/builtin/workflows/src/runs/foreground/stage-runner.ts +55 -7
- package/dist/builtin/workflows/src/runs/shared/workflow-runner.ts +146 -10
- package/dist/builtin/workflows/src/shared/store.ts +29 -0
- package/dist/builtin/workflows/src/shared/types.ts +25 -4
- package/dist/builtin/workflows/src/tui/graph-canvas.ts +69 -2
- package/dist/builtin/workflows/src/tui/graph-view.ts +97 -182
- package/dist/builtin/workflows/src/tui/header.ts +36 -20
- package/dist/builtin/workflows/src/tui/inline-form-card.ts +129 -46
- package/dist/builtin/workflows/src/tui/inline-form-editor.ts +111 -36
- package/dist/builtin/workflows/src/tui/inputs-picker.ts +311 -91
- package/dist/builtin/workflows/src/tui/layout.ts +1 -1
- package/dist/builtin/workflows/src/tui/node-card.ts +66 -37
- package/dist/builtin/workflows/src/tui/overlay-adapter.ts +20 -6
- package/dist/builtin/workflows/src/tui/prompt-card.ts +262 -85
- package/dist/builtin/workflows/src/tui/run-detail.ts +50 -31
- package/dist/builtin/workflows/src/tui/session-confirm.ts +21 -14
- package/dist/builtin/workflows/src/tui/session-picker.ts +35 -26
- package/dist/builtin/workflows/src/tui/stage-chat-view.ts +531 -960
- package/dist/builtin/workflows/src/tui/status-helpers.ts +6 -0
- package/dist/builtin/workflows/src/tui/status-list.ts +8 -4
- package/dist/builtin/workflows/src/tui/store-widget-installer.ts +7 -2
- package/dist/builtin/workflows/src/tui/switcher.ts +55 -25
- package/dist/builtin/workflows/src/tui/workflow-attach-pane.ts +33 -1
- package/dist/builtin/workflows/src/tui/workflow-list.ts +10 -6
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +1 -1
- package/dist/cli/args.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +20 -6
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session-services.d.ts +3 -3
- package/dist/core/agent-session-services.d.ts.map +1 -1
- package/dist/core/agent-session-services.js.map +1 -1
- package/dist/core/agent-session.d.ts +7 -7
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/compaction/branch-summarization.d.ts +2 -2
- package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
- package/dist/core/compaction/branch-summarization.js.map +1 -1
- package/dist/core/compaction/compaction.d.ts +3 -3
- package/dist/core/compaction/compaction.d.ts.map +1 -1
- package/dist/core/compaction/compaction.js.map +1 -1
- package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
- package/dist/core/export-html/tool-renderer.js.map +1 -1
- package/dist/core/extensions/loader.d.ts +3 -2
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +24 -12
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +6 -0
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/types.d.ts +28 -17
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/package-manager.d.ts +1 -0
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js +65 -28
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +13 -5
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/sdk.d.ts +3 -3
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +1 -1
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/settings-manager.d.ts +2 -0
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +1 -1
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +5 -3
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/tools/ask-user-question/view/components/preview/preview-block-renderer.d.ts +1 -1
- package/dist/core/tools/ask-user-question/view/components/preview/preview-block-renderer.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/view/components/preview/preview-block-renderer.js +1 -1
- package/dist/core/tools/ask-user-question/view/components/preview/preview-block-renderer.js.map +1 -1
- package/dist/core/tools/ask-user-question/view/dialog-builder.d.ts +8 -8
- package/dist/core/tools/ask-user-question/view/dialog-builder.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/view/dialog-builder.js +6 -6
- package/dist/core/tools/ask-user-question/view/dialog-builder.js.map +1 -1
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +1 -1
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/find.d.ts.map +1 -1
- package/dist/core/tools/find.js +1 -1
- package/dist/core/tools/find.js.map +1 -1
- package/dist/core/tools/grep.d.ts.map +1 -1
- package/dist/core/tools/grep.js +7 -4
- package/dist/core/tools/grep.js.map +1 -1
- package/dist/core/tools/index.d.ts +3 -2
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/ls.d.ts.map +1 -1
- package/dist/core/tools/ls.js +3 -2
- package/dist/core/tools/ls.js.map +1 -1
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +2 -2
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/tools/render-utils.d.ts +2 -1
- package/dist/core/tools/render-utils.d.ts.map +1 -1
- package/dist/core/tools/render-utils.js.map +1 -1
- package/dist/core/tools/todos.d.ts.map +1 -1
- package/dist/core/tools/todos.js +1 -1
- package/dist/core/tools/todos.js.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.d.ts +4 -3
- package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
- package/dist/core/tools/write.d.ts.map +1 -1
- package/dist/core/tools/write.js +1 -1
- package/dist/core/tools/write.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +2 -2
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/assistant-message.js +3 -3
- package/dist/modes/interactive/components/assistant-message.js.map +1 -1
- package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/bash-execution.js +3 -3
- package/dist/modes/interactive/components/bash-execution.js.map +1 -1
- package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/branch-summary-message.js +1 -1
- package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
- package/dist/modes/interactive/components/chat-message-renderer.d.ts +2 -1
- package/dist/modes/interactive/components/chat-message-renderer.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-message-renderer.js.map +1 -1
- package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/compaction-summary-message.js +1 -1
- package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
- package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/config-selector.js +1 -1
- package/dist/modes/interactive/components/config-selector.js.map +1 -1
- package/dist/modes/interactive/components/custom-editor.d.ts +3 -0
- package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-editor.js +13 -3
- package/dist/modes/interactive/components/custom-editor.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +1 -1
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/index.d.ts +2 -1
- package/dist/modes/interactive/components/index.d.ts.map +1 -1
- package/dist/modes/interactive/components/index.js +2 -1
- package/dist/modes/interactive/components/index.js.map +1 -1
- package/dist/modes/interactive/components/keybinding-hints.d.ts +1 -0
- package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
- package/dist/modes/interactive/components/keybinding-hints.js +47 -5
- package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
- package/dist/modes/interactive/components/login-dialog.js +5 -5
- package/dist/modes/interactive/components/login-dialog.js.map +1 -1
- package/dist/modes/interactive/components/model-selector.d.ts +3 -3
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.d.ts +2 -2
- package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.js +7 -7
- package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
- package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector.js +8 -8
- package/dist/modes/interactive/components/session-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +3 -3
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.js +2 -2
- package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
- package/dist/modes/interactive/components/tool-execution.d.ts +10 -12
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-execution.js +3 -3
- package/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/dist/modes/interactive/components/working-status.d.ts +25 -0
- package/dist/modes/interactive/components/working-status.d.ts.map +1 -0
- package/dist/modes/interactive/components/working-status.js +28 -0
- package/dist/modes/interactive/components/working-status.js.map +1 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +8 -7
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +8 -0
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +5 -5
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/dist/utils/tools-manager.d.ts.map +1 -1
- package/dist/utils/tools-manager.js.map +1 -1
- package/docs/development.md +2 -2
- package/docs/extensions.md +7 -7
- package/docs/packages.md +11 -8
- package/docs/quickstart.md +2 -2
- package/docs/rpc.md +1 -1
- package/docs/sdk.md +14 -11
- package/docs/session-format.md +1 -1
- package/docs/sessions.md +10 -10
- package/docs/settings.md +1 -1
- package/docs/terminal-setup.md +9 -9
- package/docs/tmux.md +10 -10
- package/docs/tui.md +2 -2
- package/docs/usage.md +9 -9
- package/package.json +6 -1
|
@@ -25,7 +25,7 @@ import { basename, dirname, join, relative, resolve, sep } from "node:path";
|
|
|
25
25
|
import { globSync } from "glob";
|
|
26
26
|
import ignore from "ignore";
|
|
27
27
|
import { minimatch } from "minimatch";
|
|
28
|
-
import { CONFIG_DIR_NAME, ENV_OFFLINE, getAgentDir, getAgentDirs, getEnvValue, getProjectConfigDirs } from "../config.js";
|
|
28
|
+
import { APP_NAME, CONFIG_DIR_NAME, ENV_OFFLINE, getAgentDir, getAgentDirs, getEnvValue, getProjectConfigDirs } from "../config.js";
|
|
29
29
|
import { shouldUseWindowsShell } from "../utils/child-process.js";
|
|
30
30
|
import { parseGitUrl } from "../utils/git.js";
|
|
31
31
|
import { canonicalizePath, isLocalPath } from "../utils/paths.js";
|
|
@@ -57,12 +57,13 @@ function resourcePrecedenceRank(m) {
|
|
|
57
57
|
const scopeBase = m.scope === "project" ? 0 : 2;
|
|
58
58
|
return scopeBase + (m.source === "local" ? 0 : 1);
|
|
59
59
|
}
|
|
60
|
-
const RESOURCE_TYPES = ["extensions", "skills", "prompts", "themes"];
|
|
60
|
+
const RESOURCE_TYPES = ["extensions", "skills", "prompts", "themes", "workflows"];
|
|
61
61
|
const FILE_PATTERNS = {
|
|
62
62
|
extensions: /\.(ts|js)$/,
|
|
63
63
|
skills: /\.md$/,
|
|
64
64
|
prompts: /\.md$/,
|
|
65
65
|
themes: /\.json$/,
|
|
66
|
+
workflows: /\.(ts|js|mjs|cjs)$/,
|
|
66
67
|
};
|
|
67
68
|
const IGNORE_FILE_NAMES = [".gitignore", ".ignore", ".fdignore"];
|
|
68
69
|
function toPosixPath(p) {
|
|
@@ -348,11 +349,22 @@ function collectAutoThemeEntries(dir) {
|
|
|
348
349
|
}
|
|
349
350
|
return entries;
|
|
350
351
|
}
|
|
352
|
+
function getManifestFromPackageJson(pkg) {
|
|
353
|
+
const appManifest = pkg[APP_NAME];
|
|
354
|
+
if (appManifest && typeof appManifest === "object" && !Array.isArray(appManifest)) {
|
|
355
|
+
return appManifest;
|
|
356
|
+
}
|
|
357
|
+
const legacyManifest = pkg.pi;
|
|
358
|
+
if (legacyManifest && typeof legacyManifest === "object" && !Array.isArray(legacyManifest)) {
|
|
359
|
+
return legacyManifest;
|
|
360
|
+
}
|
|
361
|
+
return null;
|
|
362
|
+
}
|
|
351
363
|
function readPiManifestFile(packageJsonPath) {
|
|
352
364
|
try {
|
|
353
365
|
const content = readFileSync(packageJsonPath, "utf-8");
|
|
354
366
|
const pkg = JSON.parse(content);
|
|
355
|
-
return pkg
|
|
367
|
+
return getManifestFromPackageJson(pkg);
|
|
356
368
|
}
|
|
357
369
|
catch {
|
|
358
370
|
return null;
|
|
@@ -450,6 +462,19 @@ function collectResourceFiles(dir, resourceType) {
|
|
|
450
462
|
}
|
|
451
463
|
return collectFiles(dir, FILE_PATTERNS[resourceType]);
|
|
452
464
|
}
|
|
465
|
+
function conventionDirsForResource(packageRoot, resourceType) {
|
|
466
|
+
if (resourceType === "workflows") {
|
|
467
|
+
return [join(packageRoot, "workflows"), join(packageRoot, "workflow")];
|
|
468
|
+
}
|
|
469
|
+
return [join(packageRoot, resourceType)];
|
|
470
|
+
}
|
|
471
|
+
function manifestEntriesForResource(manifest, resourceType) {
|
|
472
|
+
if (!manifest)
|
|
473
|
+
return undefined;
|
|
474
|
+
if (resourceType === "workflows")
|
|
475
|
+
return manifest.workflows ?? manifest.workflow;
|
|
476
|
+
return manifest[resourceType];
|
|
477
|
+
}
|
|
453
478
|
function matchesAnyPattern(filePath, patterns, baseDir) {
|
|
454
479
|
const rel = toPosixPath(relative(baseDir, filePath));
|
|
455
480
|
const name = basename(filePath);
|
|
@@ -1534,7 +1559,7 @@ export class DefaultPackageManager {
|
|
|
1534
1559
|
this.ensureGitIgnore(installRoot);
|
|
1535
1560
|
const packageJsonPath = join(installRoot, "package.json");
|
|
1536
1561
|
if (!existsSync(packageJsonPath)) {
|
|
1537
|
-
const pkgJson = { name:
|
|
1562
|
+
const pkgJson = { name: `${APP_NAME}-extensions`, private: true };
|
|
1538
1563
|
writeFileSync(packageJsonPath, JSON.stringify(pkgJson, null, 2), "utf-8");
|
|
1539
1564
|
}
|
|
1540
1565
|
}
|
|
@@ -1656,38 +1681,46 @@ export class DefaultPackageManager {
|
|
|
1656
1681
|
const manifest = this.readPiManifest(packageRoot);
|
|
1657
1682
|
if (manifest) {
|
|
1658
1683
|
for (const resourceType of RESOURCE_TYPES) {
|
|
1659
|
-
const entries = manifest
|
|
1660
|
-
|
|
1684
|
+
const entries = manifestEntriesForResource(manifest, resourceType);
|
|
1685
|
+
if (entries !== undefined) {
|
|
1686
|
+
this.addManifestEntries(entries, packageRoot, resourceType, this.getTargetMap(accumulator, resourceType), metadata);
|
|
1687
|
+
continue;
|
|
1688
|
+
}
|
|
1689
|
+
if (resourceType === "workflows") {
|
|
1690
|
+
this.collectDefaultResources(packageRoot, resourceType, this.getTargetMap(accumulator, resourceType), metadata);
|
|
1691
|
+
}
|
|
1661
1692
|
}
|
|
1662
1693
|
return true;
|
|
1663
1694
|
}
|
|
1664
1695
|
let hasAnyDir = false;
|
|
1665
1696
|
for (const resourceType of RESOURCE_TYPES) {
|
|
1666
|
-
const dir
|
|
1667
|
-
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
|
|
1671
|
-
|
|
1697
|
+
for (const dir of conventionDirsForResource(packageRoot, resourceType)) {
|
|
1698
|
+
if (existsSync(dir)) {
|
|
1699
|
+
// Collect all files from the directory (all enabled by default)
|
|
1700
|
+
const files = collectResourceFiles(dir, resourceType);
|
|
1701
|
+
for (const f of files) {
|
|
1702
|
+
this.addResource(this.getTargetMap(accumulator, resourceType), f, metadata, true);
|
|
1703
|
+
}
|
|
1704
|
+
hasAnyDir = true;
|
|
1672
1705
|
}
|
|
1673
|
-
hasAnyDir = true;
|
|
1674
1706
|
}
|
|
1675
1707
|
}
|
|
1676
1708
|
return hasAnyDir;
|
|
1677
1709
|
}
|
|
1678
1710
|
collectDefaultResources(packageRoot, resourceType, target, metadata) {
|
|
1679
1711
|
const manifest = this.readPiManifest(packageRoot);
|
|
1680
|
-
const entries = manifest
|
|
1681
|
-
if (entries) {
|
|
1712
|
+
const entries = manifestEntriesForResource(manifest, resourceType);
|
|
1713
|
+
if (entries !== undefined) {
|
|
1682
1714
|
this.addManifestEntries(entries, packageRoot, resourceType, target, metadata);
|
|
1683
1715
|
return;
|
|
1684
1716
|
}
|
|
1685
|
-
const dir
|
|
1686
|
-
|
|
1687
|
-
|
|
1688
|
-
|
|
1689
|
-
|
|
1690
|
-
|
|
1717
|
+
for (const dir of conventionDirsForResource(packageRoot, resourceType)) {
|
|
1718
|
+
if (existsSync(dir)) {
|
|
1719
|
+
// Collect all files from the directory (all enabled by default)
|
|
1720
|
+
const files = collectResourceFiles(dir, resourceType);
|
|
1721
|
+
for (const f of files) {
|
|
1722
|
+
this.addResource(target, f, metadata, true);
|
|
1723
|
+
}
|
|
1691
1724
|
}
|
|
1692
1725
|
}
|
|
1693
1726
|
}
|
|
@@ -1714,18 +1747,14 @@ export class DefaultPackageManager {
|
|
|
1714
1747
|
*/
|
|
1715
1748
|
collectManifestFiles(packageRoot, resourceType) {
|
|
1716
1749
|
const manifest = this.readPiManifest(packageRoot);
|
|
1717
|
-
const entries = manifest
|
|
1750
|
+
const entries = manifestEntriesForResource(manifest, resourceType);
|
|
1718
1751
|
if (entries && entries.length > 0) {
|
|
1719
1752
|
const allFiles = this.collectFilesFromManifestEntries(entries, packageRoot, resourceType);
|
|
1720
1753
|
const manifestPatterns = entries.filter(isOverridePattern);
|
|
1721
1754
|
const enabledByManifest = manifestPatterns.length > 0 ? applyPatterns(allFiles, manifestPatterns, packageRoot) : new Set(allFiles);
|
|
1722
1755
|
return { allFiles: Array.from(enabledByManifest), enabledByManifest };
|
|
1723
1756
|
}
|
|
1724
|
-
const
|
|
1725
|
-
if (!existsSync(conventionDir)) {
|
|
1726
|
-
return { allFiles: [], enabledByManifest: new Set() };
|
|
1727
|
-
}
|
|
1728
|
-
const allFiles = collectResourceFiles(conventionDir, resourceType);
|
|
1757
|
+
const allFiles = conventionDirsForResource(packageRoot, resourceType).flatMap((dir) => existsSync(dir) ? collectResourceFiles(dir, resourceType) : []);
|
|
1729
1758
|
return { allFiles, enabledByManifest: new Set(allFiles) };
|
|
1730
1759
|
}
|
|
1731
1760
|
readPiManifest(packageRoot) {
|
|
@@ -1736,7 +1765,7 @@ export class DefaultPackageManager {
|
|
|
1736
1765
|
try {
|
|
1737
1766
|
const content = readFileSync(packageJsonPath, "utf-8");
|
|
1738
1767
|
const pkg = JSON.parse(content);
|
|
1739
|
-
return pkg
|
|
1768
|
+
return getManifestFromPackageJson(pkg);
|
|
1740
1769
|
}
|
|
1741
1770
|
catch {
|
|
1742
1771
|
return null;
|
|
@@ -1801,12 +1830,14 @@ export class DefaultPackageManager {
|
|
|
1801
1830
|
skills: (globalSettings.skills ?? []),
|
|
1802
1831
|
prompts: (globalSettings.prompts ?? []),
|
|
1803
1832
|
themes: (globalSettings.themes ?? []),
|
|
1833
|
+
workflows: (globalSettings.workflows ?? []),
|
|
1804
1834
|
};
|
|
1805
1835
|
const projectOverrides = {
|
|
1806
1836
|
extensions: (projectSettings.extensions ?? []),
|
|
1807
1837
|
skills: (projectSettings.skills ?? []),
|
|
1808
1838
|
prompts: (projectSettings.prompts ?? []),
|
|
1809
1839
|
themes: (projectSettings.themes ?? []),
|
|
1840
|
+
workflows: (projectSettings.workflows ?? []),
|
|
1810
1841
|
};
|
|
1811
1842
|
const userConfigDirs = this.getBaseDirsForScope("user");
|
|
1812
1843
|
const projectConfigDirs = this.getBaseDirsForScope("project");
|
|
@@ -1825,6 +1856,7 @@ export class DefaultPackageManager {
|
|
|
1825
1856
|
addResources("skills", collectAutoSkillEntries(join(configDir, "skills"), "pi"), metadata, projectOverrides.skills, configDir);
|
|
1826
1857
|
addResources("prompts", collectAutoPromptEntries(join(configDir, "prompts")), metadata, projectOverrides.prompts, configDir);
|
|
1827
1858
|
addResources("themes", collectAutoThemeEntries(join(configDir, "themes")), metadata, projectOverrides.themes, configDir);
|
|
1859
|
+
addResources("workflows", collectResourceFiles(join(configDir, "workflows"), "workflows"), metadata, projectOverrides.workflows, configDir);
|
|
1828
1860
|
}
|
|
1829
1861
|
// Project skills from .agents/ (each with its own baseDir)
|
|
1830
1862
|
for (const agentsSkillsDir of projectAgentsSkillDirs) {
|
|
@@ -1841,6 +1873,7 @@ export class DefaultPackageManager {
|
|
|
1841
1873
|
addResources("skills", collectAutoSkillEntries(join(configDir, "skills"), "pi"), metadata, userOverrides.skills, configDir);
|
|
1842
1874
|
addResources("prompts", collectAutoPromptEntries(join(configDir, "prompts")), metadata, userOverrides.prompts, configDir);
|
|
1843
1875
|
addResources("themes", collectAutoThemeEntries(join(configDir, "themes")), metadata, userOverrides.themes, configDir);
|
|
1876
|
+
addResources("workflows", collectResourceFiles(join(configDir, "workflows"), "workflows"), metadata, userOverrides.workflows, configDir);
|
|
1844
1877
|
}
|
|
1845
1878
|
// User skills from ~/.agents/ (with its own baseDir)
|
|
1846
1879
|
const userAgentsBaseDir = dirname(userAgentsSkillsDir);
|
|
@@ -1880,6 +1913,8 @@ export class DefaultPackageManager {
|
|
|
1880
1913
|
return accumulator.prompts;
|
|
1881
1914
|
case "themes":
|
|
1882
1915
|
return accumulator.themes;
|
|
1916
|
+
case "workflows":
|
|
1917
|
+
return accumulator.workflows;
|
|
1883
1918
|
default:
|
|
1884
1919
|
throw new Error(`Unknown resource type: ${resourceType}`);
|
|
1885
1920
|
}
|
|
@@ -1897,6 +1932,7 @@ export class DefaultPackageManager {
|
|
|
1897
1932
|
skills: new Map(),
|
|
1898
1933
|
prompts: new Map(),
|
|
1899
1934
|
themes: new Map(),
|
|
1935
|
+
workflows: new Map(),
|
|
1900
1936
|
};
|
|
1901
1937
|
}
|
|
1902
1938
|
toResolvedPaths(accumulator) {
|
|
@@ -1921,6 +1957,7 @@ export class DefaultPackageManager {
|
|
|
1921
1957
|
skills: mapToResolved(accumulator.skills),
|
|
1922
1958
|
prompts: mapToResolved(accumulator.prompts),
|
|
1923
1959
|
themes: mapToResolved(accumulator.themes),
|
|
1960
|
+
workflows: mapToResolved(accumulator.workflows),
|
|
1924
1961
|
};
|
|
1925
1962
|
}
|
|
1926
1963
|
spawnCommand(command, args, options) {
|