@kvman/kvcoder 0.1.10 → 0.1.12
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/api.d.ts +48 -2
- package/dist/api.d.ts.map +1 -1
- package/dist/calls/call-name.d.ts +8 -0
- package/dist/calls/call-name.d.ts.map +1 -0
- package/dist/calls/call-name.js +47 -0
- package/dist/calls/call-name.js.map +1 -0
- package/dist/calls/line-run.d.ts +1 -4
- package/dist/calls/line-run.d.ts.map +1 -1
- package/dist/calls/line-run.js +2 -2
- package/dist/calls/line-run.js.map +1 -1
- package/dist/calls/run-tool.d.ts +1 -6
- package/dist/calls/run-tool.d.ts.map +1 -1
- package/dist/calls/run-tool.js +5 -6
- package/dist/calls/run-tool.js.map +1 -1
- package/dist/connector-call.d.ts +3 -3
- package/dist/connector-call.d.ts.map +1 -1
- package/dist/connector-call.js +5 -3
- package/dist/connector-call.js.map +1 -1
- package/dist/connectors/artifact.d.ts +2 -1
- package/dist/connectors/artifact.d.ts.map +1 -1
- package/dist/connectors/artifact.js +1 -1
- package/dist/connectors/artifact.js.map +1 -1
- package/dist/connectors/background.d.ts.map +1 -1
- package/dist/connectors/background.js +17 -7
- package/dist/connectors/background.js.map +1 -1
- package/dist/connectors/binary.js +2 -2
- package/dist/connectors/binary.js.map +1 -1
- package/dist/connectors/builtin-connectors.d.ts +62 -2
- package/dist/connectors/builtin-connectors.d.ts.map +1 -1
- package/dist/connectors/builtin-connectors.js +4 -1
- package/dist/connectors/builtin-connectors.js.map +1 -1
- package/dist/connectors/connector-command.d.ts +0 -1
- package/dist/connectors/connector-command.d.ts.map +1 -1
- package/dist/connectors/connector-command.js +1 -1
- package/dist/connectors/connector-command.js.map +1 -1
- package/dist/connectors/delegate.d.ts +17 -0
- package/dist/connectors/delegate.d.ts.map +1 -1
- package/dist/connectors/delegate.js +31 -6
- package/dist/connectors/delegate.js.map +1 -1
- package/dist/connectors/execution-map.d.ts +14 -3
- package/dist/connectors/execution-map.d.ts.map +1 -1
- package/dist/connectors/execution-map.js +43 -12
- package/dist/connectors/execution-map.js.map +1 -1
- package/dist/connectors/fs.d.ts +29 -1
- package/dist/connectors/fs.d.ts.map +1 -1
- package/dist/connectors/fs.js +46 -9
- package/dist/connectors/fs.js.map +1 -1
- package/dist/connectors/payload-fields.d.ts +3 -0
- package/dist/connectors/payload-fields.d.ts.map +1 -1
- package/dist/connectors/payload-fields.js +8 -2
- package/dist/connectors/payload-fields.js.map +1 -1
- package/dist/connectors/shell.js +1 -1
- package/dist/connectors/shell.js.map +1 -1
- package/dist/connectors/web.d.ts +16 -0
- package/dist/connectors/web.d.ts.map +1 -0
- package/dist/connectors/web.js +22 -0
- package/dist/connectors/web.js.map +1 -0
- package/dist/delegate/approved-run.js +2 -2
- package/dist/delegate/approved-run.js.map +1 -1
- package/dist/delegate/continue-helper.d.ts +18 -0
- package/dist/delegate/continue-helper.d.ts.map +1 -0
- package/dist/delegate/continue-helper.js +64 -0
- package/dist/delegate/continue-helper.js.map +1 -0
- package/dist/delegate/permission.d.ts +11 -5
- package/dist/delegate/permission.d.ts.map +1 -1
- package/dist/delegate/runs.d.ts +9 -11
- package/dist/delegate/runs.d.ts.map +1 -1
- package/dist/delegate/runs.js +13 -9
- package/dist/delegate/runs.js.map +1 -1
- package/dist/delegate/workers.d.ts +6 -0
- package/dist/delegate/workers.d.ts.map +1 -1
- package/dist/files/change-diff.d.ts +17 -0
- package/dist/files/change-diff.d.ts.map +1 -0
- package/dist/files/change-diff.js +59 -0
- package/dist/files/change-diff.js.map +1 -0
- package/dist/files/edit-places.d.ts +11 -0
- package/dist/files/edit-places.d.ts.map +1 -0
- package/dist/files/edit-places.js +105 -0
- package/dist/files/edit-places.js.map +1 -0
- package/dist/files/edit-text.d.ts +1 -0
- package/dist/files/edit-text.d.ts.map +1 -1
- package/dist/files/edit-text.js +22 -10
- package/dist/files/edit-text.js.map +1 -1
- package/dist/files/file-change.d.ts.map +1 -1
- package/dist/files/file-change.js +12 -0
- package/dist/files/file-change.js.map +1 -1
- package/dist/files/find-paths.d.ts +9 -0
- package/dist/files/find-paths.d.ts.map +1 -0
- package/dist/files/find-paths.js +38 -0
- package/dist/files/find-paths.js.map +1 -0
- package/dist/files/read-file.d.ts +3 -1
- package/dist/files/read-file.d.ts.map +1 -1
- package/dist/files/read-file.js +7 -6
- package/dist/files/read-file.js.map +1 -1
- package/dist/files/read-files.d.ts +11 -0
- package/dist/files/read-files.d.ts.map +1 -0
- package/dist/files/read-files.js +35 -0
- package/dist/files/read-files.js.map +1 -0
- package/dist/files/read-text.d.ts +63 -0
- package/dist/files/read-text.d.ts.map +1 -0
- package/dist/files/read-text.js +67 -0
- package/dist/files/read-text.js.map +1 -0
- package/dist/files/register-changes.d.ts +3 -0
- package/dist/files/register-changes.d.ts.map +1 -0
- package/dist/files/register-changes.js +78 -0
- package/dist/files/register-changes.js.map +1 -0
- package/dist/files/search-text.d.ts +10 -1
- package/dist/files/search-text.d.ts.map +1 -1
- package/dist/files/search-text.js +32 -57
- package/dist/files/search-text.js.map +1 -1
- package/dist/files/workspace-files.d.ts +5 -0
- package/dist/files/workspace-files.d.ts.map +1 -0
- package/dist/files/workspace-files.js +66 -0
- package/dist/files/workspace-files.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/jobs/helper-progress.d.ts +11 -0
- package/dist/jobs/helper-progress.d.ts.map +1 -0
- package/dist/jobs/helper-progress.js +38 -0
- package/dist/jobs/helper-progress.js.map +1 -0
- package/dist/jobs/job-rows.d.ts +3 -1
- package/dist/jobs/job-rows.d.ts.map +1 -1
- package/dist/jobs/job-rows.js +46 -22
- package/dist/jobs/job-rows.js.map +1 -1
- package/dist/jobs/process-report.d.ts +1 -1
- package/dist/jobs/process-report.d.ts.map +1 -1
- package/dist/jobs/process-report.js +11 -6
- package/dist/jobs/process-report.js.map +1 -1
- package/dist/jobs/process-run.d.ts +2 -5
- package/dist/jobs/process-run.d.ts.map +1 -1
- package/dist/jobs/process-run.js +6 -5
- package/dist/jobs/process-run.js.map +1 -1
- package/dist/jobs/register-jobs.js +3 -3
- package/dist/jobs/register-jobs.js.map +1 -1
- package/dist/maps/map-rules.d.ts +4 -2
- package/dist/maps/map-rules.d.ts.map +1 -1
- package/dist/maps/map-rules.js +7 -4
- package/dist/maps/map-rules.js.map +1 -1
- package/dist/maps/map-schema.d.ts +4 -4
- package/dist/maps/map-schema.d.ts.map +1 -1
- package/dist/maps/map-schema.js +10 -3
- package/dist/maps/map-schema.js.map +1 -1
- package/dist/prompt/build-prompt.d.ts +4 -0
- package/dist/prompt/build-prompt.d.ts.map +1 -1
- package/dist/prompt/build-prompt.js +8 -4
- package/dist/prompt/build-prompt.js.map +1 -1
- package/dist/prompt/person-preferences.d.ts +5 -0
- package/dist/prompt/person-preferences.d.ts.map +1 -0
- package/dist/prompt/person-preferences.js +14 -0
- package/dist/prompt/person-preferences.js.map +1 -0
- package/dist/prompt/session-grants.d.ts +7 -3
- package/dist/prompt/session-grants.d.ts.map +1 -1
- package/dist/prompt/session-grants.js +3 -2
- package/dist/prompt/session-grants.js.map +1 -1
- package/dist/prompt/session-prompt.d.ts.map +1 -1
- package/dist/prompt/session-prompt.js +15 -6
- package/dist/prompt/session-prompt.js.map +1 -1
- package/dist/prompt/working-method.d.ts +2 -2
- package/dist/prompt/working-method.d.ts.map +1 -1
- package/dist/prompt/working-method.js +51 -45
- package/dist/prompt/working-method.js.map +1 -1
- package/dist/register-settings.d.ts +27 -0
- package/dist/register-settings.d.ts.map +1 -1
- package/dist/register-settings.js +13 -0
- package/dist/register-settings.js.map +1 -1
- package/dist/schemas/approval-rule.d.ts +9 -0
- package/dist/schemas/approval-rule.d.ts.map +1 -0
- package/dist/schemas/approval-rule.js +7 -0
- package/dist/schemas/approval-rule.js.map +1 -0
- package/dist/schemas/check.d.ts +7 -0
- package/dist/schemas/check.d.ts.map +1 -0
- package/dist/schemas/check.js +9 -0
- package/dist/schemas/check.js.map +1 -0
- package/dist/schemas/records.d.ts +20 -6
- package/dist/schemas/records.d.ts.map +1 -1
- package/dist/schemas/records.js +15 -4
- package/dist/schemas/records.js.map +1 -1
- package/dist/sessions/new-session.d.ts.map +1 -1
- package/dist/sessions/new-session.js +8 -3
- package/dist/sessions/new-session.js.map +1 -1
- package/dist/sessions/register-fork-export.d.ts.map +1 -1
- package/dist/sessions/register-fork-export.js +3 -2
- package/dist/sessions/register-fork-export.js.map +1 -1
- package/dist/sessions/register-sessions.d.ts.map +1 -1
- package/dist/sessions/register-sessions.js +21 -10
- package/dist/sessions/register-sessions.js.map +1 -1
- package/dist/sessions/session-view.d.ts +10 -1
- package/dist/sessions/session-view.d.ts.map +1 -1
- package/dist/sessions/session-view.js +6 -1
- package/dist/sessions/session-view.js.map +1 -1
- package/dist/sessions/waiting-on.d.ts +7 -0
- package/dist/sessions/waiting-on.d.ts.map +1 -0
- package/dist/sessions/waiting-on.js +20 -0
- package/dist/sessions/waiting-on.js.map +1 -0
- package/dist/store/collections.d.ts +26 -8
- package/dist/store/collections.d.ts.map +1 -1
- package/dist/store/collections.js +3 -1
- package/dist/store/collections.js.map +1 -1
- package/dist/thinking-levels.d.ts +6 -0
- package/dist/thinking-levels.d.ts.map +1 -0
- package/dist/thinking-levels.js +13 -0
- package/dist/thinking-levels.js.map +1 -0
- package/dist/turns/answer-extras.d.ts +21 -0
- package/dist/turns/answer-extras.d.ts.map +1 -0
- package/dist/turns/answer-extras.js +43 -0
- package/dist/turns/answer-extras.js.map +1 -0
- package/dist/turns/answer-fingerprint.d.ts +6 -2
- package/dist/turns/answer-fingerprint.d.ts.map +1 -1
- package/dist/turns/answer-fingerprint.js +9 -3
- package/dist/turns/answer-fingerprint.js.map +1 -1
- package/dist/turns/apply-answer.d.ts +2 -1
- package/dist/turns/apply-answer.d.ts.map +1 -1
- package/dist/turns/apply-answer.js +10 -4
- package/dist/turns/apply-answer.js.map +1 -1
- package/dist/turns/approval-rules.d.ts +13 -0
- package/dist/turns/approval-rules.d.ts.map +1 -0
- package/dist/turns/approval-rules.js +65 -0
- package/dist/turns/approval-rules.js.map +1 -0
- package/dist/turns/cache-retention.d.ts +6 -0
- package/dist/turns/cache-retention.d.ts.map +1 -0
- package/dist/turns/cache-retention.js +7 -0
- package/dist/turns/cache-retention.js.map +1 -0
- package/dist/turns/call-results.d.ts +6 -0
- package/dist/turns/call-results.d.ts.map +1 -0
- package/dist/turns/call-results.js +21 -0
- package/dist/turns/call-results.js.map +1 -0
- package/dist/turns/check-after-edits.d.ts +8 -0
- package/dist/turns/check-after-edits.d.ts.map +1 -0
- package/dist/turns/check-after-edits.js +23 -0
- package/dist/turns/check-after-edits.js.map +1 -0
- package/dist/turns/child-result.d.ts.map +1 -1
- package/dist/turns/child-result.js +4 -2
- package/dist/turns/child-result.js.map +1 -1
- package/dist/turns/clear-results.d.ts +15 -0
- package/dist/turns/clear-results.d.ts.map +1 -0
- package/dist/turns/clear-results.js +58 -0
- package/dist/turns/clear-results.js.map +1 -0
- package/dist/turns/cleared-results.d.ts +17 -0
- package/dist/turns/cleared-results.d.ts.map +1 -0
- package/dist/turns/cleared-results.js +46 -0
- package/dist/turns/cleared-results.js.map +1 -0
- package/dist/turns/compaction.d.ts.map +1 -1
- package/dist/turns/compaction.js +8 -7
- package/dist/turns/compaction.js.map +1 -1
- package/dist/turns/end-turn-state.d.ts.map +1 -1
- package/dist/turns/end-turn-state.js +2 -0
- package/dist/turns/end-turn-state.js.map +1 -1
- package/dist/turns/ended-calls.d.ts +6 -0
- package/dist/turns/ended-calls.d.ts.map +1 -0
- package/dist/turns/ended-calls.js +43 -0
- package/dist/turns/ended-calls.js.map +1 -0
- package/dist/turns/file-results.d.ts +15 -0
- package/dist/turns/file-results.d.ts.map +1 -0
- package/dist/turns/file-results.js +39 -0
- package/dist/turns/file-results.js.map +1 -0
- package/dist/turns/lost-reply.js +2 -2
- package/dist/turns/lost-reply.js.map +1 -1
- package/dist/turns/model-context.d.ts +2 -0
- package/dist/turns/model-context.d.ts.map +1 -1
- package/dist/turns/model-context.js +41 -3
- package/dist/turns/model-context.js.map +1 -1
- package/dist/turns/model-info.d.ts +4 -0
- package/dist/turns/model-info.d.ts.map +1 -1
- package/dist/turns/model-info.js +7 -1
- package/dist/turns/model-info.js.map +1 -1
- package/dist/turns/model-retry.d.ts.map +1 -1
- package/dist/turns/model-retry.js +5 -4
- package/dist/turns/model-retry.js.map +1 -1
- package/dist/turns/read-again.d.ts +11 -5
- package/dist/turns/read-again.d.ts.map +1 -1
- package/dist/turns/read-again.js +39 -10
- package/dist/turns/read-again.js.map +1 -1
- package/dist/turns/register-turns.d.ts.map +1 -1
- package/dist/turns/register-turns.js +12 -4
- package/dist/turns/register-turns.js.map +1 -1
- package/dist/turns/run-calls.d.ts +4 -0
- package/dist/turns/run-calls.d.ts.map +1 -1
- package/dist/turns/run-calls.js +56 -10
- package/dist/turns/run-calls.js.map +1 -1
- package/dist/turns/run-command.d.ts.map +1 -1
- package/dist/turns/run-command.js +8 -10
- package/dist/turns/run-command.js.map +1 -1
- package/dist/turns/sent-size.d.ts +6 -2
- package/dist/turns/sent-size.d.ts.map +1 -1
- package/dist/turns/sent-size.js +8 -4
- package/dist/turns/sent-size.js.map +1 -1
- package/dist/turns/settle-calls.d.ts +1 -7
- package/dist/turns/settle-calls.d.ts.map +1 -1
- package/dist/turns/settle-calls.js +2 -19
- package/dist/turns/settle-calls.js.map +1 -1
- package/dist/turns/step.d.ts.map +1 -1
- package/dist/turns/step.js +68 -10
- package/dist/turns/step.js.map +1 -1
- package/dist/ui/register-ui.js +2 -2
- package/dist/ui/register-ui.js.map +1 -1
- package/dist/web/components/approval.css +1 -1
- package/dist/web/components/approval.js +122 -89
- package/dist/web/components/call.css +1 -1
- package/dist/web/components/call.js +431 -306
- package/dist/web/components/connectors.css +1 -1
- package/dist/web/components/connectors.js +553 -521
- package/dist/web/components/conversation.css +1 -1
- package/dist/web/components/conversation.js +2636 -1520
- package/dist/web/components/mcp-sign-in.css +1 -1
- package/dist/web/components/model.css +1 -1
- package/dist/web/components/model.js +140 -127
- package/dist/web/components/preferences.css +2 -0
- package/dist/web/components/preferences.js +151 -0
- package/dist/web/components/question.css +1 -1
- package/dist/web/components/sessions.css +1 -1
- package/dist/web/components/sessions.js +44 -21
- package/dist/web-fetch/fetch-page.d.ts +28 -0
- package/dist/web-fetch/fetch-page.d.ts.map +1 -0
- package/dist/web-fetch/fetch-page.js +108 -0
- package/dist/web-fetch/fetch-page.js.map +1 -0
- package/dist/web-fetch/private-address.d.ts +3 -0
- package/dist/web-fetch/private-address.d.ts.map +1 -0
- package/dist/web-fetch/private-address.js +69 -0
- package/dist/web-fetch/private-address.js.map +1 -0
- package/dist/web-fetch/web-hosts.d.ts +7 -0
- package/dist/web-fetch/web-hosts.d.ts.map +1 -0
- package/dist/web-fetch/web-hosts.js +19 -0
- package/dist/web-fetch/web-hosts.js.map +1 -0
- package/docs/connectors.md +5 -6
- package/locales/ar.json +81 -5
- package/locales/en.json +81 -5
- package/package.json +152 -6
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type Ctx, type Stored } from '@kvman/sdk';
|
|
2
|
+
import { type DelegateContinue } from '../connectors/delegate.ts';
|
|
3
|
+
import type { SessionDoc } from '../schemas/records.ts';
|
|
4
|
+
import type { StepLease } from '../turns/step-claim.ts';
|
|
5
|
+
import type { CreationGuard } from './permission.ts';
|
|
6
|
+
import { type SubagentWorker } from './workers.ts';
|
|
7
|
+
/** The ended helper `id` of the chat, with its worker as the list has it now; a Problem for anything else. */
|
|
8
|
+
export declare function continuableHelper(ctx: Ctx, sessionId: string, id: string): Promise<{
|
|
9
|
+
child: Stored<SessionDoc>;
|
|
10
|
+
worker: SubagentWorker;
|
|
11
|
+
}>;
|
|
12
|
+
export declare function registerContinueCheck(ctx: Ctx): void;
|
|
13
|
+
/**
|
|
14
|
+
* Gives the helper its message, in the transaction that checks the originating step and the grants again; with
|
|
15
|
+
* `background`, the chat also records it as a background run, or starts the record over when it already has one.
|
|
16
|
+
*/
|
|
17
|
+
export declare function messageHelper(ctx: Ctx, lease: StepLease, request: DelegateContinue, guard: CreationGuard): Promise<boolean>;
|
|
18
|
+
//# sourceMappingURL=continue-helper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"continue-helper.d.ts","sourceRoot":"","sources":["../../src/delegate/continue-helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAK,KAAK,GAAG,EAAE,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AAEtD,OAAO,EAA4C,KAAK,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE5G,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAKxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAA8B,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAK/E,8GAA8G;AAC9G,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IAAC,MAAM,EAAE,cAAc,CAAA;CAAE,CAAC,CAU/I;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAWpD;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAejI"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { z } from '@kvman/sdk';
|
|
2
|
+
import { callInput } from "../connectors/connector-command.js";
|
|
3
|
+
import { delegateCommands, delegateContinueSchema } from "../connectors/delegate.js";
|
|
4
|
+
import { invalid } from "../problems.js";
|
|
5
|
+
import { now } from "../sessions/session-lookup.js";
|
|
6
|
+
import { records, txRecords } from "../store/collections.js";
|
|
7
|
+
import { appendMessage, userContent } from "../turns/history.js";
|
|
8
|
+
import { liveStep } from "../turns/step-intents.js";
|
|
9
|
+
import { availableWorker, isProgram } from "./workers.js";
|
|
10
|
+
// `delegate continue` (plan 08 §8.5, ADR 0085, 4): a follow-up to an ended subagent helper of this chat, which goes on
|
|
11
|
+
// with its own history, worker, instructions, model, and thinking. Its check refuses what can't be continued.
|
|
12
|
+
/** The ended helper `id` of the chat, with its worker as the list has it now; a Problem for anything else. */
|
|
13
|
+
export async function continuableHelper(ctx, sessionId, id) {
|
|
14
|
+
const store = records(ctx.store);
|
|
15
|
+
const run = await store.runs.get(id);
|
|
16
|
+
if (run?.sessionId === sessionId)
|
|
17
|
+
throw invalid(`${id} is a program worker's run; only a subagent helper can be continued.`, { id });
|
|
18
|
+
const [parent, child] = await Promise.all([store.sessions.get(sessionId), store.sessions.get(id)]);
|
|
19
|
+
if (child?.parentId !== sessionId || child.worker === null)
|
|
20
|
+
throw ctx.problem('kvcoder/JOB_NOT_FOUND', { sessionId, id });
|
|
21
|
+
if (child.status !== 'idle' || child.turnId !== null)
|
|
22
|
+
throw invalid(`The helper ${id} is still working; wait for it or stop it, then continue it.`, { id });
|
|
23
|
+
const worker = await availableWorker(ctx, parent?.checks ?? null, child.worker.name);
|
|
24
|
+
if (isProgram(worker))
|
|
25
|
+
throw invalid(`${id} is a program worker's run; only a subagent helper can be continued.`, { id });
|
|
26
|
+
return { child, worker };
|
|
27
|
+
}
|
|
28
|
+
export function registerContinueCheck(ctx) {
|
|
29
|
+
ctx.registerCommand('kvcoder.delegate.continue.check', {
|
|
30
|
+
description: delegateCommands.continue.description,
|
|
31
|
+
input: callInput(delegateContinueSchema),
|
|
32
|
+
output: z.object({}),
|
|
33
|
+
retries: 0,
|
|
34
|
+
handle: async ({ sessionId, payload }) => {
|
|
35
|
+
await continuableHelper(ctx, sessionId, payload.id);
|
|
36
|
+
return {};
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Gives the helper its message, in the transaction that checks the originating step and the grants again; with
|
|
42
|
+
* `background`, the chat also records it as a background run, or starts the record over when it already has one.
|
|
43
|
+
*/
|
|
44
|
+
export async function messageHelper(ctx, lease, request, guard) {
|
|
45
|
+
return ctx.store.transaction((tx) => {
|
|
46
|
+
const store = txRecords(tx);
|
|
47
|
+
const parent = guard(store);
|
|
48
|
+
const child = store.sessions.get(request.id);
|
|
49
|
+
if (child?.parentId !== parent.id || child.status !== 'idle' || child.turnId !== null)
|
|
50
|
+
throw invalid(`The helper ${request.id} can no longer be continued.`, { id: request.id });
|
|
51
|
+
if (request.background === true) {
|
|
52
|
+
if (liveStep(store, lease, lease.jobId) === undefined)
|
|
53
|
+
return false;
|
|
54
|
+
const [entry] = store.background.find({ sessionId: parent.id, ref: child.id }, { limit: 1 });
|
|
55
|
+
if (entry === undefined)
|
|
56
|
+
store.background.insert({ sessionId: parent.id, ref: child.id, kind: 'subagent', call: child.title, startedAt: now() });
|
|
57
|
+
else
|
|
58
|
+
store.background.update(entry.id, { startedAt: now() });
|
|
59
|
+
}
|
|
60
|
+
appendMessage(store, child, { kind: 'user', content: userContent(request.message), source: { kind: 'subagent', sessionId: parent.id } });
|
|
61
|
+
return true;
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=continue-helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"continue-helper.js","sourceRoot":"","sources":["../../src/delegate/continue-helper.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,7 +24,10 @@ export declare function waitingInTx(store: TxRecords, authority: PendingAuthorit
|
|
|
24
24
|
readOnly: boolean;
|
|
25
25
|
} | null;
|
|
26
26
|
model: string | null;
|
|
27
|
-
thinking: "off" | "minimal" | "low" | "medium" | "high";
|
|
27
|
+
thinking: "off" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max";
|
|
28
|
+
decides: boolean;
|
|
29
|
+
clearedThroughSeq: number | null;
|
|
30
|
+
webHosts: string[];
|
|
28
31
|
usageBy: {
|
|
29
32
|
summary: {
|
|
30
33
|
input: number;
|
|
@@ -105,10 +108,10 @@ export declare function waitingInTx(store: TxRecords, authority: PendingAuthorit
|
|
|
105
108
|
details: import("zod").JSONType;
|
|
106
109
|
isError: boolean;
|
|
107
110
|
run: {
|
|
108
|
-
description: string;
|
|
109
111
|
connector: string;
|
|
110
112
|
command: string;
|
|
111
113
|
payload: Record<string, import("zod").JSONType>;
|
|
114
|
+
description?: string;
|
|
112
115
|
} | {
|
|
113
116
|
command: string;
|
|
114
117
|
timeoutMs: number;
|
|
@@ -117,10 +120,10 @@ export declare function waitingInTx(store: TxRecords, authority: PendingAuthorit
|
|
|
117
120
|
deferredCalls: {
|
|
118
121
|
toolCallId: string;
|
|
119
122
|
call: {
|
|
120
|
-
description: string;
|
|
121
123
|
connector: string;
|
|
122
124
|
command: string;
|
|
123
125
|
payload: Record<string, import("zod").JSONType>;
|
|
126
|
+
description?: string;
|
|
124
127
|
};
|
|
125
128
|
}[];
|
|
126
129
|
}>;
|
|
@@ -141,7 +144,10 @@ export declare function delegationInTx(store: TxRecords, sessionId: string, prep
|
|
|
141
144
|
readOnly: boolean;
|
|
142
145
|
} | null;
|
|
143
146
|
model: string | null;
|
|
144
|
-
thinking: "off" | "minimal" | "low" | "medium" | "high";
|
|
147
|
+
thinking: "off" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max";
|
|
148
|
+
decides: boolean;
|
|
149
|
+
clearedThroughSeq: number | null;
|
|
150
|
+
webHosts: string[];
|
|
145
151
|
usageBy: {
|
|
146
152
|
summary: {
|
|
147
153
|
input: number;
|
|
@@ -215,7 +221,7 @@ export declare function delegationInTx(store: TxRecords, sessionId: string, prep
|
|
|
215
221
|
readOnly: boolean;
|
|
216
222
|
connectors: string[] | null;
|
|
217
223
|
model: string | null;
|
|
218
|
-
thinking: "off" | "minimal" | "low" | "medium" | "high" | null;
|
|
224
|
+
thinking: "off" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max" | null;
|
|
219
225
|
name: string;
|
|
220
226
|
description: string;
|
|
221
227
|
enabled: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permission.d.ts","sourceRoot":"","sources":["../../src/delegate/permission.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,KAAK,GAAG,EAAE,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AAGjE,OAAO,EAA6B,KAAK,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/F,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEzE,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAIpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,SAAS,KAAK,MAAM,CAAC,UAAU,CAAC,CAAC;AACrE,MAAM,MAAM,gBAAgB,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC;AAEvF,6FAA6F;AAC7F,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB
|
|
1
|
+
{"version":3,"file":"permission.d.ts","sourceRoot":"","sources":["../../src/delegate/permission.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,KAAK,GAAG,EAAE,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AAGjE,OAAO,EAA6B,KAAK,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/F,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEzE,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAIpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,SAAS,KAAK,MAAM,CAAC,UAAU,CAAC,CAAC;AACrE,MAAM,MAAM,gBAAgB,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC;AAEvF,6FAA6F;AAC7F,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAQxE;AAED,4FAA4F;AAC5F,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,gBAAgB,GAAG,SAAS,CAOpG;AAED,6GAA6G;AAC7G,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYlI;AAED,0GAA0G;AAC1G,wBAAsB,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAStG;AAED,iGAAiG;AACjG,wBAAsB,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAUtH"}
|
package/dist/delegate/runs.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Ctx, Stored } from '@kvman/sdk';
|
|
2
|
+
import type { DelegateRun } from '../connectors/delegate.ts';
|
|
2
3
|
import type { HeldResult, RunDoc, RunStaging } from '../schemas/records.ts';
|
|
3
4
|
import { type TxRecords } from '../store/collections.ts';
|
|
4
5
|
import { type CreationGuard } from './permission.ts';
|
|
@@ -10,15 +11,9 @@ export type RunEnd = {
|
|
|
10
11
|
isError: boolean;
|
|
11
12
|
staging?: RunStaging;
|
|
12
13
|
};
|
|
13
|
-
/** Records a run of `worker` on `task
|
|
14
|
-
export declare function recordRun(store: TxRecords, sessionId: string, worker: ProgramWorker,
|
|
15
|
-
|
|
16
|
-
task: string;
|
|
17
|
-
}, toolCallId: string | null): Stored<RunDoc>;
|
|
18
|
-
export declare function createRun(ctx: Ctx, sessionId: string, worker: ProgramWorker, call: {
|
|
19
|
-
description: string;
|
|
20
|
-
task: string;
|
|
21
|
-
}, toolCallId: string | null, guard: CreationGuard): Promise<Stored<RunDoc>>;
|
|
14
|
+
/** Records a run of `worker` on `task`, named by its title (ADR 0089, 1); `toolCallId` is the call that waits on it, or `null` for a background run. */
|
|
15
|
+
export declare function recordRun(store: TxRecords, sessionId: string, worker: ProgramWorker, run: Pick<DelegateRun, 'title' | 'task'>, toolCallId: string | null): Stored<RunDoc>;
|
|
16
|
+
export declare function createRun(ctx: Ctx, sessionId: string, worker: ProgramWorker, run: Pick<DelegateRun, 'title' | 'task'>, toolCallId: string | null, guard: CreationGuard): Promise<Stored<RunDoc>>;
|
|
22
17
|
/** Queues the job that runs a recorded run. */
|
|
23
18
|
export declare function launchRun(ctx: Ctx, runId: string, guard: CreationGuard): Promise<void>;
|
|
24
19
|
/**
|
|
@@ -26,8 +21,11 @@ export declare function launchRun(ctx: Ctx, runId: string, guard: CreationGuard)
|
|
|
26
21
|
* as a background message, which may start a turn.
|
|
27
22
|
*/
|
|
28
23
|
export declare function finishRun(ctx: Ctx, runId: string, end: RunEnd, startTurn: boolean): Promise<boolean>;
|
|
29
|
-
/**
|
|
30
|
-
|
|
24
|
+
/**
|
|
25
|
+
* Stops a run for the agent or the person: its result is that it was stopped (ADR 0021, 34). The agent's own stop tells
|
|
26
|
+
* the chat nothing more, since its result says so (ADR 0085, 5). `false` for one that had ended.
|
|
27
|
+
*/
|
|
28
|
+
export declare function stopRun(ctx: Ctx, run: Stored<RunDoc>, by: 'agent' | 'person'): Promise<boolean>;
|
|
31
29
|
/** Stops a run whose turn or chat is going away: nothing is told to anyone. */
|
|
32
30
|
export declare function dropRun(ctx: Ctx, run: Stored<RunDoc>): Promise<void>;
|
|
33
31
|
/** Stops every run a session still has going, and forgets all of them (the chat is deleted). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runs.d.ts","sourceRoot":"","sources":["../../src/delegate/runs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAE5E,OAAO,EAAsB,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAMvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAMlD,MAAM,MAAM,MAAM,GAAG;IAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,UAAU,CAAA;CAAE,CAAC;AAErJ,
|
|
1
|
+
{"version":3,"file":"runs.d.ts","sourceRoot":"","sources":["../../src/delegate/runs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAE5E,OAAO,EAAsB,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAMvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAMlD,MAAM,MAAM,MAAM,GAAG;IAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,UAAU,CAAA;CAAE,CAAC;AAErJ,wJAAwJ;AACxJ,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,GAAG,MAAM,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAGzK;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,GAAG,MAAM,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAMtM;AAED,+CAA+C;AAC/C,wBAAsB,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ5F;AAiBD;;;GAGG;AACH,wBAAsB,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAc1G;AAOD;;;GAGG;AACH,wBAAsB,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAKrG;AAED,+EAA+E;AAC/E,wBAAsB,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAE1E;AAED,gGAAgG;AAChG,wBAAsB,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMzE;AAED,kDAAkD;AAClD,eAAO,MAAM,UAAU,GAAI,YAAY,MAAM,EAAE,MAAM,MAAM,KAAG,UAA8C,CAAC"}
|
package/dist/delegate/runs.js
CHANGED
|
@@ -6,16 +6,16 @@ import { appendBackgroundInTx, backgroundText } from "../turns/background.js";
|
|
|
6
6
|
import { heldText, resolvePendingInTx } from "../turns/resolve.js";
|
|
7
7
|
import { beginTurn, dispatchStep } from "../turns/start-turn.js";
|
|
8
8
|
import { commandLine } from "./programs.js";
|
|
9
|
-
/** Records a run of `worker` on `task
|
|
10
|
-
export function recordRun(store, sessionId, worker,
|
|
11
|
-
const line = commandLine(worker,
|
|
12
|
-
return store.runs.insert({ sessionId, toolCallId, worker: worker.name, kind: worker.kind, call:
|
|
9
|
+
/** Records a run of `worker` on `task`, named by its title (ADR 0089, 1); `toolCallId` is the call that waits on it, or `null` for a background run. */
|
|
10
|
+
export function recordRun(store, sessionId, worker, run, toolCallId) {
|
|
11
|
+
const line = commandLine(worker, run.task);
|
|
12
|
+
return store.runs.insert({ sessionId, toolCallId, worker: worker.name, kind: worker.kind, call: run.title, command: line.command, args: line.args, timeoutMs: worker.timeoutMs, jobId: null, status: 'running', startedAt: now(), endedAt: null, exitCode: null, output: null, staging: null });
|
|
13
13
|
}
|
|
14
|
-
export async function createRun(ctx, sessionId, worker,
|
|
14
|
+
export async function createRun(ctx, sessionId, worker, run, toolCallId, guard) {
|
|
15
15
|
return ctx.store.transaction(tx => {
|
|
16
16
|
const store = txRecords(tx);
|
|
17
17
|
guard(store);
|
|
18
|
-
return recordRun(store, sessionId, worker,
|
|
18
|
+
return recordRun(store, sessionId, worker, run, toolCallId);
|
|
19
19
|
});
|
|
20
20
|
}
|
|
21
21
|
/** Queues the job that runs a recorded run. */
|
|
@@ -73,9 +73,13 @@ async function cancelJobOf(ctx, run) {
|
|
|
73
73
|
if (jobId !== null)
|
|
74
74
|
await ctx.cancel(jobId);
|
|
75
75
|
}
|
|
76
|
-
/**
|
|
77
|
-
|
|
78
|
-
|
|
76
|
+
/**
|
|
77
|
+
* Stops a run for the agent or the person: its result is that it was stopped (ADR 0021, 34). The agent's own stop tells
|
|
78
|
+
* the chat nothing more, since its result says so (ADR 0085, 5). `false` for one that had ended.
|
|
79
|
+
*/
|
|
80
|
+
export async function stopRun(ctx, run, by) {
|
|
81
|
+
const end = { status: 'cancelled', exitCode: null, text: `${run.worker} was stopped`, isError: true };
|
|
82
|
+
const stopped = by === 'person' ? await finishRun(ctx, run.id, end, false) : await markEnded(ctx, run.id, end);
|
|
79
83
|
if (stopped)
|
|
80
84
|
await cancelJobOf(ctx, run);
|
|
81
85
|
return stopped;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runs.js","sourceRoot":"","sources":["../../src/delegate/runs.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runs.js","sourceRoot":"","sources":["../../src/delegate/runs.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,8 @@ export declare const subagentWorkerSchema: z.ZodObject<{
|
|
|
11
11
|
low: "low";
|
|
12
12
|
medium: "medium";
|
|
13
13
|
high: "high";
|
|
14
|
+
xhigh: "xhigh";
|
|
15
|
+
max: "max";
|
|
14
16
|
}>>;
|
|
15
17
|
name: z.ZodString;
|
|
16
18
|
description: z.ZodString;
|
|
@@ -96,6 +98,8 @@ export declare const workerSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
96
98
|
low: "low";
|
|
97
99
|
medium: "medium";
|
|
98
100
|
high: "high";
|
|
101
|
+
xhigh: "xhigh";
|
|
102
|
+
max: "max";
|
|
99
103
|
}>>;
|
|
100
104
|
name: z.ZodString;
|
|
101
105
|
description: z.ZodString;
|
|
@@ -176,6 +180,8 @@ export declare const workersSchema: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObj
|
|
|
176
180
|
low: "low";
|
|
177
181
|
medium: "medium";
|
|
178
182
|
high: "high";
|
|
183
|
+
xhigh: "xhigh";
|
|
184
|
+
max: "max";
|
|
179
185
|
}>>;
|
|
180
186
|
name: z.ZodString;
|
|
181
187
|
description: z.ZodString;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workers.d.ts","sourceRoot":"","sources":["../../src/delegate/workers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,CAAC,EAAE,KAAK,GAAG,EAAE,MAAM,YAAY,CAAC;AAkBvD,uLAAuL;AACvL,eAAO,MAAM,oBAAoB
|
|
1
|
+
{"version":3,"file":"workers.d.ts","sourceRoot":"","sources":["../../src/delegate/workers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,CAAC,EAAE,KAAK,GAAG,EAAE,MAAM,YAAY,CAAC;AAkBvD,uLAAuL;AACvL,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;kBAAyN,CAAC;AAW3P,4EAA4E;AAC5E,eAAO,MAAM,YAAY,EAAE,SAAS,MAAM,EAA6C,CAAC;AAExF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;kBAAmM,CAAC;AACrO,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;kBAA6M,CAAC;AACzO,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;kBAM8E,CAAC;AAE9G,4FAA4F;AAC5F,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAAiH,CAAC;AAE3I,4EAA4E;AAC5E,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAAsJ,CAAC;AAEjL,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,YAAY,CAAC,CAAC;AACnD,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACnE,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAE5D,uDAAuD;AACvD,eAAO,MAAM,SAAS,GAAI,QAAQ,MAAM,KAAG,MAAM,IAAI,aAA2C,CAAC;AAEjG,qFAAqF;AACrF,eAAO,MAAM,eAAe,GAAI,MAAM,MAAM,KAAG,MAA0B,CAAC;AA4C1E,gKAAgK;AAChK,eAAO,MAAM,cAAc,EAAE,cAAc,EAM1C,CAAC;AAEF,kEAAkE;AAClE,wBAAsB,aAAa,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAE/D;AAED,KAAK,MAAM,GAAG,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,EAAE,GAAG,IAAI,CAAC;AAElE,0GAA0G;AAC1G,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAGlF;AAMD,6FAA6F;AAC7F,wBAAsB,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAK7F;AAED,wDAAwD;AACxD,wBAAsB,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAK1E"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export type FileState = 'changed' | 'created' | 'deleted';
|
|
2
|
+
export type FileDiff = {
|
|
3
|
+
added: number;
|
|
4
|
+
removed: number;
|
|
5
|
+
diff: string;
|
|
6
|
+
};
|
|
7
|
+
/** Git in the workspace folder: its exit code and output, or `undefined` when Git can't be run at all. */
|
|
8
|
+
export type Git = (args: readonly string[]) => Promise<{
|
|
9
|
+
code: number;
|
|
10
|
+
out: string;
|
|
11
|
+
} | undefined>;
|
|
12
|
+
export declare function gitIn(cwd: string, signal: AbortSignal): Git;
|
|
13
|
+
/** The file's change against `HEAD`. */
|
|
14
|
+
export declare function headDiff(git: Git, shown: string): Promise<FileDiff | undefined>;
|
|
15
|
+
/** The file's change against an earlier copy (`null` for nothing): Git's `--no-index` exits 1 when they differ. */
|
|
16
|
+
export declare function copyDiff(git: Git, shown: string, real: string | undefined, earlier: Buffer | null): Promise<FileDiff | undefined>;
|
|
17
|
+
//# sourceMappingURL=change-diff.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"change-diff.d.ts","sourceRoot":"","sources":["../../src/files/change-diff.ts"],"names":[],"mappings":"AAYA,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAC1D,MAAM,MAAM,QAAQ,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAExE,0GAA0G;AAC1G,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,KAAK,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAC,CAAC;AAIlG,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,GAAG,CAY3D;AAcD,wCAAwC;AACxC,wBAAsB,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAGrF;AAED,mHAAmH;AACnH,wBAAsB,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAYvI"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { execFile } from 'node:child_process';
|
|
2
|
+
import { mkdtemp, rm, writeFile } from 'node:fs/promises';
|
|
3
|
+
import { tmpdir } from 'node:os';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import { promisify } from 'node:util';
|
|
6
|
+
// The diff of one file a chat changed (plan 08 §8.6, ADR 0093, 2), with Git run as a program, never a shell: against
|
|
7
|
+
// `HEAD` when Git tracks the file, else against an earlier copy, or nothing for a file the chat created.
|
|
8
|
+
const run = promisify(execFile);
|
|
9
|
+
const diffLimit = 64 * 1024;
|
|
10
|
+
const failureOf = (error) => (typeof error === 'object' && error !== null ? error : {});
|
|
11
|
+
export function gitIn(cwd, signal) {
|
|
12
|
+
return async (args) => {
|
|
13
|
+
try {
|
|
14
|
+
return { code: 0, out: (await run('git', ['-c', 'core.fsmonitor=false', ...args], { cwd, signal, timeout: 10_000, maxBuffer: 16 * 1024 * 1024 })).stdout };
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
signal.throwIfAborted();
|
|
18
|
+
const failed = failureOf(error);
|
|
19
|
+
if (failed.code === 'ENOENT')
|
|
20
|
+
return undefined;
|
|
21
|
+
if (typeof failed.code === 'number')
|
|
22
|
+
return { code: failed.code, out: typeof failed.stdout === 'string' ? failed.stdout : '' };
|
|
23
|
+
throw error;
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
// The diff's own header names the file as the person knows it, not the copies Git compared.
|
|
28
|
+
function counted(diff, shown) {
|
|
29
|
+
const lines = diff.split('\n');
|
|
30
|
+
const start = lines.findIndex((line) => line.startsWith('@@'));
|
|
31
|
+
if (start < 0)
|
|
32
|
+
return { added: 0, removed: 0, diff: '' };
|
|
33
|
+
const body = lines.slice(start);
|
|
34
|
+
const added = body.filter((line) => line.startsWith('+')).length;
|
|
35
|
+
const removed = body.filter((line) => line.startsWith('-')).length;
|
|
36
|
+
const whole = [`--- a/${shown}`, `+++ b/${shown}`, ...body].join('\n');
|
|
37
|
+
return { added, removed, diff: whole.length > diffLimit ? `${whole.slice(0, diffLimit)}\n[… cut at 64 KB …]` : whole };
|
|
38
|
+
}
|
|
39
|
+
/** The file's change against `HEAD`. */
|
|
40
|
+
export async function headDiff(git, shown) {
|
|
41
|
+
const done = await git(['diff', '--no-color', '--no-ext-diff', 'HEAD', '--', shown]);
|
|
42
|
+
return done === undefined ? undefined : counted(done.out, shown);
|
|
43
|
+
}
|
|
44
|
+
/** The file's change against an earlier copy (`null` for nothing): Git's `--no-index` exits 1 when they differ. */
|
|
45
|
+
export async function copyDiff(git, shown, real, earlier) {
|
|
46
|
+
const folder = await mkdtemp(path.join(tmpdir(), 'kvcoder-diff-'));
|
|
47
|
+
try {
|
|
48
|
+
const before = path.join(folder, 'before');
|
|
49
|
+
const empty = path.join(folder, 'empty');
|
|
50
|
+
await writeFile(before, earlier ?? Buffer.alloc(0));
|
|
51
|
+
await writeFile(empty, Buffer.alloc(0));
|
|
52
|
+
const done = await git(['diff', '--no-index', '--no-color', '--no-ext-diff', '--', before, real ?? empty]);
|
|
53
|
+
return done === undefined ? undefined : counted(done.out, shown);
|
|
54
|
+
}
|
|
55
|
+
finally {
|
|
56
|
+
await rm(folder, { recursive: true, force: true });
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=change-diff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"change-diff.js","sourceRoot":"","sources":["../../src/files/change-diff.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** The lines an `oldText` found at these offsets starts on, and the first few shown with a line around each. */
|
|
2
|
+
export declare function manyPlaces(content: string, offsets: readonly number[]): {
|
|
3
|
+
lines: string;
|
|
4
|
+
shown: string;
|
|
5
|
+
};
|
|
6
|
+
/** What an error for an `oldText` that isn't found adds: where it may have meant, or nothing. */
|
|
7
|
+
export declare function nearPlaces(content: string, oldText: string): {
|
|
8
|
+
sentence: string;
|
|
9
|
+
shown: string;
|
|
10
|
+
} | undefined;
|
|
11
|
+
//# sourceMappingURL=edit-places.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edit-places.d.ts","sourceRoot":"","sources":["../../src/files/edit-places.ts"],"names":[],"mappings":"AA2DA,gHAAgH;AAChH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAKxG;AA2BD,iGAAiG;AACjG,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAa5G"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { linesOf, numberedLine } from "./read-text.js";
|
|
2
|
+
// Where a failed edit could have meant (plan 08 §8.5, ADR 0097, 3): the lines of an `oldText` found several times, or
|
|
3
|
+
// for one not found, where it matches when whitespace is ignored, else where its first line appears. Shown lines are
|
|
4
|
+
// numbered as a read numbers them. Nothing is ever applied from here.
|
|
5
|
+
const listedLimit = 20;
|
|
6
|
+
const shownMatches = 5;
|
|
7
|
+
const placesShown = 3;
|
|
8
|
+
const placeLines = 20;
|
|
9
|
+
const lineCharacters = 200;
|
|
10
|
+
/** The line number of each character offset, counting from 1. */
|
|
11
|
+
function lineFinder(content) {
|
|
12
|
+
const starts = [0];
|
|
13
|
+
for (let index = content.indexOf('\n'); index >= 0; index = content.indexOf('\n', index + 1))
|
|
14
|
+
starts.push(index + 1);
|
|
15
|
+
return (offset) => {
|
|
16
|
+
let low = 0;
|
|
17
|
+
let high = starts.length - 1;
|
|
18
|
+
while (low < high) {
|
|
19
|
+
const middle = Math.ceil((low + high) / 2);
|
|
20
|
+
if ((starts[middle] ?? 0) <= offset)
|
|
21
|
+
low = middle;
|
|
22
|
+
else
|
|
23
|
+
high = middle - 1;
|
|
24
|
+
}
|
|
25
|
+
return low + 1;
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
const cutLine = (line) => (line.length > lineCharacters ? `${line.slice(0, lineCharacters)}…` : line);
|
|
29
|
+
// The file's lines `from` to `to`, numbered, at most 20 of them.
|
|
30
|
+
function shownLines(lines, from, to) {
|
|
31
|
+
const first = Math.max(from, 1);
|
|
32
|
+
const last = Math.min(to, lines.length, first + placeLines - 1);
|
|
33
|
+
const shown = [];
|
|
34
|
+
for (let number = first; number <= last; number += 1)
|
|
35
|
+
shown.push(numberedLine(number, cutLine((lines[number - 1] ?? '').replace(/\r?\n$/, ''))));
|
|
36
|
+
return shown.join('\n');
|
|
37
|
+
}
|
|
38
|
+
// The places' lines, numbered, places whose lines overlap shown once together.
|
|
39
|
+
function shownPlaces(lines, ranges) {
|
|
40
|
+
const merged = [];
|
|
41
|
+
for (const range of [...ranges].sort((first, second) => first.from - second.from)) {
|
|
42
|
+
const last = merged.at(-1);
|
|
43
|
+
if (last !== undefined && range.from <= last.to)
|
|
44
|
+
last.to = Math.max(last.to, range.to);
|
|
45
|
+
else
|
|
46
|
+
merged.push({ ...range });
|
|
47
|
+
}
|
|
48
|
+
return merged.map((range) => shownLines(lines, range.from, range.to)).join('\n\n');
|
|
49
|
+
}
|
|
50
|
+
const listed = (places, limit) => {
|
|
51
|
+
const more = places.length > limit ? ` and ${String(places.length - limit)} more` : '';
|
|
52
|
+
return `${places.slice(0, limit).join(', ')}${more}`;
|
|
53
|
+
};
|
|
54
|
+
const lineWord = (places) => (places.length === 1 ? 'line' : 'lines');
|
|
55
|
+
const distinct = (numbers) => [...new Set(numbers)];
|
|
56
|
+
/** The lines an `oldText` found at these offsets starts on, and the first few shown with a line around each. */
|
|
57
|
+
export function manyPlaces(content, offsets) {
|
|
58
|
+
const lineOf = lineFinder(content);
|
|
59
|
+
const numbers = distinct(offsets.map(lineOf));
|
|
60
|
+
const lines = linesOf(content);
|
|
61
|
+
return { lines: `${lineWord(numbers)} ${listed(numbers, listedLimit)}`, shown: shownPlaces(lines, numbers.slice(0, shownMatches).map((line) => ({ from: line - 1, to: line + 1 }))) };
|
|
62
|
+
}
|
|
63
|
+
// The content with each run of whitespace as one space, and where each of its characters came from.
|
|
64
|
+
function loosened(content) {
|
|
65
|
+
let text = '';
|
|
66
|
+
const origins = [];
|
|
67
|
+
for (const match of content.matchAll(/\s+|\S+/g)) {
|
|
68
|
+
const isSpace = /^\s/.test(match[0]);
|
|
69
|
+
text += isSpace ? ' ' : match[0];
|
|
70
|
+
for (let index = 0; index < (isSpace ? 1 : match[0].length); index += 1)
|
|
71
|
+
origins.push(match.index + index);
|
|
72
|
+
}
|
|
73
|
+
return { text, origins };
|
|
74
|
+
}
|
|
75
|
+
// The places, as first and last line, where the text matches with each run of whitespace taken as one space.
|
|
76
|
+
function looseMatches(content, oldText) {
|
|
77
|
+
const needle = oldText.trim().replace(/\s+/g, ' ');
|
|
78
|
+
if (needle === '')
|
|
79
|
+
return [];
|
|
80
|
+
const loose = loosened(content);
|
|
81
|
+
const lineOf = lineFinder(content);
|
|
82
|
+
const found = [];
|
|
83
|
+
for (let index = loose.text.indexOf(needle); index >= 0; index = loose.text.indexOf(needle, index + needle.length)) {
|
|
84
|
+
found.push({ first: lineOf(loose.origins[index] ?? 0), last: lineOf(loose.origins[index + needle.length - 1] ?? 0) });
|
|
85
|
+
}
|
|
86
|
+
return found;
|
|
87
|
+
}
|
|
88
|
+
/** What an error for an `oldText` that isn't found adds: where it may have meant, or nothing. */
|
|
89
|
+
export function nearPlaces(content, oldText) {
|
|
90
|
+
const lines = linesOf(content);
|
|
91
|
+
const loose = looseMatches(content, oldText);
|
|
92
|
+
if (loose.length > 0) {
|
|
93
|
+
const places = loose.map((place) => (place.first === place.last ? String(place.first) : `${String(place.first)}–${String(place.last)}`));
|
|
94
|
+
return { sentence: `It matches when whitespace is ignored at ${loose.length === 1 && loose[0]?.first === loose[0]?.last ? 'line' : 'lines'} ${listed(places, placesShown)}; the file's lines there are below.`, shown: shownPlaces(lines, loose.slice(0, placesShown).map((place) => ({ from: place.first, to: place.last }))) };
|
|
95
|
+
}
|
|
96
|
+
const firstLine = oldText.split('\n').find((line) => line.trim() !== '')?.trim();
|
|
97
|
+
if (firstLine === undefined)
|
|
98
|
+
return undefined;
|
|
99
|
+
const found = lines.flatMap((line, index) => (line.includes(firstLine) ? [index + 1] : []));
|
|
100
|
+
if (found.length === 0)
|
|
101
|
+
return undefined;
|
|
102
|
+
const length = linesOf(oldText.trim()).length;
|
|
103
|
+
return { sentence: `Its first line appears at ${lineWord(found)} ${listed(found, placesShown)}; the file's lines there are below.`, shown: shownPlaces(lines, found.slice(0, placesShown).map((line) => ({ from: line - 1, to: line + length - 1 }))) };
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=edit-places.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edit-places.js","sourceRoot":"","sources":["../../src/files/edit-places.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edit-text.d.ts","sourceRoot":"","sources":["../../src/files/edit-text.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"edit-text.d.ts","sourceRoot":"","sources":["../../src/files/edit-text.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,QAAQ,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CAAE,CAAC;AAE9F,iIAAiI;AACjI,MAAM,MAAM,UAAU,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,CAAC;AA6CnH,+GAA+G;AAC/G,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,QAAQ,EAAE,GAAG,UAAU,CAgBnF"}
|