@inharness-ai/claude4spec 1.0.20 → 1.0.21
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/.claude/skills/c4s-brief-implementer/SKILL.md +6 -13
- package/CHANGELOG.md +13 -0
- package/dist/client/assets/{arc-qrIe4IVl.js → arc-Coa9fbDO.js} +1 -1
- package/dist/client/assets/{architectureDiagram-3BPJPVTR-CF6sgG8n.js → architectureDiagram-3BPJPVTR-VJZcRMEN.js} +1 -1
- package/dist/client/assets/{blockDiagram-GPEHLZMM-Cf8Tx0VN.js → blockDiagram-GPEHLZMM-C7dU2lW1.js} +1 -1
- package/dist/client/assets/{c4Diagram-AAUBKEIU-BDkuMEyf.js → c4Diagram-AAUBKEIU-CG_BBm_5.js} +1 -1
- package/dist/client/assets/channel-D5gzBvo7.js +1 -0
- package/dist/client/assets/{chunk-2J33WTMH-ChycTonk.js → chunk-2J33WTMH-BnS95YpK.js} +1 -1
- package/dist/client/assets/{chunk-4BX2VUAB-BpUgWjxx.js → chunk-4BX2VUAB-COr8w3X3.js} +1 -1
- package/dist/client/assets/{chunk-55IACEB6-CeHg_yjT.js → chunk-55IACEB6-CxrIbZhB.js} +1 -1
- package/dist/client/assets/{chunk-727SXJPM-BpxYq7ab.js → chunk-727SXJPM-DRchPPRe.js} +1 -1
- package/dist/client/assets/{chunk-AQP2D5EJ-bghkOtr6.js → chunk-AQP2D5EJ-_SfN7mED.js} +1 -1
- package/dist/client/assets/{chunk-FMBD7UC4-4sXokGgd.js → chunk-FMBD7UC4-p2tIiP1D.js} +1 -1
- package/dist/client/assets/{chunk-ND2GUHAM-DYQOCE5T.js → chunk-ND2GUHAM-B1mbl2hP.js} +1 -1
- package/dist/client/assets/{chunk-QZHKN3VN-NkVuDlFD.js → chunk-QZHKN3VN-DBUpeqvS.js} +1 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-CT-amIxa.js +1 -0
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-CT-amIxa.js +1 -0
- package/dist/client/assets/{cose-bilkent-S5V4N54A-1l4P4WRI.js → cose-bilkent-S5V4N54A-BBsY5aKD.js} +1 -1
- package/dist/client/assets/{dagre-BM42HDAG-CSQie-gR.js → dagre-BM42HDAG-b-vu4RC9.js} +1 -1
- package/dist/client/assets/{diagram-2AECGRRQ-DME9ULoN.js → diagram-2AECGRRQ-j-DW9qSf.js} +1 -1
- package/dist/client/assets/{diagram-5GNKFQAL-Dn1Rw5k5.js → diagram-5GNKFQAL-DHX_WYWQ.js} +1 -1
- package/dist/client/assets/{diagram-KO2AKTUF-Duh_PNWR.js → diagram-KO2AKTUF-DxdQok_M.js} +1 -1
- package/dist/client/assets/{diagram-LMA3HP47-B7Q5pV60.js → diagram-LMA3HP47-BbTIX5c1.js} +1 -1
- package/dist/client/assets/{diagram-OG6HWLK6-C0KL_RDd.js → diagram-OG6HWLK6-BQ9ODAlH.js} +1 -1
- package/dist/client/assets/{erDiagram-TEJ5UH35-D5elfwSC.js → erDiagram-TEJ5UH35-6lwAL1y9.js} +1 -1
- package/dist/client/assets/{flowDiagram-I6XJVG4X-BHmjX-WI.js → flowDiagram-I6XJVG4X-ioSHb5-t.js} +1 -1
- package/dist/client/assets/{ganttDiagram-6RSMTGT7-KvoGFbS2.js → ganttDiagram-6RSMTGT7-CXFQp9Nj.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-PVQCEYII-DsZL8BfK.js → gitGraphDiagram-PVQCEYII-C1pVD_NQ.js} +1 -1
- package/dist/client/assets/index-DyAnw7YN.js +798 -0
- package/dist/client/assets/{index-zzILqHQN.js → index-JaAxQJXh.js} +1 -1
- package/dist/client/assets/{index-ClaVbrEF.js → index-hz5T_W2e.js} +1 -1
- package/dist/client/assets/{infoDiagram-5YYISTIA-DoQ6iSpJ.js → infoDiagram-5YYISTIA-C2Guev-g.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-akftyN0J.js → ishikawaDiagram-YF4QCWOH-D3v8VBb2.js} +1 -1
- package/dist/client/assets/{journeyDiagram-JHISSGLW-PPex4PiV.js → journeyDiagram-JHISSGLW-DX1AW_Ap.js} +1 -1
- package/dist/client/assets/{kanban-definition-UN3LZRKU-D114i3s1.js → kanban-definition-UN3LZRKU-CzXThvq2.js} +1 -1
- package/dist/client/assets/{linear-BuwQPJom.js → linear-CVw4gl5i.js} +1 -1
- package/dist/client/assets/{mermaid.core-CMX3GAvM.js → mermaid.core-C29eoXRj.js} +4 -4
- package/dist/client/assets/{mindmap-definition-RKZ34NQL-ClBxWJju.js → mindmap-definition-RKZ34NQL-DEEGVQVA.js} +1 -1
- package/dist/client/assets/{pieDiagram-4H26LBE5-hj5zVPj5.js → pieDiagram-4H26LBE5-Dme-VM6m.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-W4KKPZXB-CRbR0G7M.js → quadrantDiagram-W4KKPZXB-CURFNo24.js} +1 -1
- package/dist/client/assets/{requirementDiagram-4Y6WPE33-Dto4B70I.js → requirementDiagram-4Y6WPE33-DxMZWXME.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-5OEKKPKP-DyYP8rwY.js → sankeyDiagram-5OEKKPKP-BW64D4_P.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-3UESZ5HK-C-mrSLrJ.js → sequenceDiagram-3UESZ5HK-BATRPm8Q.js} +1 -1
- package/dist/client/assets/{stateDiagram-AJRCARHV-IoDlhAe6.js → stateDiagram-AJRCARHV-pgHVMnO3.js} +1 -1
- package/dist/client/assets/stateDiagram-v2-BHNVJYJU-szm_LIuD.js +1 -0
- package/dist/client/assets/{timeline-definition-PNZ67QCA-DEXg3TEw.js → timeline-definition-PNZ67QCA-qBxJZPWd.js} +1 -1
- package/dist/client/assets/{vennDiagram-CIIHVFJN-CNu7LaT1.js → vennDiagram-CIIHVFJN-BZJK9hqJ.js} +1 -1
- package/dist/client/assets/{wardley-L42UT6IY-0hGvREmD.js → wardley-L42UT6IY-BobtgEXg.js} +1 -1
- package/dist/client/assets/{wardleyDiagram-YWT4CUSO-CVLz-xFz.js → wardleyDiagram-YWT4CUSO-DuWfX_-P.js} +1 -1
- package/dist/client/assets/{xychartDiagram-2RQKCTM6-CFymKAcX.js → xychartDiagram-2RQKCTM6-DCw1iURo.js} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/server/core/plugin-host/entities-router.d.ts +2 -1
- package/dist/server/core/plugin-host/entities-router.js +16 -1
- package/dist/server/core/plugin-host/entities-router.js.map +1 -1
- package/dist/server/db/migrations/041_chat_thread_transagent.sql +22 -0
- package/dist/server/index.js +16 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/mcp/release-tools/index.d.ts +11 -0
- package/dist/server/mcp/release-tools/index.js +68 -5
- package/dist/server/mcp/release-tools/index.js.map +1 -1
- package/dist/server/mcp/release-tools/projection.d.ts +11 -2
- package/dist/server/mcp/release-tools/projection.js +36 -7
- package/dist/server/mcp/release-tools/projection.js.map +1 -1
- package/dist/server/mcp/release-tools/types.d.ts +39 -2
- package/dist/server/mcp/transagent-tools.d.ts +26 -0
- package/dist/server/mcp/transagent-tools.js +75 -0
- package/dist/server/mcp/transagent-tools.js.map +1 -0
- package/dist/server/routes/agent-turn.d.ts +9 -0
- package/dist/server/routes/agent-turn.js +58 -1
- package/dist/server/routes/agent-turn.js.map +1 -1
- package/dist/server/routes/briefs.js +12 -4
- package/dist/server/routes/briefs.js.map +1 -1
- package/dist/server/routes/chat.js +18 -0
- package/dist/server/routes/chat.js.map +1 -1
- package/dist/server/routes/plans.js +13 -0
- package/dist/server/routes/plans.js.map +1 -1
- package/dist/server/routes/threads.js +9 -2
- package/dist/server/routes/threads.js.map +1 -1
- package/dist/server/services/brief.d.ts +30 -8
- package/dist/server/services/brief.js +58 -28
- package/dist/server/services/brief.js.map +1 -1
- package/dist/server/services/chat-context.js +10 -6
- package/dist/server/services/chat-context.js.map +1 -1
- package/dist/server/services/chat.d.ts +12 -1
- package/dist/server/services/chat.js +56 -21
- package/dist/server/services/chat.js.map +1 -1
- package/dist/server/services/entity-indexer.js +21 -14
- package/dist/server/services/entity-indexer.js.map +1 -1
- package/dist/server/services/plan.d.ts +7 -1
- package/dist/server/services/plan.js +17 -4
- package/dist/server/services/plan.js.map +1 -1
- package/dist/server/services/transagent-dispatcher.d.ts +60 -0
- package/dist/server/services/transagent-dispatcher.js +147 -0
- package/dist/server/services/transagent-dispatcher.js.map +1 -0
- package/dist/server/skills/brief-author/SKILL.md +26 -17
- package/dist/server/workspace/project-context.js +2 -1
- package/dist/server/workspace/project-context.js.map +1 -1
- package/dist/shared/entities.d.ts +46 -3
- package/dist/shared/entities.js +1 -0
- package/dist/shared/entities.js.map +1 -1
- package/package.json +1 -1
- package/dist/client/assets/channel-CTF_J4I4.js +0 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-Dt9RLC8r.js +0 -1
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-Dt9RLC8r.js +0 -1
- package/dist/client/assets/index-DnLELaLA.js +0 -798
- package/dist/client/assets/stateDiagram-v2-BHNVJYJU-BblFLijq.js +0 -1
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
import { createMcpServer, mcpTool } from '@inharness-ai/agent-adapters';
|
|
15
15
|
import { z } from 'zod';
|
|
16
16
|
import { DomainError } from '../../services/tags.js';
|
|
17
|
-
import { projectReleaseDiff, projectSpecSnapshot } from './projection.js';
|
|
17
|
+
import { DEFAULT_PAGE_LIMIT, projectReleaseDiff, projectSpecSnapshot } from './projection.js';
|
|
18
18
|
const INCLUDE_VALUES = ['pages', 'entities'];
|
|
19
19
|
const ENTITY_TYPE_VALUES = ['endpoint', 'dto', 'database-table', 'ui-view', 'ac'];
|
|
20
20
|
const DEFAULT_INCLUDE = ['pages', 'entities'];
|
|
@@ -46,7 +46,25 @@ export function createReleaseToolsServer(deps) {
|
|
|
46
46
|
return fail(err);
|
|
47
47
|
}
|
|
48
48
|
});
|
|
49
|
-
const releaseList = mcpTool('release_list', 'List
|
|
49
|
+
const releaseList = mcpTool('release_list', 'List releases newest-first (paginated). Returns `{ releases, total }` where `total` is the full count before limit/offset. Per release: id, name, description, createdBy, createdAt.', {
|
|
50
|
+
limit: z
|
|
51
|
+
.number()
|
|
52
|
+
.optional()
|
|
53
|
+
.describe('Window size. Default 5, no upper limit. Negative → 400 INVALID_PAGINATION.'),
|
|
54
|
+
offset: z
|
|
55
|
+
.number()
|
|
56
|
+
.optional()
|
|
57
|
+
.describe('Window offset into the newest-first list. Default 0. Negative → 400 INVALID_PAGINATION.'),
|
|
58
|
+
}, async (args) => {
|
|
59
|
+
try {
|
|
60
|
+
const { limit, offset } = resolvePagination(args.limit, args.offset);
|
|
61
|
+
const all = deps.releaseService.listReleases();
|
|
62
|
+
return ok({ releases: all.slice(offset, offset + limit), total: all.length });
|
|
63
|
+
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
return fail(err);
|
|
66
|
+
}
|
|
67
|
+
});
|
|
50
68
|
const releaseShow = mcpTool('release_show', "Show a release's identification surface (release metadata + lists of entity slugs/page paths present at the release). Returns `MCPSpecSnapshot` — IDENTIFICATION only, not full entity/page data. To inspect the data, call `release_diff` (with this release as `to` and any earlier release — or `null` — as `from`). Accepts numeric id or release name. Filters: `include` (defaults to ['pages','entities']) trims the dimensions returned; `entityTypes` restricts entity types. Brief versions (`page_version.kind='brief'`) are excluded from `pages` (L2 invariant).", {
|
|
51
69
|
idOrName: z.union([z.string(), z.number()]).describe('Numeric id or release name'),
|
|
52
70
|
include: z
|
|
@@ -57,19 +75,28 @@ export function createReleaseToolsServer(deps) {
|
|
|
57
75
|
.array(z.enum(ENTITY_TYPE_VALUES))
|
|
58
76
|
.optional()
|
|
59
77
|
.describe("Filter entity types. Default all 5 types. Empty array → 400 INVALID_ENTITY_TYPES_FILTER. Passing this without 'entities' in `include` → 400 CONFLICTING_FILTERS."),
|
|
78
|
+
limit: z
|
|
79
|
+
.number()
|
|
80
|
+
.optional()
|
|
81
|
+
.describe('Window size applied independently to entities[] and pages[]. Default 5, no upper limit. Negative → 400 INVALID_PAGINATION.'),
|
|
82
|
+
offset: z
|
|
83
|
+
.number()
|
|
84
|
+
.optional()
|
|
85
|
+
.describe('Window offset applied independently to entities[] and pages[]. Default 0. Negative → 400 INVALID_PAGINATION.'),
|
|
60
86
|
}, async (args) => {
|
|
61
87
|
try {
|
|
62
88
|
const include = args.include ?? DEFAULT_INCLUDE;
|
|
63
89
|
const entityTypes = args.entityTypes;
|
|
64
90
|
validateFilters(args.include, entityTypes);
|
|
91
|
+
const { limit, offset } = resolvePagination(args.limit, args.offset);
|
|
65
92
|
const raw = deps.releaseService.getReleaseSnapshot(args.idOrName);
|
|
66
|
-
return ok(projectSpecSnapshot(raw, { include, entityTypes }));
|
|
93
|
+
return ok(projectSpecSnapshot(raw, { include, entityTypes }, { limit, offset }));
|
|
67
94
|
}
|
|
68
95
|
catch (err) {
|
|
69
96
|
return fail(err);
|
|
70
97
|
}
|
|
71
98
|
});
|
|
72
|
-
const releaseDiff = mcpTool('release_diff', "Compute a SELF-CONTAINED structured diff between two releases.
|
|
99
|
+
const releaseDiff = mcpTool('release_diff', "Compute a SELF-CONTAINED structured diff between two releases. Heavy mode (default): each entity carries full `before`/`after` snapshots (per plugin's serializer); each modified section carries full `before`/`after` raw markdown. `entities[]`/`pages[]` are paginated independently by `limit`/`offset` (default 5), and `total: { entities?, pages? }` reports the full count after `include`/`entityTypes` filters, before the window. Light mode (`summaryOnly: true`): returns a delta MAP — `total` + identifiers `{ type, slug, name, op }` per entity and `{ path, op }` per page (incl. `op:'delete'`), WITHOUT `before`/`after`/`content`; the map is FULL and ignores `limit`/`offset`. Intended use: probe with `summaryOnly: true` to learn what changed, then fan out the heavy slices (`entityTypes` and/or `limit`/`offset`) to subagents. Pass `from: null` for the initial brief (synthetic empty `from`; all entries become `op:'create'` with `before` omitted). `from === to` returns an empty diff. There is NO `line_diff`.", {
|
|
73
100
|
fromIdOrName: z
|
|
74
101
|
.union([z.string(), z.number(), z.null()])
|
|
75
102
|
.describe('Earlier release id or name. `null` = initial brief (compare to empty state — all entries become op:create).'),
|
|
@@ -82,17 +109,37 @@ export function createReleaseToolsServer(deps) {
|
|
|
82
109
|
.array(z.enum(ENTITY_TYPE_VALUES))
|
|
83
110
|
.optional()
|
|
84
111
|
.describe("Filter entity types. Default all 5 types. Empty array → 400 INVALID_ENTITY_TYPES_FILTER. Passing this without 'entities' in `include` → 400 CONFLICTING_FILTERS."),
|
|
112
|
+
summaryOnly: z
|
|
113
|
+
.boolean()
|
|
114
|
+
.optional()
|
|
115
|
+
.describe('Default false. true = light delta-map: only `total` + identifiers `{ type, slug, name, op }` / `{ path, op }` (incl. deletes), no before/after/content. Full lists — ignores limit/offset.'),
|
|
116
|
+
limit: z
|
|
117
|
+
.number()
|
|
118
|
+
.optional()
|
|
119
|
+
.describe('Window size applied independently to entities[] and pages[] (heavy mode only). Default 5, no upper limit. Negative → 400 INVALID_PAGINATION.'),
|
|
120
|
+
offset: z
|
|
121
|
+
.number()
|
|
122
|
+
.optional()
|
|
123
|
+
.describe('Window offset applied independently to entities[] and pages[] (heavy mode only). Default 0. Beyond total → empty list + total. Negative → 400 INVALID_PAGINATION.'),
|
|
85
124
|
}, async (args) => {
|
|
86
125
|
try {
|
|
87
126
|
const include = args.include ?? DEFAULT_INCLUDE;
|
|
88
127
|
const entityTypes = args.entityTypes;
|
|
89
128
|
validateFilters(args.include, entityTypes);
|
|
129
|
+
// Validate pagination BEFORE the summaryOnly branch — negative limit/offset
|
|
130
|
+
// is a 400 even though `summaryOnly: true` later ignores the window.
|
|
131
|
+
const { limit, offset } = resolvePagination(args.limit, args.offset);
|
|
132
|
+
const summaryOnly = args.summaryOnly === true;
|
|
90
133
|
const fromIdOrName = args.fromIdOrName;
|
|
91
134
|
const toIdOrName = args.toIdOrName;
|
|
92
135
|
const raw = deps.releaseService.getReleaseDiff(fromIdOrName, toIdOrName);
|
|
93
136
|
const toSnap = deps.releaseService.getReleaseSnapshot(toIdOrName);
|
|
94
137
|
const fromSnap = fromIdOrName === null ? null : deps.releaseService.getReleaseSnapshot(fromIdOrName);
|
|
95
|
-
return ok(projectReleaseDiff(raw, fromSnap, toSnap, { include, entityTypes }
|
|
138
|
+
return ok(projectReleaseDiff(raw, fromSnap, toSnap, { include, entityTypes }, {
|
|
139
|
+
summaryOnly,
|
|
140
|
+
limit,
|
|
141
|
+
offset,
|
|
142
|
+
}));
|
|
96
143
|
}
|
|
97
144
|
catch (err) {
|
|
98
145
|
return fail(err);
|
|
@@ -126,6 +173,22 @@ export function createReleaseToolsServer(deps) {
|
|
|
126
173
|
tools: [releaseCreate, releaseList, releaseShow, releaseDiff, releaseUpdate],
|
|
127
174
|
});
|
|
128
175
|
}
|
|
176
|
+
const DEFAULT_OFFSET = 0;
|
|
177
|
+
/**
|
|
178
|
+
* Resolve `limit`/`offset` for the MCP-only pagination of `release_list` /
|
|
179
|
+
* `release_show` / `release_diff`. Negative values are a loud 400 `INVALID_PAGINATION` (no
|
|
180
|
+
* silent clamp), consistent with the rest of M17's jaskrawe błędy. Zod keeps
|
|
181
|
+
* these loose (`z.number()`) so negatives reach this check rather than failing
|
|
182
|
+
* as a generic Zod error.
|
|
183
|
+
*/
|
|
184
|
+
export function resolvePagination(limit, offset) {
|
|
185
|
+
const l = typeof limit === 'number' ? limit : DEFAULT_PAGE_LIMIT;
|
|
186
|
+
const o = typeof offset === 'number' ? offset : DEFAULT_OFFSET;
|
|
187
|
+
if (l < 0 || o < 0) {
|
|
188
|
+
throw new DomainError('INVALID_PAGINATION', 'limit and offset must be >= 0');
|
|
189
|
+
}
|
|
190
|
+
return { limit: l, offset: o };
|
|
191
|
+
}
|
|
129
192
|
function validateFilters(include, entityTypes) {
|
|
130
193
|
if (include !== undefined && include.length === 0) {
|
|
131
194
|
throw new DomainError('INVALID_INCLUDE_FILTER', 'include must not be an empty array');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/server/mcp/release-tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,eAAe,EAAE,OAAO,EAA0B,MAAM,8BAA8B,CAAC;AAChG,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/server/mcp/release-tools/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,8 +5,17 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import type { LineDiffLite, PageXmlRefLite, RawDelta, SpecSnapshot } from '../../../shared/entities.js';
|
|
7
7
|
import type { EntitySnapshot, MCPReleaseDiff, MCPSpecSnapshot, ProjectionOpts } from './types.js';
|
|
8
|
-
export declare function projectReleaseDiff(raw: RawDelta, fromSnap: SpecSnapshot | null, toSnap: SpecSnapshot, opts: ProjectionOpts
|
|
9
|
-
|
|
8
|
+
export declare function projectReleaseDiff(raw: RawDelta, fromSnap: SpecSnapshot | null, toSnap: SpecSnapshot, opts: ProjectionOpts, options?: {
|
|
9
|
+
summaryOnly?: boolean;
|
|
10
|
+
limit?: number;
|
|
11
|
+
offset?: number;
|
|
12
|
+
}): MCPReleaseDiff;
|
|
13
|
+
/** MCP-only default window size for `release_show` / `release_list` (M17). */
|
|
14
|
+
export declare const DEFAULT_PAGE_LIMIT = 5;
|
|
15
|
+
export declare function projectSpecSnapshot(raw: SpecSnapshot, opts: ProjectionOpts, pagination?: {
|
|
16
|
+
limit?: number;
|
|
17
|
+
offset?: number;
|
|
18
|
+
}): MCPSpecSnapshot;
|
|
10
19
|
export declare function escapeInlineTags(s: string): string;
|
|
11
20
|
/**
|
|
12
21
|
* Project structural `LineDiffLite` (M02 `m02pvdif1`) into a single markdown
|
|
@@ -11,16 +11,34 @@ const ENTITY_TYPES = new Set([
|
|
|
11
11
|
'ui-view',
|
|
12
12
|
'ac',
|
|
13
13
|
]);
|
|
14
|
-
export function projectReleaseDiff(raw, fromSnap, toSnap, opts) {
|
|
15
|
-
const
|
|
14
|
+
export function projectReleaseDiff(raw, fromSnap, toSnap, opts, options) {
|
|
15
|
+
const summaryOnly = options?.summaryOnly ?? false;
|
|
16
|
+
const limit = options?.limit ?? DEFAULT_PAGE_LIMIT;
|
|
17
|
+
const offset = options?.offset ?? 0;
|
|
18
|
+
const out = { from: raw.from, to: raw.to, total: {} };
|
|
19
|
+
// Compute the FULL filtered delta first, record `total` on it, THEN branch:
|
|
20
|
+
// light (`summaryOnly`) strips to identifiers and ignores the window; heavy
|
|
21
|
+
// slices `entities[]`/`pages[]` independently by the same `limit`/`offset`.
|
|
16
22
|
if (opts.include.includes('entities')) {
|
|
17
|
-
|
|
23
|
+
const full = projectEntities(raw.entities, fromSnap, toSnap, opts.entityTypes);
|
|
24
|
+
out.total.entities = full.length;
|
|
25
|
+
out.entities = summaryOnly ? full.map(toEntityLight) : full.slice(offset, offset + limit);
|
|
18
26
|
}
|
|
19
27
|
if (opts.include.includes('pages')) {
|
|
20
|
-
|
|
28
|
+
const full = projectPages(raw.pages, fromSnap, toSnap);
|
|
29
|
+
out.total.pages = full.length;
|
|
30
|
+
out.pages = summaryOnly ? full.map(toPageLight) : full.slice(offset, offset + limit);
|
|
21
31
|
}
|
|
22
32
|
return out;
|
|
23
33
|
}
|
|
34
|
+
/** Strip a heavy entity delta to its light identifier form (`summaryOnly: true`). */
|
|
35
|
+
function toEntityLight(e) {
|
|
36
|
+
return { type: e.type, slug: e.slug, name: e.name, op: e.op };
|
|
37
|
+
}
|
|
38
|
+
/** Strip a heavy page delta to its light identifier form (`summaryOnly: true`). */
|
|
39
|
+
function toPageLight(p) {
|
|
40
|
+
return { path: p.path, op: p.op };
|
|
41
|
+
}
|
|
24
42
|
function projectEntities(rawEntities, fromSnap, toSnap, entityTypes) {
|
|
25
43
|
const fromMap = indexEntitiesByTypeSlug(fromSnap?.entities ?? []);
|
|
26
44
|
const toMap = indexEntitiesByTypeSlug(toSnap.entities);
|
|
@@ -136,7 +154,11 @@ function projectPages(rawPages, fromSnap, toSnap) {
|
|
|
136
154
|
}
|
|
137
155
|
return out;
|
|
138
156
|
}
|
|
139
|
-
|
|
157
|
+
/** MCP-only default window size for `release_show` / `release_list` (M17). */
|
|
158
|
+
export const DEFAULT_PAGE_LIMIT = 5;
|
|
159
|
+
export function projectSpecSnapshot(raw, opts, pagination) {
|
|
160
|
+
const limit = pagination?.limit ?? DEFAULT_PAGE_LIMIT;
|
|
161
|
+
const offset = pagination?.offset ?? 0;
|
|
140
162
|
const out = {
|
|
141
163
|
release: {
|
|
142
164
|
id: raw.release.id,
|
|
@@ -145,9 +167,12 @@ export function projectSpecSnapshot(raw, opts) {
|
|
|
145
167
|
created_by: raw.release.createdBy,
|
|
146
168
|
created_at: raw.release.createdAt,
|
|
147
169
|
},
|
|
170
|
+
total: {},
|
|
148
171
|
};
|
|
172
|
+
// limit/offset apply independently to each list; `total` is the full count
|
|
173
|
+
// after include/entityTypes filtering but before the window is sliced.
|
|
149
174
|
if (opts.include.includes('entities')) {
|
|
150
|
-
|
|
175
|
+
const entities = raw.entities
|
|
151
176
|
.filter((e) => e.op !== 'delete')
|
|
152
177
|
.filter((e) => !opts.entityTypes || opts.entityTypes.includes(e.type))
|
|
153
178
|
.map((e) => ({
|
|
@@ -155,9 +180,13 @@ export function projectSpecSnapshot(raw, opts) {
|
|
|
155
180
|
slug: e.slug,
|
|
156
181
|
name: extractEntityName(e.data, e.slug),
|
|
157
182
|
}));
|
|
183
|
+
out.total.entities = entities.length;
|
|
184
|
+
out.entities = entities.slice(offset, offset + limit);
|
|
158
185
|
}
|
|
159
186
|
if (opts.include.includes('pages')) {
|
|
160
|
-
|
|
187
|
+
const pages = raw.pages.filter((p) => p.op !== 'delete').map((p) => ({ path: p.path }));
|
|
188
|
+
out.total.pages = pages.length;
|
|
189
|
+
out.pages = pages.slice(offset, offset + limit);
|
|
161
190
|
}
|
|
162
191
|
return out;
|
|
163
192
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projection.js","sourceRoot":"","sources":["../../../../src/server/mcp/release-tools/projection.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"projection.js","sourceRoot":"","sources":["../../../../src/server/mcp/release-tools/projection.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,8 +18,36 @@ export interface MCPReleaseDiff {
|
|
|
18
18
|
id: number;
|
|
19
19
|
name: string;
|
|
20
20
|
};
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
/**
|
|
22
|
+
* Totals AFTER include/entityTypes filters, BEFORE limit/offset. Keys stay in
|
|
23
|
+
* lock-step with `include` (mirrors `MCPSpecSnapshot.total`). Always present so
|
|
24
|
+
* a paginating consumer — or the brief-author probe-map (`summaryOnly: true`) —
|
|
25
|
+
* knows the full cardinality of each filtered dimension.
|
|
26
|
+
*/
|
|
27
|
+
total?: {
|
|
28
|
+
entities?: number;
|
|
29
|
+
pages?: number;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Heavy variant (`summaryOnly !== true`): full `MCPEntityDelta` with
|
|
33
|
+
* `before`/`after`, windowed by `limit`/`offset`.
|
|
34
|
+
* Light variant (`summaryOnly === true`): `MCPEntityDeltaLight` identifiers
|
|
35
|
+
* only (full list, window ignored).
|
|
36
|
+
*/
|
|
37
|
+
entities?: MCPEntityDelta[] | MCPEntityDeltaLight[];
|
|
38
|
+
pages?: MCPPageDelta[] | MCPPageDeltaLight[];
|
|
39
|
+
}
|
|
40
|
+
/** Light delta-map entry (`summaryOnly: true`) — identifier + op, no `before`/`after`. */
|
|
41
|
+
export interface MCPEntityDeltaLight {
|
|
42
|
+
type: 'endpoint' | 'dto' | 'database-table' | 'ui-view' | 'ac';
|
|
43
|
+
slug: string;
|
|
44
|
+
name: string;
|
|
45
|
+
op: 'create' | 'update' | 'delete';
|
|
46
|
+
}
|
|
47
|
+
/** Light delta-map entry (`summaryOnly: true`) — path + op, no `sections`/`content`. */
|
|
48
|
+
export interface MCPPageDeltaLight {
|
|
49
|
+
path: string;
|
|
50
|
+
op: 'create' | 'update' | 'delete';
|
|
23
51
|
}
|
|
24
52
|
export interface MCPEntityDelta {
|
|
25
53
|
type: 'endpoint' | 'dto' | 'database-table' | 'ui-view' | 'ac';
|
|
@@ -74,6 +102,15 @@ export interface MCPSpecSnapshot {
|
|
|
74
102
|
created_by: string;
|
|
75
103
|
created_at: string;
|
|
76
104
|
};
|
|
105
|
+
/**
|
|
106
|
+
* Totals BEFORE limit/offset, AFTER include/entityTypes filters. Keys stay in
|
|
107
|
+
* lock-step with `include`: `entities`/`pages` key omitted when its dimension
|
|
108
|
+
* is excluded. Lets a paginating consumer know how many items exist in total.
|
|
109
|
+
*/
|
|
110
|
+
total: {
|
|
111
|
+
entities?: number;
|
|
112
|
+
pages?: number;
|
|
113
|
+
};
|
|
77
114
|
entities?: {
|
|
78
115
|
type: string;
|
|
79
116
|
slug: string;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 0.1.69 Transagents — `transagent-tools` MCP server.
|
|
3
|
+
*
|
|
4
|
+
* Single tool `runTransagent`: delegate a unit of work to a hidden CHILD thread
|
|
5
|
+
* ("banka") of the SAME spec, running in a chosen `contextType`. The child runs
|
|
6
|
+
* a full turn (side-effecting artifacts, live stream into the parent panel) and
|
|
7
|
+
* returns ONLY a `summary` to the parent LLM's context — keeping the parent's
|
|
8
|
+
* context budget free of the child's full transcript.
|
|
9
|
+
*
|
|
10
|
+
* Per-request instance (like `plan-tools` / `brief-tools`): `parentThreadId` and
|
|
11
|
+
* the `dispatcher` are captured from the parent turn. Mounted ONLY for
|
|
12
|
+
* `context_type ∈ {chat, patch}` and never inside a child banka (recursion depth
|
|
13
|
+
* 1) — both guards live in agent-turn.ts.
|
|
14
|
+
*
|
|
15
|
+
* Read-only cross-spec counterpart: `c4s-tools` (consults a DIFFERENT spec).
|
|
16
|
+
*/
|
|
17
|
+
import { type McpServerInstance } from '@inharness-ai/agent-adapters';
|
|
18
|
+
import type { TransagentDispatcher } from '../services/transagent-dispatcher.js';
|
|
19
|
+
/** Tool name as the SDK reports it (`mcp__<server>__<tool>`) — used by the
|
|
20
|
+
* agent-turn loop to correlate the tool_use event with the dispatcher. */
|
|
21
|
+
export declare const TRANSAGENT_TOOL_FULL_NAME = "mcp__transagent-tools__runTransagent";
|
|
22
|
+
export interface TransagentToolsContext {
|
|
23
|
+
parentThreadId: string;
|
|
24
|
+
dispatcher: TransagentDispatcher;
|
|
25
|
+
}
|
|
26
|
+
export declare function buildTransagentToolsServer(ctx: TransagentToolsContext): McpServerInstance;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 0.1.69 Transagents — `transagent-tools` MCP server.
|
|
3
|
+
*
|
|
4
|
+
* Single tool `runTransagent`: delegate a unit of work to a hidden CHILD thread
|
|
5
|
+
* ("banka") of the SAME spec, running in a chosen `contextType`. The child runs
|
|
6
|
+
* a full turn (side-effecting artifacts, live stream into the parent panel) and
|
|
7
|
+
* returns ONLY a `summary` to the parent LLM's context — keeping the parent's
|
|
8
|
+
* context budget free of the child's full transcript.
|
|
9
|
+
*
|
|
10
|
+
* Per-request instance (like `plan-tools` / `brief-tools`): `parentThreadId` and
|
|
11
|
+
* the `dispatcher` are captured from the parent turn. Mounted ONLY for
|
|
12
|
+
* `context_type ∈ {chat, patch}` and never inside a child banka (recursion depth
|
|
13
|
+
* 1) — both guards live in agent-turn.ts.
|
|
14
|
+
*
|
|
15
|
+
* Read-only cross-spec counterpart: `c4s-tools` (consults a DIFFERENT spec).
|
|
16
|
+
*/
|
|
17
|
+
import { createMcpServer, mcpTool } from '@inharness-ai/agent-adapters';
|
|
18
|
+
import { z } from 'zod';
|
|
19
|
+
import { DomainError } from '../services/tags.js';
|
|
20
|
+
/** Tool name as the SDK reports it (`mcp__<server>__<tool>`) — used by the
|
|
21
|
+
* agent-turn loop to correlate the tool_use event with the dispatcher. */
|
|
22
|
+
export const TRANSAGENT_TOOL_FULL_NAME = 'mcp__transagent-tools__runTransagent';
|
|
23
|
+
export function buildTransagentToolsServer(ctx) {
|
|
24
|
+
const runTransagent = mcpTool('runTransagent', [
|
|
25
|
+
'Delegate a unit of work to a hidden CHILD thread ("banka") of THIS specification.',
|
|
26
|
+
'The child runs a full turn in the chosen `contextType` (brief | chat | patch), may produce',
|
|
27
|
+
'side-effecting artifacts, streams live into your panel, and returns ONLY a concise `summary`',
|
|
28
|
+
'to your context — its full transcript stays hidden, keeping your context budget small.',
|
|
29
|
+
'Use it to hand off self-contained work: "turn this analysis into a brief", "split this plan",',
|
|
30
|
+
'"draft the patch for X". Returns { threadId, summary }.',
|
|
31
|
+
" - contextType='brief': creates an ANALYSIS brief file (source: analysis, to_release: null)",
|
|
32
|
+
' grounded in the `message` you pass (your analysis), then runs a brief-editorial child.',
|
|
33
|
+
' Optional payload: { fromReleaseName?, suffix?, content? }.',
|
|
34
|
+
" - contextType='patch': resolves a patch — payload MUST include { patchPath }.",
|
|
35
|
+
" - contextType='chat': a plain child chat turn.",
|
|
36
|
+
'Continue an existing child by passing its `threadId` (omit `contextType` semantics then).',
|
|
37
|
+
'At most one child runs per turn (this tool_use blocks until the child finishes).',
|
|
38
|
+
].join('\n'), {
|
|
39
|
+
contextType: z.enum(['brief', 'chat', 'patch']),
|
|
40
|
+
message: z.string(),
|
|
41
|
+
payload: z.record(z.string(), z.unknown()).optional(),
|
|
42
|
+
threadId: z.string().optional(),
|
|
43
|
+
}, async (input) => {
|
|
44
|
+
try {
|
|
45
|
+
const result = await ctx.dispatcher.run({
|
|
46
|
+
parentThreadId: ctx.parentThreadId,
|
|
47
|
+
contextType: input.contextType,
|
|
48
|
+
message: String(input.message ?? ''),
|
|
49
|
+
payload: input.payload && typeof input.payload === 'object'
|
|
50
|
+
? input.payload
|
|
51
|
+
: undefined,
|
|
52
|
+
threadId: typeof input.threadId === 'string' ? input.threadId : undefined,
|
|
53
|
+
});
|
|
54
|
+
return {
|
|
55
|
+
content: [{ type: 'text', text: JSON.stringify(result) }],
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
catch (err) {
|
|
59
|
+
// Non-abort child failure collapses upward as the parent's tool_result
|
|
60
|
+
// isError { code, message }. The last good summary remains readable via
|
|
61
|
+
// runTransagent({ threadId }).
|
|
62
|
+
const code = err instanceof DomainError ? err.code : 'AGENT_ERROR';
|
|
63
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
64
|
+
return {
|
|
65
|
+
content: [{ type: 'text', text: JSON.stringify({ error: { code, message } }) }],
|
|
66
|
+
isError: true,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
return createMcpServer({
|
|
71
|
+
name: 'transagent-tools',
|
|
72
|
+
tools: [runTransagent],
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=transagent-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transagent-tools.js","sourceRoot":"","sources":["../../../src/server/mcp/transagent-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,eAAe,EAAE,OAAO,EAA0B,MAAM,8BAA8B,CAAC;AAChG,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD;2EAC2E;AAC3E,MAAM,CAAC,MAAM,yBAAyB,GAAG,sCAAsC,CAAC;AAOhF,MAAM,UAAU,0BAA0B,CAAC,GAA2B;IACpE,MAAM,aAAa,GAAG,OAAO,CAC3B,eAAe,EACf;QACE,mFAAmF;QACnF,4FAA4F;QAC5F,8FAA8F;QAC9F,wFAAwF;QACxF,+FAA+F;QAC/F,yDAAyD;QACzD,8FAA8F;QAC9F,4FAA4F;QAC5F,gEAAgE;QAChE,iFAAiF;QACjF,kDAAkD;QAClD,2FAA2F;QAC3F,kFAAkF;KACnF,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ;QACE,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;QACnB,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;QACrD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAChC,EACD,KAAK,EAAE,KAAK,EAAE,EAAE;QACd,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;gBACtC,cAAc,EAAE,GAAG,CAAC,cAAc;gBAClC,WAAW,EAAE,KAAK,CAAC,WAAyC;gBAC5D,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;gBACpC,OAAO,EACL,KAAK,CAAC,OAAO,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;oBAChD,CAAC,CAAE,KAAK,CAAC,OAAmC;oBAC5C,CAAC,CAAC,SAAS;gBACf,QAAQ,EAAE,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;aAC1E,CAAC,CAAC;YACH,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,uEAAuE;YACvE,wEAAwE;YACxE,+BAA+B;YAC/B,MAAM,IAAI,GAAG,GAAG,YAAY,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC;YACnE,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC;gBACxF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,OAAO,eAAe,CAAC;QACrB,IAAI,EAAE,kBAAkB;QACxB,KAAK,EAAE,CAAC,aAAa,CAAC;KACvB,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -9,6 +9,7 @@ import { type PeerProject } from '../services/chat-context.js';
|
|
|
9
9
|
import type { PlanService } from '../services/plan.js';
|
|
10
10
|
import type { BriefService } from '../services/brief.js';
|
|
11
11
|
import type { PatchService } from '../services/patch.js';
|
|
12
|
+
import type { ReleaseService } from '../services/release.js';
|
|
12
13
|
import type { PageVersionService } from '../services/page-version.js';
|
|
13
14
|
import type { SkillResolver, SkillRegistry } from '../services/skill-registry.js';
|
|
14
15
|
import type { Annotation, ChatThread } from '../../shared/entities.js';
|
|
@@ -38,6 +39,8 @@ export interface AgentTurnDeps {
|
|
|
38
39
|
planService: PlanService;
|
|
39
40
|
briefService: BriefService;
|
|
40
41
|
patchService: PatchService;
|
|
42
|
+
/** 0.1.69 Transagents: dispatcher resolves "latest release" for analysis briefs. */
|
|
43
|
+
releaseService: ReleaseService;
|
|
41
44
|
pageVersions: PageVersionService;
|
|
42
45
|
skillResolver: SkillResolver;
|
|
43
46
|
skillRegistry: SkillRegistry;
|
|
@@ -81,6 +84,12 @@ export interface ActiveAdapter {
|
|
|
81
84
|
adapter: RuntimeAdapter;
|
|
82
85
|
emitter: EventEmitter;
|
|
83
86
|
replay: TurnReplay;
|
|
87
|
+
/**
|
|
88
|
+
* 0.1.69 Transagents: parent thread id of a child banka turn (NULL/undefined
|
|
89
|
+
* for top-level turns). The abort cascade in routes/chat.ts uses this to find
|
|
90
|
+
* and abort children when their parent is consciously aborted.
|
|
91
|
+
*/
|
|
92
|
+
parentThreadId?: string | null;
|
|
84
93
|
/**
|
|
85
94
|
* M05 queue: fan-out for events originating OUTSIDE the turn's stream loop
|
|
86
95
|
* (queue mutations from `POST/DELETE /api/chat/queue/...`). Reaches the
|
|
@@ -6,6 +6,8 @@ import { buildBriefToolsServer } from '../mcp/brief-tools.js';
|
|
|
6
6
|
import { buildC4sToolsServer } from '../mcp/c4s-tools.js';
|
|
7
7
|
import { buildSystemPrompt, subagentsFor } from '../services/chat-context.js';
|
|
8
8
|
import { readConfig } from '../config.js';
|
|
9
|
+
import { TransagentDispatcher } from '../services/transagent-dispatcher.js';
|
|
10
|
+
import { buildTransagentToolsServer, TRANSAGENT_TOOL_FULL_NAME } from '../mcp/transagent-tools.js';
|
|
9
11
|
/** M21 m05ctxreg: tools whitelist per context_type. Brief threads get only
|
|
10
12
|
* brief-tools (per-thread, mounted below) + release-tools (read-only).
|
|
11
13
|
* All other plugin servers (endpoint-tools, dto-tools, ui-view-tools,
|
|
@@ -74,6 +76,10 @@ export async function runAgentTurn(deps, input) {
|
|
|
74
76
|
'subagent_completed',
|
|
75
77
|
'todo_list_updated',
|
|
76
78
|
'user_input_request',
|
|
79
|
+
// 0.1.69 Transagents: bracket markers so reload/joiners reconstruct the
|
|
80
|
+
// nested child panel.
|
|
81
|
+
'transagent_started',
|
|
82
|
+
'transagent_completed',
|
|
77
83
|
'result',
|
|
78
84
|
'error',
|
|
79
85
|
]);
|
|
@@ -105,8 +111,36 @@ export async function runAgentTurn(deps, input) {
|
|
|
105
111
|
};
|
|
106
112
|
// Rejestracja PO zdefiniowaniu `emit` — kolejka (out-of-band `POST/DELETE
|
|
107
113
|
// /api/chat/queue/...`) używa go do broadcastu `queue_updated`/`queue_cleared`.
|
|
108
|
-
deps.activeAdapters.set(thread.id, {
|
|
114
|
+
deps.activeAdapters.set(thread.id, {
|
|
115
|
+
requestId,
|
|
116
|
+
adapter,
|
|
117
|
+
emitter,
|
|
118
|
+
replay,
|
|
119
|
+
emit,
|
|
120
|
+
// 0.1.69 Transagents: lets the abort cascade find this turn's children (when
|
|
121
|
+
// this turn IS a child, parentThreadId is set from the row).
|
|
122
|
+
parentThreadId: thread.parentThreadId,
|
|
123
|
+
});
|
|
109
124
|
emit({ type: 'connected', requestId, threadId: thread.id });
|
|
125
|
+
// 0.1.69 Transagents: race-free correlation between the SDK's
|
|
126
|
+
// `tool_use(runTransagent)` id and the dispatcher. The loop pushes the id when
|
|
127
|
+
// it observes the tool_use event; the dispatcher (invoked from the MCP handler)
|
|
128
|
+
// takes it. Queue + waiter handles either interleaving.
|
|
129
|
+
const transagentToolUseQueue = [];
|
|
130
|
+
const transagentWaiters = [];
|
|
131
|
+
const pushTransagentToolUse = (id) => {
|
|
132
|
+
const waiter = transagentWaiters.shift();
|
|
133
|
+
if (waiter)
|
|
134
|
+
waiter(id);
|
|
135
|
+
else
|
|
136
|
+
transagentToolUseQueue.push(id);
|
|
137
|
+
};
|
|
138
|
+
const takeTransagentToolUse = () => {
|
|
139
|
+
const queued = transagentToolUseQueue.shift();
|
|
140
|
+
if (queued !== undefined)
|
|
141
|
+
return Promise.resolve(queued);
|
|
142
|
+
return new Promise((resolve) => transagentWaiters.push(resolve));
|
|
143
|
+
};
|
|
110
144
|
let assistantBuf = '';
|
|
111
145
|
let thinkingBuf = '';
|
|
112
146
|
// 0.1.58: `answer` = treść OSTATNIEJ wiadomości assistant tury (finalne
|
|
@@ -290,6 +324,22 @@ export async function runAgentTurn(deps, input) {
|
|
|
290
324
|
// fresh factory per request. Whitelist: chat + patch contexts; brief is
|
|
291
325
|
// intentionally narrow (brief-tools + read-only release-tools only).
|
|
292
326
|
const c4sTools = isBrief ? null : buildC4sToolsServer();
|
|
327
|
+
// 0.1.69 transagent-tools: delegate work to a hidden child banka. Two guards:
|
|
328
|
+
// - context whitelist: chat + patch only (never brief — mirror c4sTools).
|
|
329
|
+
// - recursion depth 1: never inside a child banka (parentThreadId != null),
|
|
330
|
+
// so a banka cannot spawn a banka.
|
|
331
|
+
const isChildBanka = thread.parentThreadId != null;
|
|
332
|
+
const transagentTools = !isBrief && !isChildBanka
|
|
333
|
+
? buildTransagentToolsServer({
|
|
334
|
+
parentThreadId: thread.id,
|
|
335
|
+
dispatcher: new TransagentDispatcher(deps, {
|
|
336
|
+
model: input.model,
|
|
337
|
+
architectureConfig: input.architectureConfig,
|
|
338
|
+
takeToolUseId: takeTransagentToolUse,
|
|
339
|
+
runTurn: (childInput) => runAgentTurn(deps, childInput),
|
|
340
|
+
}),
|
|
341
|
+
})
|
|
342
|
+
: null;
|
|
293
343
|
const pluginMcpEntries = deps.pluginHost
|
|
294
344
|
.buildMcpServers()
|
|
295
345
|
.filter(({ name }) => (isBrief ? BRIEF_ALLOWED_PLUGIN_MCP.has(name) : true))
|
|
@@ -301,6 +351,8 @@ export async function runAgentTurn(deps, input) {
|
|
|
301
351
|
mcpServers['brief-tools'] = briefTools.config;
|
|
302
352
|
if (c4sTools)
|
|
303
353
|
mcpServers['c4s-tools'] = c4sTools.config;
|
|
354
|
+
if (transagentTools)
|
|
355
|
+
mcpServers['transagent-tools'] = transagentTools.config;
|
|
304
356
|
// M05 queue: streaming-input keeps the SDK input channel open across turns so
|
|
305
357
|
// queued messages can be pushed into the LIVE turn (`adapter.pushMessage`).
|
|
306
358
|
// Opt-in per architecture capability; one-shot path unchanged for the rest.
|
|
@@ -384,6 +436,11 @@ export async function runAgentTurn(deps, input) {
|
|
|
384
436
|
flushSubBuf(taskId);
|
|
385
437
|
else
|
|
386
438
|
flushMainBuf();
|
|
439
|
+
// 0.1.69 Transagents: feed the dispatcher the real tool_use id so the
|
|
440
|
+
// child stores it as spawned_by_tool_use_id (F5 reconstruction key).
|
|
441
|
+
if (event.toolName === TRANSAGENT_TOOL_FULL_NAME && event.toolUseId) {
|
|
442
|
+
pushTransagentToolUse(event.toolUseId);
|
|
443
|
+
}
|
|
387
444
|
deps.chatService.addMessage(thread.id, 'tool_use', JSON.stringify({ input: event.input }), event.toolName, event.toolUseId, taskId, planMode, 'streaming');
|
|
388
445
|
break;
|
|
389
446
|
}
|