@selesai/code 0.3.9 → 0.4.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/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +4 -4
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/config-selector.d.ts +4 -2
- package/dist/cli/config-selector.d.ts.map +1 -1
- package/dist/cli/config-selector.js +1 -1
- package/dist/cli/config-selector.js.map +1 -1
- package/dist/cli/file-processor.d.ts.map +1 -1
- package/dist/cli/file-processor.js +13 -25
- package/dist/cli/file-processor.js.map +1 -1
- package/dist/core/agent-session.d.ts +22 -5
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +130 -49
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +13 -5
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/cache-stats.d.ts +49 -0
- package/dist/core/cache-stats.d.ts.map +1 -0
- package/dist/core/cache-stats.js +101 -0
- package/dist/core/cache-stats.js.map +1 -0
- package/dist/core/compaction/compaction.d.ts +1 -2
- package/dist/core/compaction/compaction.d.ts.map +1 -1
- package/dist/core/compaction/compaction.js +56 -81
- package/dist/core/compaction/compaction.js.map +1 -1
- package/dist/core/extensions/index.d.ts +1 -1
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +10 -0
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +5 -3
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +38 -0
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/types.d.ts +41 -12
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/http-dispatcher.d.ts.map +1 -1
- package/dist/core/http-dispatcher.js +28 -1
- package/dist/core/http-dispatcher.js.map +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js +3 -6
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/model-registry.d.ts +4 -6
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +34 -8
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-resolver.d.ts +10 -0
- package/dist/core/model-resolver.d.ts.map +1 -1
- package/dist/core/model-resolver.js +15 -18
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/package-manager.d.ts +4 -1
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js +68 -26
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/provider-attribution.d.ts.map +1 -1
- package/dist/core/provider-attribution.js +0 -10
- package/dist/core/provider-attribution.js.map +1 -1
- package/dist/core/resource-loader.d.ts +2 -2
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +8 -7
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/sdk.d.ts +1 -1
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +8 -1
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-manager.d.ts +21 -2
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +104 -72
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/settings-manager.d.ts +14 -3
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +29 -1
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/slash-commands.d.ts +1 -0
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +3 -3
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/timings.d.ts +4 -2
- package/dist/core/timings.d.ts.map +1 -1
- package/dist/core/timings.js +24 -14
- package/dist/core/timings.js.map +1 -1
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +20 -5
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/edit.d.ts.map +1 -1
- package/dist/core/tools/edit.js +2 -2
- package/dist/core/tools/edit.js.map +1 -1
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +12 -25
- package/dist/core/tools/read.js.map +1 -1
- package/dist/defaults/models.json +2 -3
- package/dist/extensions/caveman/index.js +16 -1
- package/dist/extensions/caveman/test/extension.test.js +7 -4
- package/dist/extensions/caveman/test/helpers.test.js +12 -1
- package/dist/extensions/context-compaction-reminder.test.ts +82 -0
- package/dist/extensions/context-compaction-reminder.ts +28 -0
- package/dist/extensions/handoff-new.test.ts +2 -13
- package/dist/extensions/handoff-new.ts +16 -25
- package/dist/extensions/package.json +1 -0
- package/dist/extensions/pi-subagents/agents/architect.md +25 -173
- package/dist/extensions/pi-subagents/agents/builder.md +16 -105
- package/dist/extensions/pi-subagents/agents/commentator.md +19 -116
- package/dist/extensions/pi-subagents/agents/explorer.md +13 -33
- package/dist/extensions/pi-subagents/agents/recapper.md +19 -11
- package/dist/extensions/pi-subagents/agents/researcher.md +10 -33
- package/dist/extensions/question/constants.ts +0 -7
- package/dist/extensions/question/index.ts +11 -108
- package/dist/extensions/question/schemas.ts +1 -26
- package/dist/extensions/question/shortcuts.ts +5 -14
- package/dist/extensions/question/tests/question-list.test.ts +8 -0
- package/dist/extensions/question/tests/ui-protocol.test.ts +1 -7
- package/dist/extensions/question/tui-adapter.ts +3 -20
- package/dist/extensions/question/types.ts +0 -6
- package/dist/extensions/question/ui-protocol.ts +2 -17
- package/dist/extensions/workflow/adapter.ts +384 -124
- package/dist/extensions/workflow/extension.ts +2 -1
- package/dist/extensions/workflow/modes/prototype.ts +6 -6
- package/dist/extensions/workflow/modes/quick.ts +6 -6
- package/dist/extensions/workflow/modes/task.ts +79 -0
- package/dist/extensions/workflow/run-state.ts +124 -0
- package/dist/extensions/workflow/state-machine.ts +4 -8
- package/dist/index.d.ts +3 -2
- 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 +2 -2
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +17 -4
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/assistant-message.d.ts +3 -1
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/assistant-message.js +23 -15
- package/dist/modes/interactive/components/assistant-message.js.map +1 -1
- package/dist/modes/interactive/components/config-selector.d.ts +34 -3
- package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/config-selector.js +280 -25
- package/dist/modes/interactive/components/config-selector.js.map +1 -1
- package/dist/modes/interactive/components/custom-entry.d.ts +19 -0
- package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -0
- package/dist/modes/interactive/components/custom-entry.js +52 -0
- package/dist/modes/interactive/components/custom-entry.js.map +1 -0
- package/dist/modes/interactive/components/extension-editor.d.ts +3 -1
- package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-editor.js +12 -3
- package/dist/modes/interactive/components/extension-editor.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts +4 -0
- 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/oauth-selector.d.ts +3 -1
- package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.js +17 -6
- package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +4 -0
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +25 -2
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/status-indicator.d.ts +28 -0
- package/dist/modes/interactive/components/status-indicator.d.ts.map +1 -0
- package/dist/modes/interactive/components/status-indicator.js +60 -0
- package/dist/modes/interactive/components/status-indicator.js.map +1 -0
- package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.js +2 -1
- package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
- package/dist/modes/interactive/components/user-message.d.ts +6 -2
- package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/user-message.js +19 -6
- package/dist/modes/interactive/components/user-message.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +21 -10
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +417 -196
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/theme/dark.json +1 -0
- package/dist/modes/interactive/theme/light.json +1 -0
- package/dist/modes/interactive/theme/theme-schema.json +6 -2
- package/dist/modes/interactive/theme/theme.d.ts +3 -2
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js +10 -3
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/dist/modes/print-mode.d.ts.map +1 -1
- package/dist/modes/print-mode.js +1 -1
- package/dist/modes/print-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-client.d.ts +21 -6
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js +17 -3
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +20 -1
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +26 -0
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/dist/package-manager-cli.d.ts +2 -2
- package/dist/package-manager-cli.d.ts.map +1 -1
- package/dist/package-manager-cli.js +71 -17
- package/dist/package-manager-cli.js.map +1 -1
- package/dist/rpc-entry.d.ts +3 -0
- package/dist/rpc-entry.d.ts.map +1 -0
- package/dist/rpc-entry.js +10 -0
- package/dist/rpc-entry.js.map +1 -0
- package/dist/skills/workflow-creation/SKILL.md +72 -0
- package/dist/utils/clipboard-image.d.ts.map +1 -1
- package/dist/utils/clipboard-image.js +1 -1
- package/dist/utils/clipboard-image.js.map +1 -1
- package/dist/utils/image-convert.d.ts +1 -0
- package/dist/utils/image-convert.d.ts.map +1 -1
- package/dist/utils/image-convert.js +21 -15
- package/dist/utils/image-convert.js.map +1 -1
- package/dist/utils/image-process.d.ts +18 -0
- package/dist/utils/image-process.d.ts.map +1 -0
- package/dist/utils/image-process.js +83 -0
- package/dist/utils/image-process.js.map +1 -0
- package/dist/utils/mime.d.ts.map +1 -1
- package/dist/utils/mime.js +41 -0
- package/dist/utils/mime.js.map +1 -1
- package/docs/workflows.md +40 -6
- package/package.json +8 -5
|
@@ -599,6 +599,20 @@ function applyPatterns(allPaths, patterns, baseDir) {
|
|
|
599
599
|
}
|
|
600
600
|
return new Set(result);
|
|
601
601
|
}
|
|
602
|
+
function applyAutoloadDisabledPatterns(allPaths, patterns, baseDir) {
|
|
603
|
+
const result = new Map();
|
|
604
|
+
for (const pattern of patterns) {
|
|
605
|
+
const target = pattern.slice(pattern.startsWith("+") || pattern.startsWith("-") || pattern.startsWith("!") ? 1 : 0);
|
|
606
|
+
const enabled = !pattern.startsWith("-") && !pattern.startsWith("!");
|
|
607
|
+
const exact = pattern.startsWith("+") || pattern.startsWith("-");
|
|
608
|
+
for (const filePath of allPaths) {
|
|
609
|
+
if (exact ? matchesAnyExactPattern(filePath, [target], baseDir) : matchesAnyPattern(filePath, [target], baseDir)) {
|
|
610
|
+
result.set(filePath, enabled);
|
|
611
|
+
}
|
|
612
|
+
}
|
|
613
|
+
}
|
|
614
|
+
return result;
|
|
615
|
+
}
|
|
602
616
|
export class DefaultPackageManager {
|
|
603
617
|
cwd;
|
|
604
618
|
agentDir;
|
|
@@ -981,57 +995,67 @@ export class DefaultPackageManager {
|
|
|
981
995
|
for (const { pkg, scope } of sources) {
|
|
982
996
|
const sourceStr = typeof pkg === "string" ? pkg : pkg.source;
|
|
983
997
|
const filter = typeof pkg === "object" ? pkg : undefined;
|
|
984
|
-
const
|
|
998
|
+
const deltaBase = this.findAutoloadDeltaBase(pkg, scope, sources);
|
|
999
|
+
const resolvedSource = deltaBase?.source ?? sourceStr;
|
|
1000
|
+
const resolvedScope = deltaBase?.scope ?? scope;
|
|
1001
|
+
const parsed = this.parseSource(resolvedSource);
|
|
985
1002
|
const metadata = { source: sourceStr, scope, origin: "package" };
|
|
986
1003
|
if (parsed.type === "local") {
|
|
987
|
-
const baseDir = this.getBaseDirForScope(
|
|
1004
|
+
const baseDir = this.getBaseDirForScope(resolvedScope);
|
|
988
1005
|
this.resolveLocalExtensionSource(parsed, accumulator, filter, metadata, baseDir);
|
|
989
1006
|
continue;
|
|
990
1007
|
}
|
|
991
1008
|
const installMissing = async () => {
|
|
992
|
-
if (isOfflineModeEnabled())
|
|
1009
|
+
if (isOfflineModeEnabled())
|
|
993
1010
|
return false;
|
|
994
|
-
}
|
|
995
1011
|
if (!onMissing) {
|
|
996
|
-
await this.installParsedSource(parsed,
|
|
1012
|
+
await this.installParsedSource(parsed, resolvedScope);
|
|
997
1013
|
return true;
|
|
998
1014
|
}
|
|
999
|
-
const action = await onMissing(
|
|
1015
|
+
const action = await onMissing(resolvedSource);
|
|
1000
1016
|
if (action === "skip")
|
|
1001
1017
|
return false;
|
|
1002
1018
|
if (action === "error")
|
|
1003
|
-
throw new Error(`Missing source: ${
|
|
1004
|
-
await this.installParsedSource(parsed,
|
|
1019
|
+
throw new Error(`Missing source: ${resolvedSource}`);
|
|
1020
|
+
await this.installParsedSource(parsed, resolvedScope);
|
|
1005
1021
|
return true;
|
|
1006
1022
|
};
|
|
1007
1023
|
if (parsed.type === "npm") {
|
|
1008
|
-
let installedPath = this.getNpmInstallPath(parsed,
|
|
1024
|
+
let installedPath = this.getNpmInstallPath(parsed, resolvedScope);
|
|
1009
1025
|
const needsInstall = !existsSync(installedPath) || !(await this.installedNpmMatchesConfiguredVersion(parsed, installedPath));
|
|
1010
1026
|
if (needsInstall) {
|
|
1011
1027
|
const installed = await installMissing();
|
|
1012
1028
|
if (!installed)
|
|
1013
1029
|
continue;
|
|
1014
|
-
installedPath = this.getNpmInstallPath(parsed,
|
|
1030
|
+
installedPath = this.getNpmInstallPath(parsed, resolvedScope);
|
|
1015
1031
|
}
|
|
1016
1032
|
metadata.baseDir = installedPath;
|
|
1017
1033
|
this.collectPackageResources(installedPath, accumulator, filter, metadata);
|
|
1018
1034
|
continue;
|
|
1019
1035
|
}
|
|
1020
1036
|
if (parsed.type === "git") {
|
|
1021
|
-
const installedPath = this.getGitInstallPath(parsed,
|
|
1037
|
+
const installedPath = this.getGitInstallPath(parsed, resolvedScope);
|
|
1022
1038
|
if (!existsSync(installedPath)) {
|
|
1023
1039
|
const installed = await installMissing();
|
|
1024
1040
|
if (!installed)
|
|
1025
1041
|
continue;
|
|
1026
1042
|
}
|
|
1027
|
-
else if (
|
|
1028
|
-
await this.refreshTemporaryGitSource(parsed,
|
|
1043
|
+
else if (resolvedScope === "temporary" && !parsed.pinned && !isOfflineModeEnabled()) {
|
|
1044
|
+
await this.refreshTemporaryGitSource(parsed, resolvedSource);
|
|
1029
1045
|
}
|
|
1030
1046
|
metadata.baseDir = installedPath;
|
|
1031
1047
|
this.collectPackageResources(installedPath, accumulator, filter, metadata);
|
|
1032
1048
|
}
|
|
1033
1049
|
}
|
|
1034
1050
|
}
|
|
1051
|
+
findAutoloadDeltaBase(pkg, scope, sources) {
|
|
1052
|
+
if (scope !== "project" || typeof pkg !== "object" || pkg.autoload !== false)
|
|
1053
|
+
return undefined;
|
|
1054
|
+
const identity = this.getPackageIdentity(pkg.source, scope);
|
|
1055
|
+
const userEntry = sources.find((entry) => entry.scope === "user" &&
|
|
1056
|
+
this.getPackageIdentity(this.getPackageSourceString(entry.pkg), "user") === identity);
|
|
1057
|
+
return userEntry ? { source: this.getPackageSourceString(userEntry.pkg), scope: "user" } : undefined;
|
|
1058
|
+
}
|
|
1035
1059
|
resolveLocalExtensionSource(source, accumulator, filter, metadata, baseDir) {
|
|
1036
1060
|
const resolved = this.resolvePathFromBase(source.path, baseDir);
|
|
1037
1061
|
if (!existsSync(resolved)) {
|
|
@@ -1373,25 +1397,30 @@ export class DefaultPackageManager {
|
|
|
1373
1397
|
}
|
|
1374
1398
|
/**
|
|
1375
1399
|
* Dedupe packages: if same package identity appears in both global and project,
|
|
1376
|
-
* keep only the project one (project wins).
|
|
1400
|
+
* keep only the project one (project wins). A project entry with autoload=false
|
|
1401
|
+
* is a delta over the global entry, so both are kept (delta first).
|
|
1377
1402
|
*/
|
|
1378
1403
|
dedupePackages(packages) {
|
|
1404
|
+
const result = [];
|
|
1379
1405
|
const seen = new Map();
|
|
1380
1406
|
for (const entry of packages) {
|
|
1381
|
-
const
|
|
1382
|
-
const
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
|
|
1407
|
+
const identity = this.getPackageIdentity(this.getPackageSourceString(entry.pkg), entry.scope);
|
|
1408
|
+
const index = seen.get(identity);
|
|
1409
|
+
if (index === undefined) {
|
|
1410
|
+
seen.set(identity, result.length);
|
|
1411
|
+
result.push(entry);
|
|
1412
|
+
continue;
|
|
1413
|
+
}
|
|
1414
|
+
const existing = result[index];
|
|
1415
|
+
if (existing?.scope === "project" && entry.scope === "user") {
|
|
1416
|
+
if (typeof existing.pkg === "object" && existing.pkg.autoload === false)
|
|
1417
|
+
result.push(entry);
|
|
1386
1418
|
}
|
|
1387
|
-
else if (entry.scope === "project"
|
|
1388
|
-
|
|
1389
|
-
seen.set(identity, entry);
|
|
1419
|
+
else if (entry.scope === "project") {
|
|
1420
|
+
result[index] = entry;
|
|
1390
1421
|
}
|
|
1391
|
-
// If existing is project and new is global, keep existing (project)
|
|
1392
|
-
// If both are same scope, keep first one
|
|
1393
1422
|
}
|
|
1394
|
-
return
|
|
1423
|
+
return result;
|
|
1395
1424
|
}
|
|
1396
1425
|
parseNpmSpec(spec) {
|
|
1397
1426
|
const match = spec.match(/^(@?[^@]+(?:\/[^@]+)?)(?:@(.+))?$/);
|
|
@@ -1726,7 +1755,10 @@ export class DefaultPackageManager {
|
|
|
1726
1755
|
for (const resourceType of RESOURCE_TYPES) {
|
|
1727
1756
|
const patterns = filter[resourceType];
|
|
1728
1757
|
const target = this.getTargetMap(accumulator, resourceType);
|
|
1729
|
-
if (
|
|
1758
|
+
if (filter.autoload === false) {
|
|
1759
|
+
this.applyPackageDeltaFilter(packageRoot, patterns ?? [], resourceType, target, metadata);
|
|
1760
|
+
}
|
|
1761
|
+
else if (patterns !== undefined) {
|
|
1730
1762
|
this.applyPackageFilter(packageRoot, patterns, resourceType, target, metadata);
|
|
1731
1763
|
}
|
|
1732
1764
|
else {
|
|
@@ -1789,6 +1821,16 @@ export class DefaultPackageManager {
|
|
|
1789
1821
|
this.addResource(target, f, metadata, enabled);
|
|
1790
1822
|
}
|
|
1791
1823
|
}
|
|
1824
|
+
applyPackageDeltaFilter(packageRoot, userPatterns, resourceType, target, metadata) {
|
|
1825
|
+
if (userPatterns.length === 0) {
|
|
1826
|
+
return;
|
|
1827
|
+
}
|
|
1828
|
+
const { allFiles } = this.collectManifestFiles(packageRoot, resourceType);
|
|
1829
|
+
const enabledByUser = applyAutoloadDisabledPatterns(allFiles, userPatterns, packageRoot);
|
|
1830
|
+
for (const [filePath, enabled] of enabledByUser) {
|
|
1831
|
+
this.addResource(target, filePath, metadata, enabled);
|
|
1832
|
+
}
|
|
1833
|
+
}
|
|
1792
1834
|
/**
|
|
1793
1835
|
* Collect all files from a package for a resource type, applying manifest patterns.
|
|
1794
1836
|
* Returns { allFiles, enabledByManifest } where enabledByManifest is the set of files
|