agent-afk 5.343.0 → 5.345.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/agent/artifact-registry/store.d.ts +3 -3
- package/dist/agent/daemon-instance.lock.d.ts +7 -0
- package/dist/agent/daemon.oauth-timer.d.ts +2 -0
- package/dist/agent/effect-ledger/remote-idempotency.d.ts +5 -0
- package/dist/agent/effect-ledger/store.d.ts +2 -1
- package/dist/agent/effect-ledger/types.d.ts +6 -0
- package/dist/agent/episodes/index.d.ts +1 -1
- package/dist/agent/hooks.d.ts +1 -0
- package/dist/agent/lsp/repo-map.d.ts +11 -0
- package/dist/agent/providers/anthropic-direct/provider-runtime.d.ts +1 -1
- package/dist/agent/tools/compose-executor.node-build.d.ts +4 -0
- package/dist/agent/tools/compose-node-results.d.ts +8 -0
- package/dist/agent/tools/handlers/artifact.d.ts +8 -0
- package/dist/agent/tools/handlers/bash-sandbox.d.ts +12 -0
- package/dist/agent/tools/handlers/bash-sandbox.paths.d.ts +5 -0
- package/dist/agent/tools/handlers/worktree-managed.d.ts +1 -1
- package/dist/agent/tools/handlers/worktree.d.ts +1 -1
- package/dist/agent/tools/handlers/write-denylist.d.ts +1 -0
- package/dist/agent/tools/schemas.artifact.d.ts +5 -0
- package/dist/agent/trace/events.d.ts +3 -0
- package/dist/agent/trace/receipt.types.d.ts +2 -0
- package/dist/agent/trace/types.d.ts +1 -0
- package/dist/bundled-plugins/awa-bundled/skills/diagnose/SKILL.md +2 -0
- package/dist/bundled-plugins/awa-bundled/skills/diagnose/references/layout-jump-decision-table.md +52 -0
- package/dist/cli/_lib/stream-renderer-lifecycle.d.ts +3 -0
- package/dist/cli/_lib/stream-renderer.d.ts +1 -0
- package/dist/cli/commands/interactive/thinking-lane.d.ts +1 -0
- package/dist/cli/errors/classifier.d.ts +1 -1
- package/dist/cli.mjs +686 -657
- package/dist/config/env.d.ts +15 -0
- package/dist/config/env.sandbox.d.ts +8 -0
- package/dist/config/env.tools.d.ts +8 -0
- package/dist/index.mjs +472 -462
- package/dist/insights/aggregators/guardrail-false-positives.d.ts +2 -0
- package/dist/paths.d.ts +1 -0
- package/dist/paths.experiments.d.ts +1 -0
- package/dist/telegram.mjs +528 -518
- package/dist/utils/errors.d.ts +2 -0
- package/dist/web-ui-assets/assets/{angular-html-D9HxDckB.js → angular-html-DCf9mK03.js} +1 -1
- package/dist/web-ui-assets/assets/{angular-ts-CU-2-qNu.js → angular-ts-BhxpQMSX.js} +1 -1
- package/dist/web-ui-assets/assets/{apl-CjRnf8iv.js → apl-A-r0G4J9.js} +1 -1
- package/dist/web-ui-assets/assets/{astro-BeJmvzqF.js → astro-D-lKZ4j-.js} +1 -1
- package/dist/web-ui-assets/assets/{blade-B-b54web.js → blade-DVJMqlao.js} +1 -1
- package/dist/web-ui-assets/assets/{c-BB8Pfjsa.js → c-ChOtJbk5.js} +1 -1
- package/dist/web-ui-assets/assets/{chapel-BPpnrh4V.js → chapel-BMoxzG78.js} +1 -1
- package/dist/web-ui-assets/assets/{cobol-BwwGtgEh.js → cobol-Dl2G0XNt.js} +1 -1
- package/dist/web-ui-assets/assets/{coffee-ilL4_8aT.js → coffee-C7XZmp80.js} +1 -1
- package/dist/web-ui-assets/assets/{cpp-moR8pzFi.js → cpp-MtUg-XmI.js} +1 -1
- package/dist/web-ui-assets/assets/{crystal-J88aQzxf.js → crystal-gcgYLp6N.js} +1 -1
- package/dist/web-ui-assets/assets/{css-fKeg4Z2o.js → css-BWD8iFC4.js} +1 -1
- package/dist/web-ui-assets/assets/{dist-Dd0e8ZPM.js → dist-Dfom6M-h.js} +2 -2
- package/dist/web-ui-assets/assets/{edge-CaGjLI0R.js → edge-A-RiO_d5.js} +1 -1
- package/dist/web-ui-assets/assets/{elixir-BVyPPV6a.js → elixir-C64Dvsrv.js} +1 -1
- package/dist/web-ui-assets/assets/{elm-CIqALtqh.js → elm-BMaGn-ln.js} +1 -1
- package/dist/web-ui-assets/assets/{erb-BHaTiy6b.js → erb-DE6vUOcN.js} +1 -1
- package/dist/web-ui-assets/assets/{git-rebase-Bw9lRZ3B.js → git-rebase-B6hNon5K.js} +1 -1
- package/dist/web-ui-assets/assets/{glimmer-js-uxjWrvye.js → glimmer-js-CcHgpHb0.js} +1 -1
- package/dist/web-ui-assets/assets/{glimmer-ts-rPLZ6DTy.js → glimmer-ts-LIqxCH7j.js} +1 -1
- package/dist/web-ui-assets/assets/{glsl-TwBArQ34.js → glsl-BNSGTVh1.js} +1 -1
- package/dist/web-ui-assets/assets/{graphql-_6xxTmcw.js → graphql-DeC9aTP2.js} +1 -1
- package/dist/web-ui-assets/assets/{hack-BBdbXDKi.js → hack-9SzRPAR0.js} +1 -1
- package/dist/web-ui-assets/assets/{haml-CGwAOG_L.js → haml-Dwp0BYaN.js} +1 -1
- package/dist/web-ui-assets/assets/{handlebars-V6069UIv.js → handlebars-C4ijU-gq.js} +1 -1
- package/dist/web-ui-assets/assets/{html-DlFVgVkx.js → html-D33eFKwq.js} +1 -1
- package/dist/web-ui-assets/assets/{html-derivative-C3lmdCJP.js → html-derivative-BUpn0UHC.js} +1 -1
- package/dist/web-ui-assets/assets/{http-Bez3OCbh.js → http-Q8dkf-8L.js} +1 -1
- package/dist/web-ui-assets/assets/{hurl-BSiqIbZR.js → hurl-C_CiLZEm.js} +1 -1
- package/dist/web-ui-assets/assets/{index-DxraiEXA.js → index-BnepvRha.js} +1 -1
- package/dist/web-ui-assets/assets/index-d_FWGInx.css +2 -0
- package/dist/web-ui-assets/assets/{java-DHCJgaYo.js → java-COFsz4CM.js} +1 -1
- package/dist/web-ui-assets/assets/{javascript-UwR15CHn.js → javascript-CEQuyZ56.js} +1 -1
- package/dist/web-ui-assets/assets/{jinja-vv0QfMTf.js → jinja-B4Eun3pt.js} +1 -1
- package/dist/web-ui-assets/assets/{jison-BdsuKmFE.js → jison-tLuAFFit.js} +1 -1
- package/dist/web-ui-assets/assets/{json-DNO2HE_Y.js → json-DZU3D0bq.js} +1 -1
- package/dist/web-ui-assets/assets/{jsx-U1H5CsFs.js → jsx-BfqE2tIX.js} +1 -1
- package/dist/web-ui-assets/assets/{julia-C330XKUM.js → julia-Bg58X7eO.js} +1 -1
- package/dist/web-ui-assets/assets/{just-RaEEprm5.js → just-CVNLdJYO.js} +1 -1
- package/dist/web-ui-assets/assets/{latex-BkviF63W.js → latex-BRnY3g6r.js} +1 -1
- package/dist/web-ui-assets/assets/{liquid-BXBmBztm.js → liquid-BYen3o5e.js} +1 -1
- package/dist/web-ui-assets/assets/{lua-BaWbDujq.js → lua-B8U96eiE.js} +1 -1
- package/dist/web-ui-assets/assets/{marko-BQsI2D3T.js → marko-B1fE5lrh.js} +1 -1
- package/dist/web-ui-assets/assets/{mdc-D0P-XiqT.js → mdc-DNluPBCG.js} +1 -1
- package/dist/web-ui-assets/assets/{nginx-Bs26owa3.js → nginx-BEIgI1np.js} +1 -1
- package/dist/web-ui-assets/assets/{nim-DnTXTHij.js → nim-DjNGhN30.js} +1 -1
- package/dist/web-ui-assets/assets/{org-Bda-wEk8.js → org-BrubVTtT.js} +1 -1
- package/dist/web-ui-assets/assets/{perl-CazUTglO.js → perl-jjSNef0Y.js} +1 -1
- package/dist/web-ui-assets/assets/{php-beb386wl.js → php-Dm0txZK9.js} +1 -1
- package/dist/web-ui-assets/assets/{pug-BNMtKALj.js → pug-Ctu1Bor1.js} +1 -1
- package/dist/web-ui-assets/assets/{qml-B0K9OgdI.js → qml-B7bzvrzA.js} +1 -1
- package/dist/web-ui-assets/assets/{r-DBHyJsFw.js → r-CWCDQwva.js} +1 -1
- package/dist/web-ui-assets/assets/{razor-CgwxupjW.js → razor-DR2Qrcao.js} +1 -1
- package/dist/web-ui-assets/assets/{regexp-DxkUG43n.js → regexp-CAziu7CR.js} +1 -1
- package/dist/web-ui-assets/assets/{rst-BHb8uy7y.js → rst-NN_UHiab.js} +1 -1
- package/dist/web-ui-assets/assets/{ruby-CkhP59zd.js → ruby-C4m8FOkc.js} +1 -1
- package/dist/web-ui-assets/assets/{sas-C4mIXV2D.js → sas-46U4dCZ-.js} +1 -1
- package/dist/web-ui-assets/assets/{scss-BGTKsyE5.js → scss-Dyk-lzNF.js} +1 -1
- package/dist/web-ui-assets/assets/{shellscript-BhvAyKWQ.js → shellscript-BWzwU0qn.js} +1 -1
- package/dist/web-ui-assets/assets/{shellsession-BIZJ_qLc.js → shellsession-D4AFj3By.js} +1 -1
- package/dist/web-ui-assets/assets/{soy-P6r6yOzU.js → soy-CpaN6S68.js} +1 -1
- package/dist/web-ui-assets/assets/{sql-BVBigw-2.js → sql-DCLq_fXo.js} +1 -1
- package/dist/web-ui-assets/assets/{stata-54jAGrgC.js → stata-FwHLn1R1.js} +1 -1
- package/dist/web-ui-assets/assets/{surrealql-C8HhiqK7.js → surrealql-BeWhSd2D.js} +1 -1
- package/dist/web-ui-assets/assets/{svelte-BueIeAvu.js → svelte-CnZf7drh.js} +1 -1
- package/dist/web-ui-assets/assets/{templ-Ofro3fhP.js → templ-Dh4CA0s0.js} +1 -1
- package/dist/web-ui-assets/assets/{tex-DJIpqw-n.js → tex-RGYg1I3G.js} +1 -1
- package/dist/web-ui-assets/assets/{ts-tags-ZY2vEszt.js → ts-tags-BZDbq4dl.js} +1 -1
- package/dist/web-ui-assets/assets/{tsx-WIiPFMv9.js → tsx-BZgu6mNc.js} +1 -1
- package/dist/web-ui-assets/assets/{twig-m538Ma7t.js → twig-Eyj6jtDI.js} +1 -1
- package/dist/web-ui-assets/assets/{typescript-Clk_YKGZ.js → typescript-C6GNGFv3.js} +1 -1
- package/dist/web-ui-assets/assets/{typst-F1lfBqcy.js → typst-BJ1WFNU8.js} +1 -1
- package/dist/web-ui-assets/assets/{vue-BEXL-pWx.js → vue-BMgvGk9o.js} +1 -1
- package/dist/web-ui-assets/assets/{vue-html-BWHrTaZI.js → vue-html-CnkJqb-F.js} +1 -1
- package/dist/web-ui-assets/assets/{vue-vine-vuvJlse5.js → vue-vine-CHwvpYeL.js} +1 -1
- package/dist/web-ui-assets/assets/{xml-CFxeGMBh.js → xml-Bp_7e8sG.js} +1 -1
- package/dist/web-ui-assets/assets/{xsl-Gm-otioc.js → xsl-Ccf44tZE.js} +1 -1
- package/dist/web-ui-assets/assets/{yaml-B2Lu9Cr1.js → yaml-B9d3ST_l.js} +1 -1
- package/dist/web-ui-assets/index.html +2 -2
- package/package.json +8 -1
- package/dist/web-ui-assets/assets/index-DBXn_P4Z.css +0 -2
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { ArtifactListFilter, ArtifactPutOptions, ArtifactRecord } from './types.js';
|
|
2
2
|
export declare function artifactPut(opts: ArtifactPutOptions, _storeDir?: string, _indexPath?: string): Promise<ArtifactRecord>;
|
|
3
|
-
export declare function artifactGet(id: string, _indexPath?: string): ArtifactRecord | undefined;
|
|
4
|
-
export declare function artifactList(filter?: ArtifactListFilter, _indexPath?: string): ArtifactRecord[];
|
|
3
|
+
export declare function artifactGet(id: string, _indexPath?: string, maxIndexBytes?: number): ArtifactRecord | undefined;
|
|
4
|
+
export declare function artifactList(filter?: ArtifactListFilter, _indexPath?: string, maxIndexBytes?: number): ArtifactRecord[];
|
|
5
5
|
export declare function artifactRead(id: string, _indexPath?: string): Promise<Buffer>;
|
|
6
|
-
export declare function artifactCount(_indexPath?: string): number;
|
|
6
|
+
export declare function artifactCount(_indexPath?: string, maxIndexBytes?: number): number;
|
|
7
7
|
export declare function compactIndex(_indexPath?: string): Promise<void>;
|
|
8
8
|
export declare function listStoreBlobs(_storeDir?: string): string[];
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare class DaemonAlreadyRunningError extends Error {
|
|
2
|
+
readonly ownerPid: number | null;
|
|
3
|
+
readonly windowsEpermAmbiguous: boolean;
|
|
4
|
+
constructor(lockPath: string, ownerPid: number | null, windowsEpermAmbiguous?: boolean);
|
|
5
|
+
}
|
|
6
|
+
export declare function getDaemonLockPath(instanceId?: string): string;
|
|
7
|
+
export declare function acquireDaemonLock(lockPath?: string, platform?: string): Promise<() => Promise<void>>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type InputBudget } from '../outcomes/outcomes-input.js';
|
|
2
|
-
import type { EffectRecord, EffectQuery, PendingEffectInput, ExecuteEffectInput } from './types.js';
|
|
2
|
+
import type { EffectRecord, EffectQuery, PendingEffectInput, ExecuteEffectInput, EffectRemoteRead } from './types.js';
|
|
3
3
|
export declare class EffectStore {
|
|
4
4
|
private readonly path;
|
|
5
5
|
private cachedRecords;
|
|
@@ -8,6 +8,7 @@ export declare class EffectStore {
|
|
|
8
8
|
private invalidateCache;
|
|
9
9
|
writePending(input: PendingEffectInput): EffectRecord;
|
|
10
10
|
updateStatus(input: ExecuteEffectInput): Promise<EffectRecord>;
|
|
11
|
+
reconcile(id: string, readRemote: EffectRemoteRead): Promise<EffectRecord>;
|
|
11
12
|
acknowledgeRetry(id: string): Promise<EffectRecord>;
|
|
12
13
|
findByIdempotencyKey(key: string, sessionId?: string): Promise<EffectRecord | null>;
|
|
13
14
|
query(filters?: EffectQuery): Promise<EffectRecord[]>;
|
|
@@ -10,6 +10,7 @@ export interface EffectRecord {
|
|
|
10
10
|
taskId?: string;
|
|
11
11
|
timestamp: number;
|
|
12
12
|
retryOf?: string;
|
|
13
|
+
remoteIdempotencyKey?: string;
|
|
13
14
|
retryAcknowledgedAt?: number;
|
|
14
15
|
result?: unknown;
|
|
15
16
|
reconciledAt?: number;
|
|
@@ -27,7 +28,12 @@ export interface PendingEffectInput {
|
|
|
27
28
|
sessionId?: string;
|
|
28
29
|
taskId?: string;
|
|
29
30
|
retryOf?: string;
|
|
31
|
+
remoteIdempotencyKey?: string;
|
|
30
32
|
}
|
|
33
|
+
export type EffectRemoteRead = (record: Readonly<EffectRecord>) => Promise<{
|
|
34
|
+
matched: boolean;
|
|
35
|
+
evidence: unknown;
|
|
36
|
+
}>;
|
|
31
37
|
export interface ExecuteEffectInput {
|
|
32
38
|
id: string;
|
|
33
39
|
status: Exclude<EffectStatus, 'pending'>;
|
|
@@ -3,4 +3,4 @@ export { extractEpisodeInput } from './extract.js';
|
|
|
3
3
|
export { synthesizeEpisode } from './synthesize.js';
|
|
4
4
|
export { writeEpisode, formatEpisodeContent, sanitizeNarrative } from './writer.js';
|
|
5
5
|
import type { EpisodeRecord } from './types.js';
|
|
6
|
-
export declare function synthesizeAndWriteEpisode(sessionId: string): Promise<EpisodeRecord>;
|
|
6
|
+
export declare function synthesizeAndWriteEpisode(sessionId: string): Promise<EpisodeRecord | null>;
|
package/dist/agent/hooks.d.ts
CHANGED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type LspServerPool } from './pool.js';
|
|
2
|
+
export declare const MAX_SYMBOLS = 200;
|
|
3
|
+
export declare const MAX_LINES = 80;
|
|
4
|
+
export interface RepoMapOptions {
|
|
5
|
+
readonly rootDir?: string;
|
|
6
|
+
readonly timeoutMs?: number;
|
|
7
|
+
readonly pool?: LspServerPool;
|
|
8
|
+
readonly serverCmd?: readonly string[];
|
|
9
|
+
readonly signal?: AbortSignal;
|
|
10
|
+
}
|
|
11
|
+
export declare function buildRepoMap(opts?: RepoMapOptions): Promise<string>;
|
|
@@ -13,7 +13,7 @@ export declare class AnthropicDirectProvider implements ModelProvider {
|
|
|
13
13
|
private _stateStore;
|
|
14
14
|
private readonly providerFactory?;
|
|
15
15
|
private readonly skillExecutor?;
|
|
16
|
-
private
|
|
16
|
+
private schemas;
|
|
17
17
|
private readonly hookRegistry;
|
|
18
18
|
private readonly permissions;
|
|
19
19
|
private readonly canUseTool;
|
|
@@ -6,6 +6,10 @@ export type ComposeNodeBuildResult = SubagentDAGNode | {
|
|
|
6
6
|
attachmentError: true;
|
|
7
7
|
nodeId: string;
|
|
8
8
|
error: Error;
|
|
9
|
+
} | {
|
|
10
|
+
usageBlocked: true;
|
|
11
|
+
nodeId: string;
|
|
12
|
+
notice: string;
|
|
9
13
|
};
|
|
10
14
|
export interface BuildComposeDagNodeArgs {
|
|
11
15
|
node: ComposeNodeInput;
|
|
@@ -3,6 +3,10 @@ type BuildResult = SubagentDAGNode | {
|
|
|
3
3
|
attachmentError: true;
|
|
4
4
|
nodeId: string;
|
|
5
5
|
error: Error;
|
|
6
|
+
} | {
|
|
7
|
+
usageBlocked: true;
|
|
8
|
+
nodeId: string;
|
|
9
|
+
notice: string;
|
|
6
10
|
};
|
|
7
11
|
export declare function splitComposeNodeResults(results: BuildResult[]): {
|
|
8
12
|
dagNodes: SubagentDAGNode[];
|
|
@@ -10,5 +14,9 @@ export declare function splitComposeNodeResults(results: BuildResult[]): {
|
|
|
10
14
|
id: string;
|
|
11
15
|
error: Error;
|
|
12
16
|
}>;
|
|
17
|
+
usageBlocks: Array<{
|
|
18
|
+
id: string;
|
|
19
|
+
notice: string;
|
|
20
|
+
}>;
|
|
13
21
|
};
|
|
14
22
|
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ToolHandler } from '../types.js';
|
|
2
|
+
interface ArtifactHandlerOptions {
|
|
3
|
+
cwd?: string;
|
|
4
|
+
storeDir?: string;
|
|
5
|
+
indexPath?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function createArtifactHandlers(opts?: ArtifactHandlerOptions): Map<string, ToolHandler>;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type SandboxPolicy = 'workspace-write' | 'read-only' | 'off';
|
|
2
|
+
export interface SandboxedCommand {
|
|
3
|
+
readonly shell: string;
|
|
4
|
+
readonly args: readonly string[];
|
|
5
|
+
readonly command: string;
|
|
6
|
+
readonly sandboxed: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare function parseSandboxPolicy(): SandboxPolicy | undefined;
|
|
9
|
+
export declare function _resetBwrapCacheForTests(): void;
|
|
10
|
+
export declare function _forceBwrapUnavailableForTests(): void;
|
|
11
|
+
export declare function buildSandboxedCommand(command: string, policy: SandboxPolicy, cwd: string | undefined, childTemp?: string): SandboxedCommand;
|
|
12
|
+
export declare function sandboxDescription(policy: SandboxPolicy): string;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function canonicalSandboxPath(input: string): string;
|
|
2
|
+
export declare function sandboxWriteFloor(): readonly string[];
|
|
3
|
+
export declare function sandboxFloorAncestors(floor: readonly string[]): readonly string[];
|
|
4
|
+
export declare function assertDisjointSandboxGrants(grants: readonly string[], floor: readonly string[]): void;
|
|
5
|
+
export declare function sandboxSchemeString(value: string): string;
|
|
@@ -5,7 +5,7 @@ export interface RepoContext {
|
|
|
5
5
|
repoRoot: string;
|
|
6
6
|
afkWorktreesRoot: string;
|
|
7
7
|
}
|
|
8
|
-
export declare function resolveRepoContext(execFile: ExecFileFn, cwd: string): Promise<RepoContext>;
|
|
8
|
+
export declare function resolveRepoContext(execFile: ExecFileFn, cwd: string, explicitRepo?: string): Promise<RepoContext>;
|
|
9
9
|
export declare function sanitizeSlug(name: string): string;
|
|
10
10
|
export declare function detectRemoteDefaultRef(execFile: ExecFileFn, repoRoot: string): Promise<string | undefined>;
|
|
11
11
|
export declare function resolveAnchorBaseRef(execFile: ExecFileFn, anchor: string): Promise<string>;
|
|
@@ -4,4 +4,4 @@ export interface WorktreeHandlerDeps {
|
|
|
4
4
|
execFile?: ExecFileFn;
|
|
5
5
|
generateSuffix?: () => string;
|
|
6
6
|
}
|
|
7
|
-
export declare function createWorktreeHandler(
|
|
7
|
+
export declare function createWorktreeHandler(cwdFallback?: string, deps?: WorktreeHandlerDeps): ToolHandler;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export declare const BUILTIN_WRITE_DENYLIST: readonly string[];
|
|
2
|
+
export declare function getUnresolvedWriteDenylist(): readonly string[];
|
|
2
3
|
export declare function getWriteDenylist(): readonly string[];
|
|
3
4
|
export declare function _resetWriteDenylistCacheForTests(): void;
|
|
4
5
|
export declare function safeRealpath(p: string): string;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { AnthropicToolDef } from './types.js';
|
|
2
|
+
export declare const artifactGetTool: AnthropicToolDef;
|
|
3
|
+
export declare const artifactListTool: AnthropicToolDef;
|
|
4
|
+
export declare const artifactReadTool: AnthropicToolDef;
|
|
5
|
+
export declare const artifactToolSchemas: readonly [AnthropicToolDef, AnthropicToolDef, AnthropicToolDef];
|
|
@@ -137,6 +137,7 @@ export declare const HookDecisionPayloadSchema: z.ZodObject<{
|
|
|
137
137
|
"outbound-message": "outbound-message";
|
|
138
138
|
"release-boundary": "release-boundary";
|
|
139
139
|
}>>;
|
|
140
|
+
ruleId: z.ZodOptional<z.ZodString>;
|
|
140
141
|
}, z.core.$strip>;
|
|
141
142
|
export declare const HookSummaryPayloadSchema: z.ZodObject<{
|
|
142
143
|
scope: z.ZodLiteral<"root-session-including-subagents">;
|
|
@@ -415,6 +416,7 @@ export declare const TraceEventInputSchema: z.ZodDiscriminatedUnion<[z.ZodObject
|
|
|
415
416
|
"outbound-message": "outbound-message";
|
|
416
417
|
"release-boundary": "release-boundary";
|
|
417
418
|
}>>;
|
|
419
|
+
ruleId: z.ZodOptional<z.ZodString>;
|
|
418
420
|
}, z.core.$strip>;
|
|
419
421
|
}, z.core.$strip>, z.ZodObject<{
|
|
420
422
|
kind: z.ZodLiteral<"hook_summary">;
|
|
@@ -874,6 +876,7 @@ export declare const TraceEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
874
876
|
"outbound-message": "outbound-message";
|
|
875
877
|
"release-boundary": "release-boundary";
|
|
876
878
|
}>>;
|
|
879
|
+
ruleId: z.ZodOptional<z.ZodString>;
|
|
877
880
|
}, z.core.$strip>;
|
|
878
881
|
}, z.core.$strip>, z.ZodObject<{
|
|
879
882
|
ts: z.ZodString;
|
|
@@ -19,6 +19,7 @@ export interface RunReceipt {
|
|
|
19
19
|
witnessLabel: string;
|
|
20
20
|
tracePath: string;
|
|
21
21
|
sessionId?: string;
|
|
22
|
+
cwd?: string;
|
|
22
23
|
endReason?: string;
|
|
23
24
|
status: 'succeeded' | 'failed' | 'cancelled' | 'unknown';
|
|
24
25
|
closureReason?: ClosureReason;
|
|
@@ -72,6 +73,7 @@ export interface ReceiptMeta {
|
|
|
72
73
|
tracePath: string;
|
|
73
74
|
witnessLabel: string;
|
|
74
75
|
sessionId?: string;
|
|
76
|
+
cwd?: string;
|
|
75
77
|
endReason?: string;
|
|
76
78
|
now?: Date;
|
|
77
79
|
journalSummary?: JournalSummary;
|
|
@@ -42,6 +42,7 @@ export interface HookDecisionPayload {
|
|
|
42
42
|
durationMs?: number;
|
|
43
43
|
approvalOutcome?: AfkApprovalOutcome;
|
|
44
44
|
riskCategory?: import('../risk-classifier.js').RiskCategory;
|
|
45
|
+
ruleId?: string;
|
|
45
46
|
}
|
|
46
47
|
export interface HookSummaryPayload {
|
|
47
48
|
scope: 'root-session-including-subagents';
|
|
@@ -5,6 +5,8 @@ context: fork
|
|
|
5
5
|
category: Debug & fix
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
+
**Reference documents.** Before forming hypotheses, check `references/` alongside this SKILL.md for decision tables matching the bug's domain keywords (e.g. layout jumps, reflow). When a reference applies, use it to constrain the hypothesis space rather than exploring from scratch.
|
|
9
|
+
|
|
8
10
|
Gather context: read the failing test or bug description, relevant error output, and recent git changes. If no failing test exists yet, write a minimal reproducer test (or identify a concrete verification command) before proceeding — hypotheses need a pass/fail signal to validate against. Dispatch two sub-agents in parallel — one to search the codebase for code paths involved in the failure (`subagent_type: research-agent`, read-only), and one to check recent commits and diffs that could have introduced the regression (`subagent_type: general-purpose` — requires Bash for `git log`/`git diff`/`git show`). When both return, synthesize findings into 2–4 ranked hypotheses, each with a specific code location and proposed cause.
|
|
9
11
|
|
|
10
12
|
**TUI label convention.** Set `id_prefix` on each Agent dispatch to a short, descriptive label so the live progress view shows the agent's role:
|
package/dist/bundled-plugins/awa-bundled/skills/diagnose/references/layout-jump-decision-table.md
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Layout Jump Decision Table
|
|
2
|
+
|
|
3
|
+
Consult this reference when a bug report mentions **jump**, **gap**, **shift**, **pop**, **reflow**, or **flicker** in a UI context (TUI, web, or desktop). These keywords warrant checking layout behavior; they do not establish a single root cause or remedy.
|
|
4
|
+
|
|
5
|
+
## Core invariant
|
|
6
|
+
|
|
7
|
+
First establish the intended layout contract and inspect the element's existing layout footprint:
|
|
8
|
+
|
|
9
|
+
- **Intended overlay** (e.g. a floating toast or modal): it should not displace siblings. Absolute/fixed positioning and layering can be appropriate; do not reserve in-flow space merely because the overlay appears dynamically.
|
|
10
|
+
- **Intentional expansion/collapse** (e.g. an accordion or expanding sidebar): sibling movement may be expected. Verify the intended transition rather than forcing a permanently reserved box.
|
|
11
|
+
- **Stable in-flow footprint** (e.g. a mascot bar or loading slot whose siblings should stay put): if insertion/removal or resizing changes that footprint, **reserve space before reveal, not after**. If the element already retains its in-flow footprint, investigate another cause (e.g. changing dimensions, margins, or ancestor layout) rather than adding a redundant placeholder.
|
|
12
|
+
|
|
13
|
+
The decision table below applies to unintended shifts where a stable in-flow footprint is required.
|
|
14
|
+
|
|
15
|
+
## Signal keywords
|
|
16
|
+
|
|
17
|
+
| Keyword | Example report phrasing |
|
|
18
|
+
|---------|------------------------|
|
|
19
|
+
| jump | "the input area jumps up" |
|
|
20
|
+
| gap | "there's a gap when X appears" |
|
|
21
|
+
| shift | "content shifts down when the banner loads" |
|
|
22
|
+
| pop | "the element pops in and pushes everything" |
|
|
23
|
+
| reflow | "reflow when toggling the sidebar" |
|
|
24
|
+
| flicker | "layout flickers on mount" |
|
|
25
|
+
|
|
26
|
+
## Decision table
|
|
27
|
+
|
|
28
|
+
| Symptom | Root cause | Fix strategy | Anti-pattern to avoid |
|
|
29
|
+
|---------|-----------|-------------|----------------------|
|
|
30
|
+
| Element appears and displaces siblings | Conditional render inserts new layout space | Reserve space with hidden/opacity-zero placeholder; toggle visibility, not existence | Using z-index/absolute positioning instead of preserving the required in-flow footprint (not an exclusion for intended overlays); animation-delay |
|
|
31
|
+
| Element disappears and siblings collapse | Conditional render removes layout space | Keep element in DOM with `visibility: hidden` or `opacity: 0`; preserve its layout box | Removing from DOM and re-inserting |
|
|
32
|
+
| Element animates in and causes reflow | Height/width transition from 0 triggers layout recalc | Reserve full space in a fixed-size wrapper; animate content within it using `transform: scale` or `opacity` | Animating `height`/`width`/`max-height` from 0 (all change the layout box) |
|
|
33
|
+
| Content shifts after async load | Placeholder absent during fetch; content insertion changes layout | Reserve exact or minimum dimensions before content arrives | Rendering nothing then inserting loaded content |
|
|
34
|
+
| Show/hide toggle causes jump per cycle | Each toggle adds/removes layout participation | Toggle `opacity` or `visibility`, not `display: none`/DOM presence | Conditional rendering (`if`/`v-if`/ternary) that adds/removes nodes |
|
|
35
|
+
|
|
36
|
+
## Verification
|
|
37
|
+
|
|
38
|
+
For the stable in-flow footprint remedy, a fix is valid when:
|
|
39
|
+
|
|
40
|
+
1. The target element can cycle through every show/hide state without unintended sibling movement
|
|
41
|
+
2. The reserved in-flow footprint remains stable during the visibility transition, even if content inside the wrapper mounts/unmounts
|
|
42
|
+
3. The fix survives fast repeated toggles (no transient jump on race conditions)
|
|
43
|
+
|
|
44
|
+
For intended overlays or intentional expansion/collapse, verify the declared layout contract instead: overlays do not displace siblings; expansion/collapse produces only the intended movement, including under fast repeated toggles.
|
|
45
|
+
|
|
46
|
+
## Falsifier
|
|
47
|
+
|
|
48
|
+
The reservation diagnosis is wrong for a stable in-flow case if the jump is fixed durably without stabilizing a changing footprint and does not recur under repeated show/hide cycles. Intended overlays, intentional expansion/collapse, and elements that already retain their in-flow footprint do not establish a need for additional space reservation.
|
|
49
|
+
|
|
50
|
+
## Provenance
|
|
51
|
+
|
|
52
|
+
Derived from pattern card `layout-jumps-caused-by-dynamic-element-insertion-a-2026-10-04t21-54-24-831` (session `1d6cf0de`, score 26/35, status: operational). Original fix: opacity-toggle reservation for mascot-bar vertical jump in Goblin Portal TUI.
|
|
@@ -11,6 +11,7 @@ import type { ProgressEvent } from '../../agent/types.js';
|
|
|
11
11
|
import { type TtfbTickCtx } from './stream-renderer-ttfb.js';
|
|
12
12
|
export declare const WAITING_LABEL_PREFIX = " \u00B7 waiting ";
|
|
13
13
|
export declare const AWAITING_LABEL_PREFIX = " \u00B7 awaiting ";
|
|
14
|
+
export declare const THINKING_GRACE_MS = 2000;
|
|
14
15
|
export interface LifecycleContext extends TtfbTickCtx {
|
|
15
16
|
compositor: TerminalCompositor | null;
|
|
16
17
|
overlayComposer: OverlayComposer | null;
|
|
@@ -26,6 +27,7 @@ export interface LifecycleContext extends TtfbTickCtx {
|
|
|
26
27
|
sources: Map<string, SourceState>;
|
|
27
28
|
pauseTickInterval: ReturnType<typeof setInterval> | null;
|
|
28
29
|
resizeUnsub: (() => void) | null;
|
|
30
|
+
lastThinkingAnnotation: string;
|
|
29
31
|
}
|
|
30
32
|
export declare function registerOverlaySlots(overlayComposer: OverlayComposer, ctx: Readonly<Pick<LifecycleContext, 'stageTracker' | 'thinkingMode' | 'thinkingLane' | 'streamingMarkdownRef' | 'toolLane' | 'lastProgressByTask'>> & {
|
|
31
33
|
sources?: ReadonlyMap<string, SourceState>;
|
|
@@ -36,3 +38,4 @@ export declare function registerOverlaySlots(overlayComposer: OverlayComposer, c
|
|
|
36
38
|
export declare function formatInterruptAffordance(interrupting: boolean): string;
|
|
37
39
|
export declare function subscribeToResize(overlayComposer: OverlayComposer, disposed: boolean): () => void;
|
|
38
40
|
export declare function checkPauseAnnotations(ctx: LifecycleContext): boolean;
|
|
41
|
+
export declare function checkThinkingAnnotation(ctx: LifecycleContext, _now: number): boolean;
|
|
@@ -44,6 +44,7 @@ export declare class StreamRenderer {
|
|
|
44
44
|
private readonly ttfbStartedAt;
|
|
45
45
|
private ttfbDone;
|
|
46
46
|
private lastTtfbAnnotation;
|
|
47
|
+
private lastThinkingAnnotation;
|
|
47
48
|
private readonly addPreviewDiffRef;
|
|
48
49
|
private completionWriter;
|
|
49
50
|
readonly sink: (event: OutputEvent, meta?: SubagentProgressMeta) => void;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
type ErrorKind = 'auth' | 'rate_limit' | 'usage_limit' | 'overloaded' | 'budget_exceeded' | 'unsupported_config' | 'hook_blocked' | 'timeout' | 'network' | 'not_git_repo' | 'unknown';
|
|
1
|
+
type ErrorKind = 'auth' | 'rate_limit' | 'usage_limit' | 'overloaded' | 'budget_exceeded' | 'unsupported_config' | 'hook_blocked' | 'timeout' | 'network' | 'not_git_repo' | 'daemon_already_running' | 'unknown';
|
|
2
2
|
export interface ClassifiedError {
|
|
3
3
|
kind: ErrorKind;
|
|
4
4
|
userMessage: string;
|