salmon-loop 0.2.13 → 0.3.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/argv/headless-detection.js +27 -0
- package/dist/cli/chat-flow.js +11 -0
- package/dist/cli/chat.js +160 -24
- package/dist/cli/commands/chat.js +14 -7
- package/dist/cli/commands/flow-mode.js +63 -0
- package/dist/cli/commands/registry.js +2 -0
- package/dist/cli/commands/run/benchmark-artifacts.js +41 -0
- package/dist/cli/commands/run/early-errors.js +23 -0
- package/dist/cli/commands/run/handler.js +115 -27
- package/dist/cli/commands/run/headless-error-writer.js +8 -0
- package/dist/cli/commands/run/loop-params.js +2 -0
- package/dist/cli/commands/run/mode.js +2 -5
- package/dist/cli/commands/run/parse-options.js +16 -0
- package/dist/cli/commands/run/persist-session.js +10 -1
- package/dist/cli/commands/run/preflight.js +10 -0
- package/dist/cli/commands/run/reporter-factory.js +4 -0
- package/dist/cli/commands/run/runtime-llm.js +38 -11
- package/dist/cli/commands/run/runtime-options.js +2 -2
- package/dist/cli/commands/serve.js +97 -77
- package/dist/cli/commands/tool-names.js +78 -78
- package/dist/cli/headless/anthropic-stream-normalized-encoder.js +6 -1
- package/dist/cli/headless/json-protocol.js +37 -0
- package/dist/cli/headless/native-stream-normalized-encoder.js +6 -1
- package/dist/cli/headless/protocol-metadata.js +22 -0
- package/dist/cli/headless/stream-json-protocol.js +34 -1
- package/dist/cli/index.js +6 -4
- package/dist/cli/locales/en.js +30 -6
- package/dist/cli/program-bootstrap.js +10 -5
- package/dist/cli/program-commands.js +5 -1
- package/dist/cli/reporters/anthropic-stream.js +7 -1
- package/dist/cli/reporters/json.js +4 -0
- package/dist/cli/reporters/stream-json.js +17 -2
- package/dist/cli/run-cli.js +5 -3
- package/dist/cli/slash/runtime.js +27 -12
- package/dist/cli/ui/components/CommandInput.js +7 -3
- package/dist/cli/ui/components/CommandSuggestionList.js +1 -1
- package/dist/cli/utils/command-option-source.js +13 -0
- package/dist/cli/utils/verify-resolver.js +8 -4
- package/dist/cli/utils/worktree-prepare-resolver.js +7 -3
- package/dist/core/adapters/fs/file-adapter.js +6 -0
- package/dist/core/adapters/fs/filesystem.js +2 -1
- package/dist/core/adapters/git/git-adapter.js +78 -1
- package/dist/core/backends/salmon-loop/task-executor.js +1 -0
- package/dist/core/benchmark/patch-artifact.js +124 -0
- package/dist/core/benchmark/swe-bench.js +25 -0
- package/dist/core/config/load.js +18 -11
- package/dist/core/config/resolve-llm.js +12 -0
- package/dist/core/config/resolvers/server.js +0 -6
- package/dist/core/config/validate.js +73 -21
- package/dist/core/context/gatherers/metadata-gatherer.js +1 -0
- package/dist/core/context/gatherers/ripgrep-gatherer.js +84 -2
- package/dist/core/context/keywords.js +18 -4
- package/dist/core/context/service-deps.js +2 -2
- package/dist/core/context/service.js +8 -0
- package/dist/core/context/steps/context-gather.js +38 -0
- package/dist/core/context/summarization/summarizer.js +55 -12
- package/dist/core/context/targeting/target-resolver.js +4 -4
- package/dist/core/extensions/index.js +23 -5
- package/dist/core/extensions/merge.js +14 -0
- package/dist/core/extensions/paths.js +31 -0
- package/dist/core/extensions/schemas.js +8 -5
- package/dist/core/facades/cli-chat.js +6 -2
- package/dist/core/facades/cli-command-chat.js +1 -0
- package/dist/core/facades/cli-command-tool-names.js +2 -0
- package/dist/core/facades/cli-observability.js +1 -1
- package/dist/core/facades/cli-program-bootstrap.js +1 -0
- package/dist/core/facades/cli-run-handler.js +4 -2
- package/dist/core/facades/cli-run-persist-session.js +1 -0
- package/dist/core/facades/cli-serve.js +4 -4
- package/dist/core/facades/cli-utils-worktree.js +1 -1
- package/dist/core/failure/diagnostics.js +53 -1
- package/dist/core/grizzco/dsl/llm-strategy.js +4 -1
- package/dist/core/grizzco/engine/outcome/loop-result-mapper.js +67 -9
- package/dist/core/grizzco/engine/pipeline/pipeline.js +6 -2
- package/dist/core/grizzco/engine/transaction/attempt-failure.js +90 -15
- package/dist/core/grizzco/engine/transaction/report-mapper.js +17 -3
- package/dist/core/grizzco/engine/transaction/transaction-runner.js +165 -7
- package/dist/core/grizzco/flows/AutopilotFlow.js +18 -0
- package/dist/core/grizzco/flows/flow-dispatch.js +11 -0
- package/dist/core/grizzco/steps/answer.js +13 -14
- package/dist/core/grizzco/steps/autopilot.js +396 -0
- package/dist/core/grizzco/steps/cache-sharing.js +29 -0
- package/dist/core/grizzco/steps/explore.js +37 -21
- package/dist/core/grizzco/steps/generateReview.js +2 -5
- package/dist/core/grizzco/steps/patch/apply-check.js +10 -0
- package/dist/core/grizzco/steps/patch/diff-normalization.js +70 -0
- package/dist/core/grizzco/steps/patch/diff-salvage.js +46 -0
- package/dist/core/grizzco/steps/patch/prompt-input.js +42 -0
- package/dist/core/grizzco/steps/patch.js +105 -146
- package/dist/core/grizzco/steps/plan.js +101 -25
- package/dist/core/grizzco/steps/preflight.js +5 -6
- package/dist/core/grizzco/steps/request-assembly.js +78 -0
- package/dist/core/grizzco/steps/research.js +39 -36
- package/dist/core/grizzco/steps/tool-runtime.js +47 -0
- package/dist/core/grizzco/steps/verify-shared.js +23 -0
- package/dist/core/grizzco/steps/verify.js +13 -21
- package/dist/core/interaction/orchestration/facade.js +1 -1
- package/dist/core/llm/ai-sdk/chat-executor.js +2 -0
- package/dist/core/llm/ai-sdk/high-level-phase-specs.js +63 -0
- package/dist/core/llm/ai-sdk/message-mapper.js +40 -10
- package/dist/core/llm/ai-sdk/provider-factory.js +14 -0
- package/dist/core/llm/ai-sdk/request-params.js +113 -1
- package/dist/core/llm/ai-sdk/result-mapper.js +16 -0
- package/dist/core/llm/ai-sdk.js +112 -27
- package/dist/core/llm/capabilities.js +12 -0
- package/dist/core/llm/contracts/repair.js +36 -30
- package/dist/core/llm/errors.js +83 -2
- package/dist/core/llm/message-composition.js +7 -22
- package/dist/core/llm/phase-router.js +29 -10
- package/dist/core/llm/redact.js +28 -3
- package/dist/core/llm/registry.js +2 -0
- package/dist/core/llm/request-augmentation.js +55 -0
- package/dist/core/llm/request-envelope.js +334 -0
- package/dist/core/llm/shared-request-assembly.js +35 -0
- package/dist/core/llm/stream-utils.js +13 -4
- package/dist/core/llm/utils.js +18 -29
- package/dist/core/memory/relevant-retrieval.js +144 -0
- package/dist/core/observability/logger.js +11 -2
- package/dist/core/patch/diff.js +1 -0
- package/dist/core/prompts/registry.js +39 -2
- package/dist/core/prompts/runtime.js +50 -12
- package/dist/core/prompts/templates/phases/patch_user.hbs +2 -5
- package/dist/core/prompts/templates/phases/research_user.hbs +11 -0
- package/dist/core/prompts/templates/phases/review_user.hbs +3 -0
- package/dist/core/prompts/templates/system/answer_system.hbs +5 -0
- package/dist/core/prompts/templates/system/autopilot_system.hbs +11 -0
- package/dist/core/prompts/templates/system/explore_system.hbs +14 -23
- package/dist/core/prompts/templates/system/main_system.hbs +4 -16
- package/dist/core/prompts/templates/system/patch_system.hbs +39 -8
- package/dist/core/prompts/templates/system/plan_system.hbs +86 -1
- package/dist/core/prompts/templates/system/research_system.hbs +2 -0
- package/dist/core/protocols/a2a/agent-card.js +5 -3
- package/dist/core/protocols/a2a/sdk/executor.js +2 -1
- package/dist/core/protocols/a2a/sdk/server.js +0 -1
- package/dist/core/protocols/acp/formal-agent.js +300 -58
- package/dist/core/protocols/acp/handlers.js +5 -1
- package/dist/core/protocols/acp/permission-provider.js +1 -1
- package/dist/core/protocols/shared/flow-mode-mapping.js +23 -0
- package/dist/core/public-capabilities/flow-mode-metadata.js +39 -0
- package/dist/core/public-capabilities/projections.js +29 -0
- package/dist/core/public-capabilities/registry.js +26 -0
- package/dist/core/public-capabilities/types.js +2 -0
- package/dist/core/runtime/agent-server-runtime.js +47 -43
- package/dist/core/runtime/execution-profile.js +67 -0
- package/dist/core/session/artifact-state.js +160 -0
- package/dist/core/session/compaction/index.js +183 -0
- package/dist/core/session/compaction/microcompact.js +78 -0
- package/dist/core/session/compaction/tracking.js +48 -0
- package/dist/core/session/compaction/types.js +11 -0
- package/dist/core/session/compression.js +8 -0
- package/dist/core/session/manager.js +244 -8
- package/dist/core/session/pruning-strategy.js +55 -9
- package/dist/core/session/replacement-preview-provider.js +24 -0
- package/dist/core/session/replacement-state.js +131 -0
- package/dist/core/session/resume-repair/pipeline.js +79 -0
- package/dist/core/session/resume-repair/stages/load-raw-archive-state.js +40 -0
- package/dist/core/session/resume-repair/stages/reattach-runtime-state.js +8 -0
- package/dist/core/session/resume-repair/stages/recover-orphaned-branches.js +10 -0
- package/dist/core/session/resume-repair/stages/relink-boundary-and-tail.js +36 -0
- package/dist/core/session/resume-repair/stages/replay-startup-hooks.js +23 -0
- package/dist/core/session/resume-repair/stages/rescue-stale-metadata.js +17 -0
- package/dist/core/session/resume-repair/types.js +2 -0
- package/dist/core/session/summary-sync.js +164 -13
- package/dist/core/session/token-tracker.js +6 -0
- package/dist/core/skills/audit.js +34 -0
- package/dist/core/skills/bridge.js +84 -7
- package/dist/core/skills/discovery.js +94 -0
- package/dist/core/skills/feature-flags.js +52 -0
- package/dist/core/skills/index.js +1 -1
- package/dist/core/skills/loader.js +195 -20
- package/dist/core/skills/parser.js +296 -24
- package/dist/core/skills/permissions.js +117 -0
- package/dist/core/skills/runtime/MicroTaskRunner.js +10 -4
- package/dist/core/skills/runtime/SkillRunner.js +240 -61
- package/dist/core/strata/layers/shadow-driver/shadow-driver.js +37 -7
- package/dist/core/strata/layers/worktree.js +67 -10
- package/dist/core/strata/runtime/synchronizer.js +29 -2
- package/dist/core/streaming/stream-assembler.js +75 -31
- package/dist/core/sub-agent/context-snapshot.js +156 -0
- package/dist/core/sub-agent/core/loop.js +1 -1
- package/dist/core/sub-agent/core/manager.js +119 -20
- package/dist/core/sub-agent/dispatch-policy.js +29 -0
- package/dist/core/sub-agent/prefix-consistency.js +48 -0
- package/dist/core/sub-agent/registry-defaults.js +4 -0
- package/dist/core/sub-agent/tools/task-spawn.js +79 -2
- package/dist/core/sub-agent/types.js +134 -5
- package/dist/core/tools/audit.js +13 -4
- package/dist/core/tools/builtin/ast-grep.js +1 -1
- package/dist/core/tools/builtin/ast.js +1 -1
- package/dist/core/tools/builtin/benchmark.js +360 -0
- package/dist/core/tools/builtin/code-search/backends/rg.js +2 -1
- package/dist/core/tools/builtin/code-search/executor.js +6 -1
- package/dist/core/tools/builtin/code-search/spec.js +26 -2
- package/dist/core/tools/builtin/fs.js +256 -23
- package/dist/core/tools/builtin/git.js +2 -2
- package/dist/core/tools/builtin/index.js +51 -2
- package/dist/core/tools/builtin/interaction.js +8 -1
- package/dist/core/tools/builtin/plan.js +37 -15
- package/dist/core/tools/builtin/shell.js +1 -1
- package/dist/core/tools/loader.js +39 -16
- package/dist/core/tools/mapper.js +17 -3
- package/dist/core/tools/mcp/client.js +2 -1
- package/dist/core/tools/parallel/scheduler.js +35 -4
- package/dist/core/tools/permissions/permission-rules.js +5 -10
- package/dist/core/tools/policy.js +6 -1
- package/dist/core/tools/recoverable-tool-errors.js +10 -0
- package/dist/core/tools/router.js +24 -6
- package/dist/core/tools/session.js +458 -48
- package/dist/core/tools/tool-visibility.js +62 -0
- package/dist/core/tools/types.js +9 -1
- package/dist/core/types/execution.js +4 -0
- package/dist/core/types/flow-mode.js +8 -0
- package/dist/core/utils/path.js +52 -0
- package/dist/core/verification/runner.js +4 -1
- package/dist/core/version.js +17 -0
- package/dist/languages/typescript/index.js +4 -1
- package/dist/locales/en.js +35 -2
- package/dist/utils/eol.js +1 -1
- package/package.json +14 -7
- package/scripts/fix-es-abstract-compat.js +77 -0
- package/dist/core/runtime/fastify-server-bundle.js +0 -26
- package/dist/core/runtime/sidecar-fastify-plugin.js +0 -35
- package/dist/core/runtime/sidecar-paths.js +0 -47
- package/dist/core/runtime/sidecar-route-catalog.js +0 -103
|
@@ -1 +1,86 @@
|
|
|
1
|
-
{{> main_system
|
|
1
|
+
{{> main_system}}
|
|
2
|
+
|
|
3
|
+
You are the PLAN phase planner. Your job is to produce a plan, not to execute changes.
|
|
4
|
+
Tool use is optional and must be read-only, except for optional runtime-plan persistence via plan.update.
|
|
5
|
+
|
|
6
|
+
Tool policy:
|
|
7
|
+
- Use only tools explicitly available in this phase.
|
|
8
|
+
- Preferred read-only tools: fs.read, fs.list, code.search.
|
|
9
|
+
- Default tool order (if needed): fs.read, fs.list, code.search. If persisting a runtime plan, call plan.read before plan.update.
|
|
10
|
+
- plan.init is not available.
|
|
11
|
+
|
|
12
|
+
{{#if runtime.plan}}
|
|
13
|
+
Runtime-plan state matrix:
|
|
14
|
+
- runtime.plan available: plan.read and plan.update may be used.
|
|
15
|
+
- runtime.plan unavailable: no plan.* tools; output the final PLAN JSON directly.
|
|
16
|
+
|
|
17
|
+
Runtime-plan session:
|
|
18
|
+
- sessionId: {{runtime.plan.sessionId}}
|
|
19
|
+
- planPathHint: {{runtime.plan.planPathHint}}
|
|
20
|
+
|
|
21
|
+
If you update the runtime plan:
|
|
22
|
+
1. Call plan.read first to obtain baseHash and valid stepId values.
|
|
23
|
+
2. Only update an existing stepId from plan.read, or use stepId "work_root" to append subtasks.
|
|
24
|
+
3. plan.update payload must be a JSON object with the exact shape below.
|
|
25
|
+
4. patch must be a JSON object, never a JSON string.
|
|
26
|
+
5. If plan.update returns BASE_HASH_MISMATCH, call plan.read and retry once. If it fails again, stop runtime-plan updates and continue with final PLAN JSON.
|
|
27
|
+
6. If plan.update returns STEP_NOT_FOUND, do not invent a new stepId. Stop runtime-plan updates and continue with final PLAN JSON.
|
|
28
|
+
|
|
29
|
+
Required plan.update shape:
|
|
30
|
+
```json
|
|
31
|
+
{
|
|
32
|
+
"sessionId": "...",
|
|
33
|
+
"baseHash": "...",
|
|
34
|
+
"stepId": "...",
|
|
35
|
+
"patch": {
|
|
36
|
+
"status": "...",
|
|
37
|
+
"note": "...",
|
|
38
|
+
"appendSubtasks": ["..."]
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Correct example:
|
|
44
|
+
```json
|
|
45
|
+
{
|
|
46
|
+
"sessionId": "41c10f4625c38aa1",
|
|
47
|
+
"baseHash": "e549c498c67eb2d16b118f336f0ba4c724713b80eb3bc4c7fa334ab709539e78",
|
|
48
|
+
"stepId": "work_root",
|
|
49
|
+
"patch": {
|
|
50
|
+
"status": "active",
|
|
51
|
+
"note": "Inspect listKeys limit handling",
|
|
52
|
+
"appendSubtasks": [
|
|
53
|
+
"Inspect CloudflareKVCache.listKeys",
|
|
54
|
+
"Add regression test for caller-provided limit"
|
|
55
|
+
]
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Incorrect example (patch is a string, which is invalid):
|
|
61
|
+
```json
|
|
62
|
+
{
|
|
63
|
+
"sessionId": "41c10f4625c38aa1",
|
|
64
|
+
"baseHash": "e549c498c67eb2d16b118f336f0ba4c724713b80eb3bc4c7fa334ab709539e78",
|
|
65
|
+
"stepId": "work_root",
|
|
66
|
+
"patch": "{\"status\":\"active\"}"
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
{{/if}}
|
|
70
|
+
{{#unless runtime.plan}}
|
|
71
|
+
No plan.* tools are available in this session. Do not call plan.read or plan.update. Output the final PLAN JSON directly.
|
|
72
|
+
{{/unless}}
|
|
73
|
+
|
|
74
|
+
{{> tool_defs}}
|
|
75
|
+
|
|
76
|
+
Final output:
|
|
77
|
+
Return exactly one JSON object and nothing else.
|
|
78
|
+
The first non-whitespace character must be {.
|
|
79
|
+
The last non-whitespace character must be }.
|
|
80
|
+
Forbidden: labels, commentary, markdown fences, multiple objects, or any leading/trailing text.
|
|
81
|
+
|
|
82
|
+
The JSON object must contain only these keys: goal, files, changes, verify.
|
|
83
|
+
- goal: one sentence.
|
|
84
|
+
- files: array of exact relative paths to change.
|
|
85
|
+
- changes: array of concise change descriptions.
|
|
86
|
+
- verify: verification command or short verification description.
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { PACKAGE_VERSION } from '../../version.js';
|
|
1
2
|
export function buildA2AAgentCard(input) {
|
|
3
|
+
const capabilities = input.capabilities ?? [];
|
|
2
4
|
const securitySchemes = input.security.length > 0
|
|
3
5
|
? Object.fromEntries(input.security.map((scheme, index) => [
|
|
4
6
|
scheme.name ?? `${scheme.type}-${index}`,
|
|
@@ -9,7 +11,7 @@ export function buildA2AAgentCard(input) {
|
|
|
9
11
|
name: input.name,
|
|
10
12
|
url: input.url,
|
|
11
13
|
description: input.description ?? 'Salmon Loop agent',
|
|
12
|
-
version: input.version ??
|
|
14
|
+
version: input.version ?? PACKAGE_VERSION,
|
|
13
15
|
protocolVersion: input.protocolVersion ?? '1.0.0',
|
|
14
16
|
defaultInputModes: ['text/plain'],
|
|
15
17
|
defaultOutputModes: ['text/plain'],
|
|
@@ -18,10 +20,10 @@ export function buildA2AAgentCard(input) {
|
|
|
18
20
|
streaming: input.capabilityOptions?.streaming ?? true,
|
|
19
21
|
stateTransitionHistory: input.capabilityOptions?.stateTransitionHistory ?? true,
|
|
20
22
|
},
|
|
21
|
-
skills:
|
|
23
|
+
skills: capabilities.map((capability) => ({
|
|
22
24
|
id: capability.id,
|
|
23
25
|
name: capability.title,
|
|
24
|
-
description: capability.title,
|
|
26
|
+
description: capability.description ?? capability.title,
|
|
25
27
|
tags: [],
|
|
26
28
|
})),
|
|
27
29
|
securitySchemes,
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { InMemoryTaskStore } from '@a2a-js/sdk/server';
|
|
2
2
|
import { buildCanonicalExecutionRequest, buildInstructionFromParts, } from '../../shared/execution-request.js';
|
|
3
|
+
import { parseA2ASkillFlowMode } from '../../shared/flow-mode-mapping.js';
|
|
3
4
|
export function createA2AInteractionExecutor(deps) {
|
|
4
5
|
const store = deps.taskStore ?? new InMemoryTaskStore();
|
|
5
6
|
const metadataByTaskId = new Map();
|
|
@@ -11,7 +12,7 @@ export function createA2AInteractionExecutor(deps) {
|
|
|
11
12
|
const terminalPublished = new Set();
|
|
12
13
|
return {
|
|
13
14
|
async execute(requestContext, executionEventBus) {
|
|
14
|
-
const capability = deps.capabilityResolver?.(requestContext.userMessage) ?? '
|
|
15
|
+
const capability = parseA2ASkillFlowMode(deps.capabilityResolver?.(requestContext.userMessage)) ?? 'autopilot';
|
|
15
16
|
const pendingEvents = [];
|
|
16
17
|
let resolvedTaskId = null;
|
|
17
18
|
let cleanedUp = false;
|
|
@@ -7,7 +7,6 @@ export function createA2ASdkExpressApp(options) {
|
|
|
7
7
|
const userBuilder = options.userBuilder ?? ((_) => UserBuilder.noAuthentication());
|
|
8
8
|
const app = express();
|
|
9
9
|
app.disable('x-powered-by');
|
|
10
|
-
app.use(express.json());
|
|
11
10
|
const agentCardPath = options.agentCardPath ?? '/.well-known/agent-card.json';
|
|
12
11
|
app.use(agentCardPath, agentCardHandler({
|
|
13
12
|
agentCardProvider: () => requestHandler.getAgentCard(),
|