@yanlinglabs/winter-agent-runtime 0.0.27
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/LICENSE +21 -0
- package/NOTICE +41 -0
- package/README.md +64 -0
- package/dist/checkpoint/file-history.d.ts +81 -0
- package/dist/checkpoint/rewind.d.ts +55 -0
- package/dist/checkpoint/seam.d.ts +47 -0
- package/dist/checkpoint/sink.d.ts +66 -0
- package/dist/commands/builtins-listing.d.ts +40 -0
- package/dist/commands/resolver.d.ts +103 -0
- package/dist/commands/seam.d.ts +53 -0
- package/dist/compaction/controller.d.ts +23 -0
- package/dist/compaction/retention.d.ts +35 -0
- package/dist/compaction/seam.d.ts +115 -0
- package/dist/compaction/summarizer.d.ts +79 -0
- package/dist/context/agent-listing.d.ts +39 -0
- package/dist/context/assembler.d.ts +46 -0
- package/dist/context/attachments.d.ts +104 -0
- package/dist/context/dynamic-sections.d.ts +31 -0
- package/dist/context/git-fixture.d.ts +18 -0
- package/dist/context/git-status.d.ts +16 -0
- package/dist/context/imports.d.ts +22 -0
- package/dist/context/injection.d.ts +53 -0
- package/dist/context/memory-key.d.ts +46 -0
- package/dist/context/memory.d.ts +28 -0
- package/dist/context/minimal-prompt.d.ts +5 -0
- package/dist/context/output-styles.d.ts +68 -0
- package/dist/context/plan-mode.d.ts +29 -0
- package/dist/context/request-layout.d.ts +138 -0
- package/dist/context/rules.d.ts +63 -0
- package/dist/context/seam.d.ts +136 -0
- package/dist/context/tool-epoch.d.ts +118 -0
- package/dist/context/winter-code-preset.d.ts +39 -0
- package/dist/context/winter-md.d.ts +81 -0
- package/dist/embedded-host.d.ts +48 -0
- package/dist/embedded-host.js +155 -0
- package/dist/embedded-protocol.d.ts +44 -0
- package/dist/embedded-worker.d.ts +1 -0
- package/dist/embedded-worker.js +74 -0
- package/dist/embedded.d.ts +34 -0
- package/dist/embedded.js +9 -0
- package/dist/engine.d.ts +1298 -0
- package/dist/hooks/additional-context.d.ts +21 -0
- package/dist/hooks/bounds.d.ts +6 -0
- package/dist/hooks/bridge-invoker.d.ts +3 -0
- package/dist/hooks/command-invoker.d.ts +52 -0
- package/dist/hooks/from-config.d.ts +31 -0
- package/dist/hooks/hook-stage.d.ts +25 -0
- package/dist/hooks/input-validator.d.ts +6 -0
- package/dist/hooks/reducer.d.ts +74 -0
- package/dist/hooks/registry.d.ts +33 -0
- package/dist/hooks/runner.d.ts +105 -0
- package/dist/index-584yahed.js +6037 -0
- package/dist/index-97t2rmtf.js +42 -0
- package/dist/index-9qgkpv56.js +27183 -0
- package/dist/index-bef62z3r.js +437 -0
- package/dist/index-rkhh0457.js +187 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.js +353 -0
- package/dist/main.d.ts +1 -0
- package/dist/mcp/client.d.ts +105 -0
- package/dist/mcp/control-seam.d.ts +25 -0
- package/dist/mcp/control.d.ts +5 -0
- package/dist/mcp/elicitation.d.ts +35 -0
- package/dist/mcp/env.d.ts +12 -0
- package/dist/mcp/lifecycle.d.ts +142 -0
- package/dist/mcp/output-cap.d.ts +15 -0
- package/dist/mcp/state.d.ts +24 -0
- package/dist/mcp/test-fixtures.d.ts +88 -0
- package/dist/mcp/transports/__fixtures__/stdio-server.d.ts +1 -0
- package/dist/mcp/transports/http.d.ts +5 -0
- package/dist/mcp/transports/sdk.d.ts +5 -0
- package/dist/mcp/transports/sse.d.ts +3 -0
- package/dist/mcp/transports/stdio.d.ts +35 -0
- package/dist/mcp/winter-server.d.ts +2 -0
- package/dist/messaging/reference-adapter.d.ts +88 -0
- package/dist/messaging/router.d.ts +8 -0
- package/dist/paths/project-dir-name.d.ts +2 -0
- package/dist/paths/temp.d.ts +25 -0
- package/dist/permissions/approvals.d.ts +107 -0
- package/dist/permissions/auto/caches.d.ts +53 -0
- package/dist/permissions/auto/config.d.ts +37 -0
- package/dist/permissions/auto/engine.d.ts +74 -0
- package/dist/permissions/auto/envelope.d.ts +45 -0
- package/dist/permissions/auto/inheritance.d.ts +27 -0
- package/dist/permissions/edit-recognition.d.ts +30 -0
- package/dist/permissions/evaluator.d.ts +284 -0
- package/dist/permissions/file-rules.d.ts +384 -0
- package/dist/permissions/grammar.d.ts +113 -0
- package/dist/permissions/paths.d.ts +32 -0
- package/dist/permissions/policy-state.d.ts +64 -0
- package/dist/permissions/prompt-stage.d.ts +3 -0
- package/dist/permissions/protected.d.ts +54 -0
- package/dist/permissions/ruleset.d.ts +134 -0
- package/dist/permissions/shell-structure.d.ts +41 -0
- package/dist/plugins/bundle.d.ts +100 -0
- package/dist/plugins/installed.d.ts +30 -0
- package/dist/plugins/loader.d.ts +56 -0
- package/dist/plugins/manifest.d.ts +115 -0
- package/dist/production-wiring.d.ts +340 -0
- package/dist/protocol/channel.d.ts +22 -0
- package/dist/provider/advisor-route.d.ts +47 -0
- package/dist/provider/bridge.d.ts +124 -0
- package/dist/provider/classifier/model-classifier.d.ts +82 -0
- package/dist/provider/classifier/prompt.d.ts +62 -0
- package/dist/provider/classifier/verdict-schema.d.ts +83 -0
- package/dist/provider/credential-api.d.ts +160 -0
- package/dist/provider/family-listing.d.ts +27 -0
- package/dist/provider/first-party.d.ts +4 -0
- package/dist/provider/keychain-store.d.ts +59 -0
- package/dist/provider/lean-prompt.d.ts +7 -0
- package/dist/provider/mock.d.ts +55 -0
- package/dist/provider/scenario-fake.d.ts +96 -0
- package/dist/provider/selection.d.ts +115 -0
- package/dist/provider/session-provider.d.ts +426 -0
- package/dist/provider/slots.d.ts +120 -0
- package/dist/provider/stream-frames.d.ts +25 -0
- package/dist/provider/tool-secret.d.ts +57 -0
- package/dist/rpc/bridge.d.ts +14 -0
- package/dist/rpc/mcp-control.d.ts +26 -0
- package/dist/runtime.d.ts +14 -0
- package/dist/sandbox/profile.d.ts +249 -0
- package/dist/sandbox/spawn.d.ts +139 -0
- package/dist/settings/env-filter.d.ts +52 -0
- package/dist/settings/loaders/hooks.d.ts +44 -0
- package/dist/settings/loaders/mcp-config.d.ts +83 -0
- package/dist/settings/loaders/plugin-mcp.d.ts +3 -0
- package/dist/settings/loaders/strict-plugin-only.d.ts +13 -0
- package/dist/settings/resolve.d.ts +2 -0
- package/dist/settings/sources.d.ts +2 -0
- package/dist/settings/trust.d.ts +36 -0
- package/dist/skills/attachment.d.ts +25 -0
- package/dist/skills/frontmatter.d.ts +64 -0
- package/dist/skills/index.d.ts +16 -0
- package/dist/skills/listing.d.ts +89 -0
- package/dist/skills/loader.d.ts +104 -0
- package/dist/skills/option.d.ts +68 -0
- package/dist/skills/permission-rules.d.ts +21 -0
- package/dist/skills/runtime.d.ts +21 -0
- package/dist/skills/store.d.ts +163 -0
- package/dist/store/continuation-attach.d.ts +44 -0
- package/dist/store/dialect.d.ts +526 -0
- package/dist/store/provider-state.d.ts +188 -0
- package/dist/store/resume.d.ts +92 -0
- package/dist/structured/ajv-seam.d.ts +7 -0
- package/dist/structured/descriptor.d.ts +9 -0
- package/dist/structured/seam.d.ts +51 -0
- package/dist/structured/validator.d.ts +22 -0
- package/dist/subagents/activity.d.ts +13 -0
- package/dist/subagents/availability.d.ts +30 -0
- package/dist/subagents/builtin-agents.d.ts +37 -0
- package/dist/subagents/child-engine.d.ts +198 -0
- package/dist/subagents/child-handle.d.ts +344 -0
- package/dist/subagents/definitions.d.ts +189 -0
- package/dist/subagents/fork.d.ts +55 -0
- package/dist/subagents/git-root.d.ts +1 -0
- package/dist/subagents/limits.d.ts +28 -0
- package/dist/subagents/notification-queue.d.ts +233 -0
- package/dist/subagents/plugin-agents.d.ts +5 -0
- package/dist/subagents/policy.d.ts +46 -0
- package/dist/subagents/register-default-factory.d.ts +66 -0
- package/dist/subagents/resolution.d.ts +56 -0
- package/dist/subagents/restore.d.ts +9 -0
- package/dist/subagents/roster.d.ts +17 -0
- package/dist/subagents/test-fakes.d.ts +12 -0
- package/dist/subagents/tool-pools.d.ts +69 -0
- package/dist/subagents/watchdog.d.ts +13 -0
- package/dist/subagents/workspace.d.ts +27 -0
- package/dist/testing.d.ts +5 -0
- package/dist/testing.js +194 -0
- package/dist/tools/background-tasks.d.ts +10 -0
- package/dist/tools/descriptors/_shared.d.ts +34 -0
- package/dist/tools/descriptors/advisor.d.ts +1 -0
- package/dist/tools/descriptors/agent.d.ts +47 -0
- package/dist/tools/descriptors/artifact.d.ts +1 -0
- package/dist/tools/descriptors/ask-user-question.d.ts +1 -0
- package/dist/tools/descriptors/bash.d.ts +20 -0
- package/dist/tools/descriptors/claude-design.d.ts +1 -0
- package/dist/tools/descriptors/cron-create.d.ts +1 -0
- package/dist/tools/descriptors/cron-delete.d.ts +1 -0
- package/dist/tools/descriptors/cron-list.d.ts +1 -0
- package/dist/tools/descriptors/edit.d.ts +1 -0
- package/dist/tools/descriptors/end-conversation.d.ts +1 -0
- package/dist/tools/descriptors/enter-plan-mode.d.ts +1 -0
- package/dist/tools/descriptors/enter-worktree.d.ts +1 -0
- package/dist/tools/descriptors/exit-plan-mode.d.ts +1 -0
- package/dist/tools/descriptors/exit-worktree.d.ts +1 -0
- package/dist/tools/descriptors/glob.d.ts +1 -0
- package/dist/tools/descriptors/grep.d.ts +1 -0
- package/dist/tools/descriptors/index.d.ts +59 -0
- package/dist/tools/descriptors/list-agents.d.ts +1 -0
- package/dist/tools/descriptors/list-mcp-resources-tool.d.ts +1 -0
- package/dist/tools/descriptors/lsp.d.ts +1 -0
- package/dist/tools/descriptors/monitor.d.ts +1 -0
- package/dist/tools/descriptors/notebook-edit.d.ts +1 -0
- package/dist/tools/descriptors/powershell.d.ts +1 -0
- package/dist/tools/descriptors/projects.d.ts +1 -0
- package/dist/tools/descriptors/propose-goal.d.ts +1 -0
- package/dist/tools/descriptors/propose-skills.d.ts +1 -0
- package/dist/tools/descriptors/push-notification.d.ts +1 -0
- package/dist/tools/descriptors/read-mcp-resource-dir-tool.d.ts +1 -0
- package/dist/tools/descriptors/read-mcp-resource-tool.d.ts +1 -0
- package/dist/tools/descriptors/read-notifications.d.ts +1 -0
- package/dist/tools/descriptors/read.d.ts +1 -0
- package/dist/tools/descriptors/refresh-mcp-tools.d.ts +1 -0
- package/dist/tools/descriptors/remote-trigger.d.ts +1 -0
- package/dist/tools/descriptors/repl.d.ts +1 -0
- package/dist/tools/descriptors/report-findings.d.ts +1 -0
- package/dist/tools/descriptors/schedule-wakeup.d.ts +1 -0
- package/dist/tools/descriptors/send-feedback.d.ts +1 -0
- package/dist/tools/descriptors/send-message.d.ts +1 -0
- package/dist/tools/descriptors/send-user-file.d.ts +1 -0
- package/dist/tools/descriptors/share-onboarding-guide.d.ts +1 -0
- package/dist/tools/descriptors/show-onboarding-role-picker.d.ts +1 -0
- package/dist/tools/descriptors/skill.d.ts +1 -0
- package/dist/tools/descriptors/structured-output.d.ts +1 -0
- package/dist/tools/descriptors/task-create.d.ts +1 -0
- package/dist/tools/descriptors/task-get.d.ts +1 -0
- package/dist/tools/descriptors/task-list.d.ts +1 -0
- package/dist/tools/descriptors/task-output.d.ts +1 -0
- package/dist/tools/descriptors/task-stop.d.ts +1 -0
- package/dist/tools/descriptors/task-update.d.ts +1 -0
- package/dist/tools/descriptors/todo-write.d.ts +1 -0
- package/dist/tools/descriptors/tool-search.d.ts +1 -0
- package/dist/tools/descriptors/wait-for-mcp-servers.d.ts +1 -0
- package/dist/tools/descriptors/web-fetch.d.ts +8 -0
- package/dist/tools/descriptors/web-search.d.ts +15 -0
- package/dist/tools/descriptors/winter-list-agents.d.ts +1 -0
- package/dist/tools/descriptors/winter-send-message.d.ts +1 -0
- package/dist/tools/descriptors/workflow.d.ts +1 -0
- package/dist/tools/descriptors/write.d.ts +1 -0
- package/dist/tools/impl/_caller.d.ts +14 -0
- package/dist/tools/impl/_domains.d.ts +25 -0
- package/dist/tools/impl/_exa-client.d.ts +122 -0
- package/dist/tools/impl/_exa-session-client.d.ts +23 -0
- package/dist/tools/impl/_inner-model.d.ts +135 -0
- package/dist/tools/impl/_search-budget.d.ts +36 -0
- package/dist/tools/impl/_web-fetch-cache.d.ts +37 -0
- package/dist/tools/impl/_web-fetch-html.d.ts +26 -0
- package/dist/tools/impl/_web-fetch-net.d.ts +99 -0
- package/dist/tools/impl/_web-search-assembler.d.ts +57 -0
- package/dist/tools/impl/advisor.d.ts +37 -0
- package/dist/tools/impl/agent.d.ts +10 -0
- package/dist/tools/impl/ask-user-question.d.ts +5 -0
- package/dist/tools/impl/background-task-runtime.d.ts +272 -0
- package/dist/tools/impl/bash.d.ts +78 -0
- package/dist/tools/impl/cron.d.ts +11 -0
- package/dist/tools/impl/edit.d.ts +1 -0
- package/dist/tools/impl/enter-plan-mode.d.ts +4 -0
- package/dist/tools/impl/enter-worktree.d.ts +25 -0
- package/dist/tools/impl/exit-plan-mode.d.ts +4 -0
- package/dist/tools/impl/exit-worktree.d.ts +4 -0
- package/dist/tools/impl/glob.d.ts +1 -0
- package/dist/tools/impl/grep.d.ts +19 -0
- package/dist/tools/impl/index.d.ts +37 -0
- package/dist/tools/impl/list-agents.d.ts +7 -0
- package/dist/tools/impl/list-mcp-resources-tool.d.ts +9 -0
- package/dist/tools/impl/monitor.d.ts +66 -0
- package/dist/tools/impl/notebook-edit.d.ts +1 -0
- package/dist/tools/impl/push-notification.d.ts +4 -0
- package/dist/tools/impl/read-ladder.d.ts +25 -0
- package/dist/tools/impl/read-mcp-resource-dir-tool.d.ts +9 -0
- package/dist/tools/impl/read-mcp-resource-tool.d.ts +9 -0
- package/dist/tools/impl/read-notifications.d.ts +5 -0
- package/dist/tools/impl/read.d.ts +44 -0
- package/dist/tools/impl/refresh-mcp-tools.d.ts +8 -0
- package/dist/tools/impl/report-findings.d.ts +1 -0
- package/dist/tools/impl/schedule-wakeup.d.ts +2 -0
- package/dist/tools/impl/send-message.d.ts +7 -0
- package/dist/tools/impl/skill.d.ts +5 -0
- package/dist/tools/impl/task-graph.d.ts +1 -0
- package/dist/tools/impl/task-output.d.ts +16 -0
- package/dist/tools/impl/task-stop.d.ts +11 -0
- package/dist/tools/impl/todo-write.d.ts +8 -0
- package/dist/tools/impl/tool-search.d.ts +4 -0
- package/dist/tools/impl/wait-for-mcp-servers.d.ts +29 -0
- package/dist/tools/impl/web-fetch.d.ts +36 -0
- package/dist/tools/impl/web-search.d.ts +30 -0
- package/dist/tools/impl/workflow.d.ts +5 -0
- package/dist/tools/impl/write.d.ts +8 -0
- package/dist/tools/paths-seam.d.ts +6 -0
- package/dist/tools/read-state.d.ts +12 -0
- package/dist/tools/registry.d.ts +423 -0
- package/dist/tools/task-graph-store.d.ts +61 -0
- package/dist/toolsearch/aliases.d.ts +26 -0
- package/dist/toolsearch/exposure.d.ts +30 -0
- package/dist/toolsearch/ranking.d.ts +6 -0
- package/dist/toolsearch/search.d.ts +45 -0
- package/dist/version.d.ts +1 -0
- package/dist/version.js +5 -0
- package/dist/web/fetchable-url.d.ts +28 -0
- package/dist/web/preapproved-hosts.d.ts +52 -0
- package/dist/web/private-address.d.ts +55 -0
- package/dist/web/session-runtime.d.ts +86 -0
- package/dist/workflows/bridge.d.ts +87 -0
- package/dist/workflows/budget.d.ts +24 -0
- package/dist/workflows/host-registry.d.ts +142 -0
- package/dist/workflows/journal.d.ts +29 -0
- package/dist/workflows/meta.d.ts +45 -0
- package/dist/workflows/registry.d.ts +24 -0
- package/dist/workflows/runtime.d.ts +254 -0
- package/dist/workflows/sandbox.d.ts +49 -0
- package/dist/workflows/script-api.d.ts +58 -0
- package/dist/workflows/seam.d.ts +92 -0
- package/dist/workflows/semaphore.d.ts +16 -0
- package/dist/workflows/store.d.ts +177 -0
- package/dist/workflows/subprocess-entry.d.ts +38 -0
- package/dist/workflows/subprocess-entry.js +14 -0
- package/dist/workflows/transcript.d.ts +56 -0
- package/dist/workflows/types.d.ts +84 -0
- package/dist/workflows/worker-harness.d.ts +45 -0
- package/package.json +76 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { ChildInheritance } from "./child-handle.js";
|
|
2
|
+
export interface ModelCatalog {
|
|
3
|
+
aliases?: Readonly<Record<string, string>>;
|
|
4
|
+
availableModels?: readonly string[];
|
|
5
|
+
fallbackModel?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare class UnresolvableModelAliasError extends Error {
|
|
8
|
+
readonly requested: string;
|
|
9
|
+
constructor(requested: string);
|
|
10
|
+
}
|
|
11
|
+
export interface ResolvedModel {
|
|
12
|
+
effectiveModel: string;
|
|
13
|
+
substitutedFrom?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare function resolveModelAlias(requested: string, catalog?: ModelCatalog): ResolvedModel;
|
|
16
|
+
export declare function describeRequestedModel(req: {
|
|
17
|
+
model?: string;
|
|
18
|
+
definition?: {
|
|
19
|
+
model?: string;
|
|
20
|
+
};
|
|
21
|
+
}): string | undefined;
|
|
22
|
+
export interface ResolvedEffort {
|
|
23
|
+
requestedEffort?: string;
|
|
24
|
+
effectiveEffort: string;
|
|
25
|
+
}
|
|
26
|
+
export declare function resolveEffort(inheritedEffort: string): ResolvedEffort;
|
|
27
|
+
export interface RecordedModelEffort {
|
|
28
|
+
requestedModel?: string;
|
|
29
|
+
effectiveModel: string;
|
|
30
|
+
requestedEffort?: string;
|
|
31
|
+
effectiveEffort: string;
|
|
32
|
+
/**
|
|
33
|
+
* WS-13c §3: the provider the child's model actually resolved to.
|
|
34
|
+
*
|
|
35
|
+
* `effectiveModel` is a catalog KEY, whose provider half is only readable by string-splitting it --
|
|
36
|
+
* and a child spawned onto another family reaches a provider the parent's own record never names.
|
|
37
|
+
* WS-13c §8 makes the child's own record AUTHORITATIVE on resume, so the provider has to be a field
|
|
38
|
+
* here rather than something re-derived from the parent's live selection at resume time.
|
|
39
|
+
*/
|
|
40
|
+
effectiveProvider?: string;
|
|
41
|
+
/**
|
|
42
|
+
* WS-13c §3: the SLOT the request named, if it named one.
|
|
43
|
+
*
|
|
44
|
+
* `requestedModel` is the raw string; this says what it meant and where it came from. Typed as
|
|
45
|
+
* `ChildInheritance["slot"]` rather than re-declared, so the record and the inheritance that
|
|
46
|
+
* produced it cannot drift apart on the `source` union.
|
|
47
|
+
*/
|
|
48
|
+
slot?: ChildInheritance["slot"];
|
|
49
|
+
}
|
|
50
|
+
export declare function recordModelEffort(opts: {
|
|
51
|
+
requestedModel?: string;
|
|
52
|
+
resolved: ResolvedModel;
|
|
53
|
+
effort: ResolvedEffort;
|
|
54
|
+
effectiveProvider?: string;
|
|
55
|
+
slot?: ChildInheritance["slot"];
|
|
56
|
+
}): RecordedModelEffort;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { SessionStore } from "@yanlinglabs/winter-agent-sdk";
|
|
2
|
+
import type { ChildHandle, ChildSessionRecord } from "./child-handle.js";
|
|
3
|
+
import { type RosterKey } from "./roster.js";
|
|
4
|
+
export declare function restoredChildHandle(record: ChildSessionRecord): ChildHandle;
|
|
5
|
+
export interface RestoredChildRoster {
|
|
6
|
+
handles: ChildHandle[];
|
|
7
|
+
remove(): void;
|
|
8
|
+
}
|
|
9
|
+
export declare function restoreChildRoster(store: SessionStore, key: RosterKey): Promise<RestoredChildRoster>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { SessionStore } from "@yanlinglabs/winter-agent-sdk";
|
|
2
|
+
import type { ChildSessionRecord } from "./child-handle.js";
|
|
3
|
+
export interface RosterKey {
|
|
4
|
+
projectKey: string;
|
|
5
|
+
sessionId: string;
|
|
6
|
+
}
|
|
7
|
+
export type RosterEntry = {
|
|
8
|
+
ok: true;
|
|
9
|
+
record: ChildSessionRecord;
|
|
10
|
+
reconciled?: "orphaned";
|
|
11
|
+
} | {
|
|
12
|
+
ok: false;
|
|
13
|
+
agentId: string;
|
|
14
|
+
reason: string;
|
|
15
|
+
};
|
|
16
|
+
export declare function rebuildChildRoster(store: SessionStore, key: RosterKey): Promise<RosterEntry[]>;
|
|
17
|
+
export declare function successfulRecords(entries: RosterEntry[]): ChildSessionRecord[];
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ChildHandle, ChildSessionRecord } from "./child-handle.js";
|
|
2
|
+
import type { Provider, ProviderTurn } from "../engine.js";
|
|
3
|
+
export interface ScriptedProviderFake extends Provider {
|
|
4
|
+
/** Every `ProviderRequest.model` this fake was asked to serve, in call order (`""` when absent). */
|
|
5
|
+
readonly servedModels: string[];
|
|
6
|
+
/** How many times `generate()` was called -- equivalent to `servedModels.length`, offered for readability at call sites. */
|
|
7
|
+
callCount(): number;
|
|
8
|
+
}
|
|
9
|
+
export declare function createScriptedProviderFake(turn?: ProviderTurn | (() => ProviderTurn)): ScriptedProviderFake;
|
|
10
|
+
export declare function createFakeChildHandle(recordOverrides?: Partial<ChildSessionRecord>): ChildHandle & {
|
|
11
|
+
simulateCompletion(content: string): void;
|
|
12
|
+
};
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { type BrandProfile } from "@yanlinglabs/winter-agent-sdk";
|
|
2
|
+
/**
|
|
3
|
+
* Research §A6, "Removed from EVERY subagent": TaskOutput, ExitPlanMode (kept in plan mode --
|
|
4
|
+
* CALLER's job: this set is applied UNLESS the child's own permission mode is `plan`, exactly as
|
|
5
|
+
* claude's own parenthetical says), EnterPlanMode, memory_list/read/write, AskUserQuestion, Poll,
|
|
6
|
+
* ConnectGitHub, WaitForMcpServers, RefreshMcpTools, Workflow (non-internal), ScheduleWakeup,
|
|
7
|
+
* ReadNotifications, ProposeGoal, EndConversation.
|
|
8
|
+
*
|
|
9
|
+
* THREE OF THE FOURTEEN HAVE NO WINTER EQUIVALENT AND ARE OMITTED, DISCLOSED (not silently dropped):
|
|
10
|
+
* - `memory_list`/`memory_read`/`memory_write` -- Winter's memory is FILE-BASED (CLAUDE.md's own
|
|
11
|
+
* "a MEMDIR of markdown written with ordinary write/edit -- no dedicated memory tools"). There is
|
|
12
|
+
* nothing named `memory_*` to exclude; a subagent's memory access is already governed by whether
|
|
13
|
+
* it holds `Read`/`Write`/`Edit` at all, which this pool does not touch.
|
|
14
|
+
* - `Poll` -- no Winter tool of this name or shape exists.
|
|
15
|
+
* - `ConnectGitHub` -- no Winter tool of this name or shape exists.
|
|
16
|
+
* Every other claude name below has a Winter tool of the identical shape and an unchanged name
|
|
17
|
+
* (`Agent`/`Artifact`/`ExitPlanMode`/`Edit`/`Write`/`NotebookEdit`/`AskUserQuestion`/
|
|
18
|
+
* `WaitForMcpServers`/`RefreshMcpTools`/`Workflow`/`ScheduleWakeup`/`ProposeGoal`/`EndConversation`/
|
|
19
|
+
* `TaskOutput` all register under their own bare names -- see `tools/descriptors/*.ts`), so no
|
|
20
|
+
* rename table is needed for those.
|
|
21
|
+
*/
|
|
22
|
+
export declare const SUBAGENT_EXCLUDED_TOOLS: readonly string[];
|
|
23
|
+
/**
|
|
24
|
+
* Research §A6: a BACKGROUNDED subagent's tool pool is further limited to this allowlist (on top of
|
|
25
|
+
* whatever `SUBAGENT_EXCLUDED_TOOLS` above already removed) -- "`Agent` (depth-gated) and MCP tools
|
|
26
|
+
* pass regardless", which is why neither rides in this literal list: the depth gate and the MCP
|
|
27
|
+
* passthrough are structural exceptions the CALLER applies alongside this allowlist, not members of
|
|
28
|
+
* it (mirroring claude's own "pass regardless" wording exactly).
|
|
29
|
+
*
|
|
30
|
+
* ONE CLAUDE ENTRY HAS NO WINTER EQUIVALENT, DISCLOSED: "Search/List Plugins/Skills" -- Winter has no
|
|
31
|
+
* tool that enumerates installed plugins or searches the skill catalog (its `Skill` tool INVOKES a
|
|
32
|
+
* named skill, already listed below; there is no separate discovery tool to allow through).
|
|
33
|
+
*
|
|
34
|
+
* `GetTask` (claude's name) is Winter's `TaskGet`.
|
|
35
|
+
*/
|
|
36
|
+
export declare const BACKGROUND_AGENT_TOOL_ALLOWLIST: readonly string[];
|
|
37
|
+
/**
|
|
38
|
+
* Tools that pass a background subagent's allowlist REGARDLESS of the literal list above -- claude's
|
|
39
|
+
* own "Agent (depth-gated) and MCP tools pass regardless." `Agent` itself is named so the CALLER can
|
|
40
|
+
* union it in only when the depth gate (research §A6's own nesting-limit check, `subagents/limits.ts`)
|
|
41
|
+
* still permits a further spawn; MCP tools are recognised by their `mcp__` prefix, not by name, so
|
|
42
|
+
* there is nothing to list for them here.
|
|
43
|
+
*/
|
|
44
|
+
export declare const BACKGROUND_AGENT_ALWAYS_ALLOWED_TOOL: string;
|
|
45
|
+
export interface SubagentToolPoolOptions {
|
|
46
|
+
/** The child runs in `plan` mode -- `ExitPlanMode` stays (claude's own parenthetical). */
|
|
47
|
+
planMode: boolean;
|
|
48
|
+
/** The child is below the spawn-depth limit -- only then does it keep `Agent` (research §A6). */
|
|
49
|
+
mayNest: boolean;
|
|
50
|
+
/** The child is backgrounded -- its pool is further narrowed to the allowlist above. */
|
|
51
|
+
background: boolean;
|
|
52
|
+
/** The session's brand: names Winter's own standing-server twins (`mcp__<server>__send_message`, ...). */
|
|
53
|
+
brand?: Pick<BrandProfile, "mcpServerName">;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* The child's EFFECTIVE tool pool, from the pool it would otherwise inherit (research §A6):
|
|
57
|
+
* 1. every name in `SUBAGENT_EXCLUDED_TOOLS` is removed (`ExitPlanMode` kept in plan mode);
|
|
58
|
+
* 2. `Agent` is removed once the child is at the spawn-depth limit (a child that cannot spawn must
|
|
59
|
+
* not be offered the tool -- claude's depth-gated `Agent`);
|
|
60
|
+
* 3. a BACKGROUND child keeps only `BACKGROUND_AGENT_TOOL_ALLOWLIST`, plus `Agent` (depth-gated)
|
|
61
|
+
* and every MCP tool, which pass regardless.
|
|
62
|
+
*
|
|
63
|
+
* WINTER'S OWN DEFAULT TOOLS ARE JUDGED BY THEIR BUILT-IN NAME. `SendMessage`, `ListAgents`,
|
|
64
|
+
* `ReadNotifications` and `advisor` are also registered as standing-server twins under
|
|
65
|
+
* `mcp__<server>__<tool>` (WS-09 §10); a twin is the same tool, so it follows its built-in name's
|
|
66
|
+
* verdict here rather than slipping through step 3's MCP passthrough (or step 1's exclusion) on its
|
|
67
|
+
* prefix alone. Only a genuine MCP server's tool is an "MCP tool" in claude's sense.
|
|
68
|
+
*/
|
|
69
|
+
export declare function applySubagentToolPool(tools: readonly string[], opts: SubagentToolPoolOptions): string[];
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type BrandProfile } from "@yanlinglabs/winter-agent-sdk";
|
|
2
|
+
export declare class ChildStalledError extends Error {
|
|
3
|
+
readonly timeoutMs: number;
|
|
4
|
+
constructor(timeoutMs: number, varName?: string);
|
|
5
|
+
}
|
|
6
|
+
export declare function resolveStallTimeoutMs(env?: Record<string, string | undefined>, brand?: Pick<BrandProfile, "envPrefix">): number;
|
|
7
|
+
export interface StallWatchdog {
|
|
8
|
+
poke(): void;
|
|
9
|
+
pause(): void;
|
|
10
|
+
resume(): void;
|
|
11
|
+
cancel(): void;
|
|
12
|
+
}
|
|
13
|
+
export declare function createStallWatchdog(timeoutMs: number, onStall: (err: ChildStalledError) => void): StallWatchdog;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type BrandProfile } from "@yanlinglabs/winter-agent-sdk";
|
|
2
|
+
export type IsolationType = "normal" | "worktree";
|
|
3
|
+
export type CleanupPolicy = "auto-remove-if-unchanged" | "keep";
|
|
4
|
+
export interface Workspace {
|
|
5
|
+
root: string;
|
|
6
|
+
isolationType: IsolationType;
|
|
7
|
+
cleanupPolicy: CleanupPolicy;
|
|
8
|
+
branch?: string;
|
|
9
|
+
}
|
|
10
|
+
export type CreateWorkspaceResult = {
|
|
11
|
+
ok: true;
|
|
12
|
+
workspace: Workspace;
|
|
13
|
+
} | {
|
|
14
|
+
ok: false;
|
|
15
|
+
error: string;
|
|
16
|
+
};
|
|
17
|
+
export declare function createWorkspace(opts: {
|
|
18
|
+
parentCwd: string;
|
|
19
|
+
isolation?: "worktree";
|
|
20
|
+
agentId: string;
|
|
21
|
+
brand?: Pick<BrandProfile, "projectDirName">;
|
|
22
|
+
}): Promise<CreateWorkspaceResult>;
|
|
23
|
+
export interface CleanupResult {
|
|
24
|
+
removed: boolean;
|
|
25
|
+
reason: string;
|
|
26
|
+
}
|
|
27
|
+
export declare function cleanupWorkspace(workspace: Workspace): Promise<CleanupResult>;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { SpawnedRuntimeProcess } from "@yanlinglabs/winter-agent-sdk";
|
|
2
|
+
import { type Provider, type ToolExecutor } from "./engine.js";
|
|
3
|
+
import "./tools/descriptors/index.ts";
|
|
4
|
+
import "./tools/impl/index.ts";
|
|
5
|
+
export declare function inMemoryProcess(argv: string[], provider?: Provider, tools?: ToolExecutor, env?: Record<string, string | undefined>): SpawnedRuntimeProcess;
|
package/dist/testing.js
ADDED
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
import {
|
|
2
|
+
registerTool2,
|
|
3
|
+
runEngine2,
|
|
4
|
+
echoProvider2,
|
|
5
|
+
resolveEngineSession2
|
|
6
|
+
} from "./index-9qgkpv56.js";
|
|
7
|
+
import"./index-bef62z3r.js";
|
|
8
|
+
import {
|
|
9
|
+
registerDefaultChildEngineFactory,
|
|
10
|
+
loadResumedChain,
|
|
11
|
+
buildProductionWiring,
|
|
12
|
+
withAutoSkillPermissions,
|
|
13
|
+
restoreChildRoster
|
|
14
|
+
} from "./index-584yahed.js";
|
|
15
|
+
import {
|
|
16
|
+
Queue
|
|
17
|
+
} from "./index-97t2rmtf.js";
|
|
18
|
+
|
|
19
|
+
// src/testing.ts
|
|
20
|
+
import { mkdtempSync } from "node:fs";
|
|
21
|
+
import { tmpdir } from "node:os";
|
|
22
|
+
import { join } from "node:path";
|
|
23
|
+
import { encodeFrame, splitFrames, WINTER_BRAND, envName, storeHomeEnvName } from "@yanlinglabs/winter-agent-sdk";
|
|
24
|
+
import { WinterCompatibilitySessionStore, compatibilityKeys } from "@yanlinglabs/winter-agent-sdk";
|
|
25
|
+
function registerEquivalenceStandIn(name) {
|
|
26
|
+
const echo = {
|
|
27
|
+
async execute(input) {
|
|
28
|
+
return { output: `${name}:${JSON.stringify(input)}` };
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
registerTool2({
|
|
32
|
+
descriptor: {
|
|
33
|
+
canonicalName: name,
|
|
34
|
+
advertisedName: name,
|
|
35
|
+
source: "sdk",
|
|
36
|
+
inputSchema: { type: "object" },
|
|
37
|
+
description: "Test-only equivalence-corpus stand-in (testing.ts) -- not a WS-06 tool.",
|
|
38
|
+
exposure: "hidden",
|
|
39
|
+
permissionClass: "read",
|
|
40
|
+
availability: {},
|
|
41
|
+
capabilityRequirements: [],
|
|
42
|
+
disposition: "implement-now"
|
|
43
|
+
},
|
|
44
|
+
executor: echo
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
for (const name of ["test_tool", "long_task", "mystery_tool"]) {
|
|
48
|
+
registerEquivalenceStandIn(name);
|
|
49
|
+
}
|
|
50
|
+
function resolveInMemoryWinterHome(config, env) {
|
|
51
|
+
if (config.winterHome !== undefined)
|
|
52
|
+
return config.winterHome;
|
|
53
|
+
const override = env?.[envName(config.brand ?? WINTER_BRAND, "HOME")];
|
|
54
|
+
if (override !== undefined && override.trim() !== "")
|
|
55
|
+
return override;
|
|
56
|
+
return mkdtempSync(join(tmpdir(), "winter-inmemory-"));
|
|
57
|
+
}
|
|
58
|
+
function resolveInMemoryStoreHome(config, env) {
|
|
59
|
+
if (config.storeHome !== undefined)
|
|
60
|
+
return config.storeHome;
|
|
61
|
+
return env?.[storeHomeEnvName(config.brand ?? WINTER_BRAND)];
|
|
62
|
+
}
|
|
63
|
+
function parseConfigFromArgv(argv) {
|
|
64
|
+
const idx = argv.indexOf("--config-json");
|
|
65
|
+
const raw = idx === -1 ? undefined : argv[idx + 1];
|
|
66
|
+
if (raw === undefined)
|
|
67
|
+
throw new Error("inMemoryProcess: argv is missing '--config-json <json>'");
|
|
68
|
+
return JSON.parse(raw);
|
|
69
|
+
}
|
|
70
|
+
function inMemoryProcess(argv, provider = echoProvider2, tools, env) {
|
|
71
|
+
const config = parseConfigFromArgv(argv);
|
|
72
|
+
let memoizedWinterHome;
|
|
73
|
+
const winterHomeOnce = () => memoizedWinterHome ??= resolveInMemoryWinterHome(config, env);
|
|
74
|
+
const stdin = new Queue;
|
|
75
|
+
const stdout = new Queue;
|
|
76
|
+
const stderr = new Queue;
|
|
77
|
+
const input = async function* () {
|
|
78
|
+
let carry = "";
|
|
79
|
+
for await (const chunk of stdin) {
|
|
80
|
+
const split = splitFrames(chunk, carry);
|
|
81
|
+
carry = split.carry;
|
|
82
|
+
for (const frame of split.frames)
|
|
83
|
+
yield frame;
|
|
84
|
+
}
|
|
85
|
+
}();
|
|
86
|
+
const output = {
|
|
87
|
+
write(frame) {
|
|
88
|
+
stdout.write(encodeFrame(frame));
|
|
89
|
+
},
|
|
90
|
+
end() {
|
|
91
|
+
stdout.end();
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
let settleExited;
|
|
95
|
+
const exited = new Promise((resolve) => {
|
|
96
|
+
settleExited = resolve;
|
|
97
|
+
});
|
|
98
|
+
let settled = false;
|
|
99
|
+
(async () => {
|
|
100
|
+
try {
|
|
101
|
+
const { config: effectiveConfig, store, initialMessages, approvalStore, autoStateStore } = await resolveEngineSession2({
|
|
102
|
+
config,
|
|
103
|
+
resolveWinterHome: winterHomeOnce,
|
|
104
|
+
resolveStoreHome: () => resolveInMemoryStoreHome(config, env),
|
|
105
|
+
env: env ?? {}
|
|
106
|
+
});
|
|
107
|
+
const childWinterHome = winterHomeOnce();
|
|
108
|
+
const childDurableRoot = resolveInMemoryStoreHome(config, env) ?? childWinterHome;
|
|
109
|
+
const childStore = config.persistSession === false ? undefined : new WinterCompatibilitySessionStore({ winterHome: childDurableRoot });
|
|
110
|
+
const providerChain = await loadResumedChain(store, initialMessages);
|
|
111
|
+
const wiring = await buildProductionWiring({
|
|
112
|
+
config: effectiveConfig,
|
|
113
|
+
env: env ?? {},
|
|
114
|
+
winterHome: winterHomeOnce(),
|
|
115
|
+
...store !== undefined ? { persistence: store } : {},
|
|
116
|
+
provider: {
|
|
117
|
+
testProviders: () => provider,
|
|
118
|
+
chain: () => providerChain,
|
|
119
|
+
home: (env ?? {})["HOME"] ?? winterHomeOnce()
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
for (const warning of wiring.warnings)
|
|
123
|
+
stderr.write(`winter: ${warning}
|
|
124
|
+
`);
|
|
125
|
+
registerDefaultChildEngineFactory({
|
|
126
|
+
provider: wiring.providerWiring.provider,
|
|
127
|
+
config: effectiveConfig,
|
|
128
|
+
env: env ?? {},
|
|
129
|
+
warn: (line) => stderr.write(`${line}
|
|
130
|
+
`),
|
|
131
|
+
...childStore !== undefined ? { store: childStore } : {},
|
|
132
|
+
...childWinterHome !== undefined ? { winterHome: childWinterHome } : {},
|
|
133
|
+
...wiring.childFactoryOptions
|
|
134
|
+
});
|
|
135
|
+
const restoredChildren = childStore !== undefined && config.forkSession !== true && (config.resume !== undefined || config.continue === true) ? await restoreChildRoster(childStore, { projectKey: compatibilityKeys(effectiveConfig.cwd).transcriptProjectKey, sessionId: effectiveConfig.sessionId }) : undefined;
|
|
136
|
+
try {
|
|
137
|
+
const code = await runEngine2({
|
|
138
|
+
config: withAutoSkillPermissions(wiring.config),
|
|
139
|
+
...wiring.engineOptions,
|
|
140
|
+
input,
|
|
141
|
+
output,
|
|
142
|
+
provider: wiring.providerWiring.provider,
|
|
143
|
+
...tools !== undefined ? { tools } : {},
|
|
144
|
+
...store !== undefined ? { store } : {},
|
|
145
|
+
...initialMessages.length > 0 ? { initialMessages } : {},
|
|
146
|
+
...approvalStore !== undefined ? { approvalStore } : {},
|
|
147
|
+
...autoStateStore !== undefined ? { autoStateStore } : {},
|
|
148
|
+
...env !== undefined ? { env } : {}
|
|
149
|
+
});
|
|
150
|
+
if (!settled) {
|
|
151
|
+
settled = true;
|
|
152
|
+
stderr.end();
|
|
153
|
+
settleExited({ code, signal: null });
|
|
154
|
+
}
|
|
155
|
+
} finally {
|
|
156
|
+
restoredChildren?.remove();
|
|
157
|
+
wiring.dispose();
|
|
158
|
+
}
|
|
159
|
+
} catch {
|
|
160
|
+
if (!settled) {
|
|
161
|
+
settled = true;
|
|
162
|
+
stdout.end();
|
|
163
|
+
stderr.end();
|
|
164
|
+
settleExited({ code: 1, signal: null });
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
})();
|
|
168
|
+
return {
|
|
169
|
+
stdin: {
|
|
170
|
+
write(chunk) {
|
|
171
|
+
stdin.write(chunk);
|
|
172
|
+
},
|
|
173
|
+
end() {
|
|
174
|
+
stdin.end();
|
|
175
|
+
}
|
|
176
|
+
},
|
|
177
|
+
stdout,
|
|
178
|
+
stderr,
|
|
179
|
+
kill(signal) {
|
|
180
|
+
if (settled)
|
|
181
|
+
return;
|
|
182
|
+
settled = true;
|
|
183
|
+
stdout.end();
|
|
184
|
+
stderr.end();
|
|
185
|
+
stdin.end();
|
|
186
|
+
settleExited({ code: null, signal: signal ?? "SIGTERM" });
|
|
187
|
+
},
|
|
188
|
+
exited,
|
|
189
|
+
pid: null
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
export {
|
|
193
|
+
inMemoryProcess
|
|
194
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type SessionTempDirPaths } from "../paths/temp.js";
|
|
2
|
+
export type SessionTempRootResolver = () => SessionTempDirPaths;
|
|
3
|
+
export declare function configureBackgroundTaskRoot(resolver: SessionTempRootResolver): void;
|
|
4
|
+
export declare function resetBackgroundTaskRootForTest(): void;
|
|
5
|
+
export type BackgroundTaskKind = "bash" | "monitor" | "monitor_ws" | "workflow" | "agent";
|
|
6
|
+
export declare function wireTaskType(kind: BackgroundTaskKind): string;
|
|
7
|
+
export declare function createBackgroundTask(kind: BackgroundTaskKind): {
|
|
8
|
+
taskId: string;
|
|
9
|
+
outputPath: string;
|
|
10
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { WinterToolDefinition } from "@yanlinglabs/winter-agent-sdk/tools";
|
|
2
|
+
import { type ToolDescriptor } from "../registry.js";
|
|
3
|
+
export declare function stub(descriptor: ToolDescriptor): void;
|
|
4
|
+
/**
|
|
5
|
+
* The MODEL-FACING half of a descriptor, taken from the SDK's own definition (user ruling R-8-1).
|
|
6
|
+
*
|
|
7
|
+
* Winter's default tools are declared once, in `@yanlinglabs/winter-agent-sdk/tools`, because three
|
|
8
|
+
* copies of the same schema is how "both runtime branches present this exact model-facing schema"
|
|
9
|
+
* stops being true. A descriptor that binds one of them spreads THIS and then supplies only the
|
|
10
|
+
* registry POLICY the SDK deliberately does not carry (ruling P-8): `canonicalName`,
|
|
11
|
+
* `advertisedName`, `source`, `exposure`, `availability`, `capabilityRequirements`, `disposition`
|
|
12
|
+
* and `deferred`.
|
|
13
|
+
*
|
|
14
|
+
* THE SCHEMA OBJECTS PASS THROUGH BY REFERENCE, not by copy — `one-definition.test.ts` asserts
|
|
15
|
+
* identity (`toBe`), because two structurally identical literals pass every equality check on the
|
|
16
|
+
* day they are written and drift the moment one of them is edited.
|
|
17
|
+
*
|
|
18
|
+
* The cast is the price of two structural schema types that were written independently: the SDK's
|
|
19
|
+
* `JsonSchemaObject` types `properties` as `Record<string, unknown>` (it advertises schema DATA and
|
|
20
|
+
* validates nothing), while this registry's `JSONSchema` recurses into itself. Neither is a
|
|
21
|
+
* validator, both describe the same JSON, and widening either one to match the other would be a
|
|
22
|
+
* worse trade than one cast in one helper.
|
|
23
|
+
*/
|
|
24
|
+
export declare function definitionFields(definition: WinterToolDefinition): Pick<ToolDescriptor, "description" | "inputSchema" | "permissionClass"> & Partial<Pick<ToolDescriptor, "outputSchema" | "searchHint" | "annotations">>;
|
|
25
|
+
/**
|
|
26
|
+
* The name a definition registers under on the NATIVE side: the official SDK's own built-in name
|
|
27
|
+
* when there is one, the bare tool name otherwise.
|
|
28
|
+
*
|
|
29
|
+
* A definition carries a bare name plus an alias key precisely so each host derives its own
|
|
30
|
+
* spelling; this is that derivation, in one place, so a descriptor never re-types a string the
|
|
31
|
+
* definition already knows.
|
|
32
|
+
*/
|
|
33
|
+
export declare function builtinNameOf(definition: WinterToolDefinition): string;
|
|
34
|
+
export declare const ALWAYS_AVAILABLE: {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { JSONSchema } from "../registry.js";
|
|
2
|
+
export interface AgentToolGateState {
|
|
3
|
+
/** R-S5: is `subagent_type: "fork"` selectable this session? */
|
|
4
|
+
forkEnabled: boolean;
|
|
5
|
+
/** research §A2: is `run_in_background` withheld because a host kill-switch is set? (`subagents/policy.ts`'s own `resolveBackgroundTasksDisabled`.) */
|
|
6
|
+
backgroundDisabled: boolean;
|
|
7
|
+
/** research §A3: is the `general-purpose` built-in actually available this session (R-S6's `allBuiltinsDisabled` kill switch off, or a same-named override present)? Governs the omitted-`subagent_type` sentence. */
|
|
8
|
+
generalPurposeAvailable: boolean;
|
|
9
|
+
/**
|
|
10
|
+
* I4 (fix wave): the EFFECTIVE default `subagents/policy.ts`'s `resolveForegroundBackground`
|
|
11
|
+
* actually applies at its own stage 5, when `run_in_background` is advertised at all (i.e. neither
|
|
12
|
+
* `forkEnabled` nor `backgroundDisabled` is true -- see `agentInputSchemaFor` below). `true` (SDK
|
|
13
|
+
* 0.0.16, matching claude) unless a host opted out via `RuntimeConfig.backgroundByDefault` / the
|
|
14
|
+
* `WINTER_BACKGROUND_BY_DEFAULT` env fallback. Optional (default `true`) so every pre-I4 gate
|
|
15
|
+
* object literal in this file's own tests keeps typechecking unchanged.
|
|
16
|
+
*/
|
|
17
|
+
backgroundByDefault?: boolean;
|
|
18
|
+
}
|
|
19
|
+
/** The gate-OFF defaults the static registration below uses -- byte-identical to this descriptor's pre-parity shape wherever every gate reads as it always has (fork off, background on and the default, general-purpose present). */
|
|
20
|
+
export declare const AGENT_TOOL_GATE_DEFAULTS: AgentToolGateState;
|
|
21
|
+
/**
|
|
22
|
+
* research §A2's own field table, gate-aware (scope item 5: drop `run_in_background` when fork is on
|
|
23
|
+
* or a background kill switch is set; `name` stays withheld per the pre-existing P4-J(d) ruling,
|
|
24
|
+
* untouched by this lane).
|
|
25
|
+
*/
|
|
26
|
+
export declare function agentInputSchemaFor(gates?: AgentToolGateState): JSONSchema;
|
|
27
|
+
export declare const OMITTED_TYPE_SENTENCE_AVAILABLE = "If omitted, the general-purpose agent is used.";
|
|
28
|
+
/** The shared head of both omitted-type texts (research §A3/§A7): the description's sentence and the runtime refusal's message. */
|
|
29
|
+
export declare const OMITTED_TYPE_REQUIRED_PREFIX = "subagent_type is required: the general-purpose agent is not available in this session";
|
|
30
|
+
export declare const OMITTED_TYPE_SENTENCE_UNAVAILABLE = "subagent_type is required: the general-purpose agent is not available in this session, so choose one of the listed agent types.";
|
|
31
|
+
/**
|
|
32
|
+
* research §A3's own structure, Winter-worded, gate-aware.
|
|
33
|
+
*
|
|
34
|
+
* R-S10 (whole-branch review r2 finding 3, controller ruling): a tool DESCRIPTION is multi-sentence
|
|
35
|
+
* prose and must be Winter-authored throughout, including its OPENING sentences -- an earlier
|
|
36
|
+
* version of this function argued the opening two sentences were "mechanism statements... reused as
|
|
37
|
+
* given, not claude prose" and left them byte-identical to claude's own pinned text (the exact
|
|
38
|
+
* strings the review's r2 finding 3 names). That argument does not survive R-S10: a fact being true
|
|
39
|
+
* of Winter's own runtime does not license copying the SENTENCE Anthropic used to state it. Both
|
|
40
|
+
* opening sentences below are reworded to carry the identical information (how an agent is launched
|
|
41
|
+
* and specialized; that the available types are announced in an injected reminder) in Winter's own
|
|
42
|
+
* words. `OMITTED_TYPE_SENTENCE_AVAILABLE`/`_UNAVAILABLE` are UNCHANGED -- R-S10's own allowance
|
|
43
|
+
* covers a short functional one-liner reused as BOTH a description sentence and a refusal message
|
|
44
|
+
* (the shared-constant discipline two lines up exists precisely so the two never drift), which is
|
|
45
|
+
* the category the ruling exempts.
|
|
46
|
+
*/
|
|
47
|
+
export declare function renderAgentToolDescription(gates?: AgentToolGateState): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/** The name `engine.ts`'s `toolSpecFor` branches on, so no tool name is a literal there. */
|
|
2
|
+
export declare const BASH_CANONICAL_NAME = "Bash";
|
|
3
|
+
/** The static, sandbox-agnostic description -- what a session with no sandbox advertises, and what any reader outside a session sees. */
|
|
4
|
+
export declare const BASH_DESCRIPTION = "Fresh shell per call; cwd changes persist only within allowed working directories; env exports do not persist. run_in_background returns a background task. Recognized read-only forms are built-in pre-approvals.";
|
|
5
|
+
export declare const BASH_SANDBOX_HEADING = "## Bash command sandbox";
|
|
6
|
+
/** The facts the section is rendered from. Absent (`bashDescriptionFor(undefined)`) means commands do not run in a sandbox at all. */
|
|
7
|
+
export interface BashSandboxFacts {
|
|
8
|
+
/** The Seatbelt profile's resolved network posture (`resolveNetworkPosture`). `false` in every v1 configuration. */
|
|
9
|
+
networkAllowed: boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Whether `dangerouslyDisableSandbox` can take a command out of the sandbox at all --
|
|
12
|
+
* `sandbox.allowUnsandboxedCommands !== false`. When it cannot, claude's "disabled by policy"
|
|
13
|
+
* bullets replace the override guidance (the runtime then ignores the flag, `sandbox/spawn.ts`).
|
|
14
|
+
* Absent reads as allowed.
|
|
15
|
+
*/
|
|
16
|
+
unsandboxedAllowed?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export declare function bashSandboxSection(facts: BashSandboxFacts): string;
|
|
19
|
+
/** The description a session advertises: the base text, plus the sandbox section when its commands run sandboxed. */
|
|
20
|
+
export declare function bashDescriptionFor(facts: BashSandboxFacts | undefined): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import "./agent.ts";
|
|
2
|
+
import "./artifact.ts";
|
|
3
|
+
import "./ask-user-question.ts";
|
|
4
|
+
import "./advisor.ts";
|
|
5
|
+
import "./bash.ts";
|
|
6
|
+
import "./claude-design.ts";
|
|
7
|
+
import "./cron-create.ts";
|
|
8
|
+
import "./cron-delete.ts";
|
|
9
|
+
import "./cron-list.ts";
|
|
10
|
+
import "./edit.ts";
|
|
11
|
+
import "./end-conversation.ts";
|
|
12
|
+
import "./enter-plan-mode.ts";
|
|
13
|
+
import "./enter-worktree.ts";
|
|
14
|
+
import "./exit-plan-mode.ts";
|
|
15
|
+
import "./exit-worktree.ts";
|
|
16
|
+
import "./glob.ts";
|
|
17
|
+
import "./grep.ts";
|
|
18
|
+
import "./list-agents.ts";
|
|
19
|
+
import "./list-mcp-resources-tool.ts";
|
|
20
|
+
import "./lsp.ts";
|
|
21
|
+
import "./monitor.ts";
|
|
22
|
+
import "./notebook-edit.ts";
|
|
23
|
+
import "./powershell.ts";
|
|
24
|
+
import "./projects.ts";
|
|
25
|
+
import "./propose-goal.ts";
|
|
26
|
+
import "./propose-skills.ts";
|
|
27
|
+
import "./push-notification.ts";
|
|
28
|
+
import "./read.ts";
|
|
29
|
+
import "./read-mcp-resource-dir-tool.ts";
|
|
30
|
+
import "./read-mcp-resource-tool.ts";
|
|
31
|
+
import "./read-notifications.ts";
|
|
32
|
+
import "./refresh-mcp-tools.ts";
|
|
33
|
+
import "./remote-trigger.ts";
|
|
34
|
+
import "./repl.ts";
|
|
35
|
+
import "./report-findings.ts";
|
|
36
|
+
import "./schedule-wakeup.ts";
|
|
37
|
+
import "./send-feedback.ts";
|
|
38
|
+
import "./send-message.ts";
|
|
39
|
+
import "./send-user-file.ts";
|
|
40
|
+
import "./share-onboarding-guide.ts";
|
|
41
|
+
import "./show-onboarding-role-picker.ts";
|
|
42
|
+
import "./skill.ts";
|
|
43
|
+
import "./structured-output.ts";
|
|
44
|
+
import "./task-create.ts";
|
|
45
|
+
import "./task-get.ts";
|
|
46
|
+
import "./task-list.ts";
|
|
47
|
+
import "./task-output.ts";
|
|
48
|
+
import "./task-stop.ts";
|
|
49
|
+
import "./task-update.ts";
|
|
50
|
+
import "./todo-write.ts";
|
|
51
|
+
import "./tool-search.ts";
|
|
52
|
+
import "./wait-for-mcp-servers.ts";
|
|
53
|
+
import "./web-fetch.ts";
|
|
54
|
+
import "./web-search.ts";
|
|
55
|
+
import "./winter-list-agents.ts";
|
|
56
|
+
import "./winter-send-message.ts";
|
|
57
|
+
import "./workflow.ts";
|
|
58
|
+
import "./write.ts";
|
|
59
|
+
export declare const DESCRIPTORS_REGISTERED = true;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|