@agents-ensemble/core 0.5.3 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/conductor/conductor-session-driver.d.ts +5 -0
- package/dist/conductor/conductor-session-driver.d.ts.map +1 -1
- package/dist/conductor/conductor-session-driver.js +44 -5
- package/dist/conductor/conductor-session-driver.js.map +1 -1
- package/dist/conductor/conductor-session.d.ts +3 -0
- package/dist/conductor/conductor-session.d.ts.map +1 -1
- package/dist/conductor/conductor-session.js +76 -29
- package/dist/conductor/conductor-session.js.map +1 -1
- package/dist/conductor/index.d.ts +2 -0
- package/dist/conductor/index.d.ts.map +1 -1
- package/dist/conductor/index.js +1 -0
- package/dist/conductor/index.js.map +1 -1
- package/dist/conductor/session/dispatch-hold.d.ts +27 -0
- package/dist/conductor/session/dispatch-hold.d.ts.map +1 -0
- package/dist/conductor/session/dispatch-hold.js +36 -0
- package/dist/conductor/session/dispatch-hold.js.map +1 -0
- package/dist/conductor/session/events/index.d.ts +1 -1
- package/dist/conductor/session/events/index.d.ts.map +1 -1
- package/dist/conductor/session/events/index.js.map +1 -1
- package/dist/conductor/session/events/session-log-event-groups.d.ts +2 -2
- package/dist/conductor/session/events/session-log-event-groups.d.ts.map +1 -1
- package/dist/conductor/session/events/session-log-event-groups.js +1 -0
- package/dist/conductor/session/events/session-log-event-groups.js.map +1 -1
- package/dist/conductor/session/events/session-log-event.d.ts +8 -1
- package/dist/conductor/session/events/session-log-event.d.ts.map +1 -1
- package/dist/conductor/session/session-logger.d.ts.map +1 -1
- package/dist/conductor/session/session-logger.js +1 -0
- package/dist/conductor/session/session-logger.js.map +1 -1
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +4 -0
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/index.d.ts +2 -2
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +1 -1
- package/dist/config/index.js.map +1 -1
- package/dist/config/parse-config.d.ts.map +1 -1
- package/dist/config/parse-config.js +36 -0
- package/dist/config/parse-config.js.map +1 -1
- package/dist/config/resolve-settings.d.ts +13 -1
- package/dist/config/resolve-settings.d.ts.map +1 -1
- package/dist/config/resolve-settings.js +44 -0
- package/dist/config/resolve-settings.js.map +1 -1
- package/dist/config/types.d.ts +11 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/dispatch/index.d.ts +2 -0
- package/dist/dispatch/index.d.ts.map +1 -1
- package/dist/dispatch/index.js +1 -0
- package/dist/dispatch/index.js.map +1 -1
- package/dist/dispatch/set-dispatch-hold-tool.d.ts +11 -0
- package/dist/dispatch/set-dispatch-hold-tool.d.ts.map +1 -0
- package/dist/dispatch/set-dispatch-hold-tool.js +60 -0
- package/dist/dispatch/set-dispatch-hold-tool.js.map +1 -0
- package/dist/github/fetch-github-updates.d.ts +1 -1
- package/dist/github/fetch-github-updates.d.ts.map +1 -1
- package/dist/github/fetch-github-updates.js +84 -39
- package/dist/github/fetch-github-updates.js.map +1 -1
- package/dist/github/github-monitor-cursor.d.ts +10 -0
- package/dist/github/github-monitor-cursor.d.ts.map +1 -1
- package/dist/github/github-monitor-cursor.js +14 -1
- package/dist/github/github-monitor-cursor.js.map +1 -1
- package/dist/github/github-monitor.d.ts +7 -0
- package/dist/github/github-monitor.d.ts.map +1 -1
- package/dist/github/github-monitor.js +27 -1
- package/dist/github/github-monitor.js.map +1 -1
- package/dist/github/index.d.ts +4 -1
- package/dist/github/index.d.ts.map +1 -1
- package/dist/github/index.js +2 -0
- package/dist/github/index.js.map +1 -1
- package/dist/github/register-github-watch-tool.d.ts +16 -0
- package/dist/github/register-github-watch-tool.d.ts.map +1 -0
- package/dist/github/register-github-watch-tool.js +142 -0
- package/dist/github/register-github-watch-tool.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/permission/format-permission-summary-for-operator.d.ts +1 -1
- package/dist/permission/format-permission-summary-for-operator.d.ts.map +1 -1
- package/dist/permission/format-permission-summary-for-operator.js +75 -19
- package/dist/permission/format-permission-summary-for-operator.js.map +1 -1
- package/dist/permission/permission-request.d.ts.map +1 -1
- package/dist/permission/permission-request.js +122 -4
- package/dist/permission/permission-request.js.map +1 -1
- package/dist/profiles/implementer-and-reviewer/conductor.prompt.yaml +1 -0
- package/dist/prompt/modules/ensemble/conductor-base-module.d.ts.map +1 -1
- package/dist/prompt/modules/ensemble/conductor-base-module.js +19 -0
- package/dist/prompt/modules/ensemble/conductor-base-module.js.map +1 -1
- package/dist/representation/index.d.ts +3 -0
- package/dist/representation/index.d.ts.map +1 -0
- package/dist/representation/index.js +2 -0
- package/dist/representation/index.js.map +1 -0
- package/dist/representation/session-log-representation.d.ts +24 -0
- package/dist/representation/session-log-representation.d.ts.map +1 -0
- package/dist/representation/session-log-representation.js +27 -0
- package/dist/representation/session-log-representation.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { parseIssueUrl } from '../issue/issue-ref.js';
|
|
2
|
+
import { DEFAULT_GITHUB_WATCH_KINDS, } from './github-monitor-cursor.js';
|
|
3
|
+
import { yamlToolResult } from '../dispatch/yaml-tool-result.js';
|
|
4
|
+
const PULL_REQUEST_WATCH_KINDS = new Set(DEFAULT_GITHUB_WATCH_KINDS);
|
|
5
|
+
export function createRegisterGitHubWatchTool(options) {
|
|
6
|
+
return {
|
|
7
|
+
register_github_watch: {
|
|
8
|
+
description: [
|
|
9
|
+
'Register a pull request for the harness GitHub monitor.',
|
|
10
|
+
'Provide prNumber or prUrl; the pull request must belong to the session Issue repository.',
|
|
11
|
+
'If kinds is omitted, monitor PR reviews, review comments, and CI completion.',
|
|
12
|
+
'Registering the same pull request more than once is a no-op.',
|
|
13
|
+
].join(' '),
|
|
14
|
+
inputSchema: {
|
|
15
|
+
type: 'object',
|
|
16
|
+
properties: {
|
|
17
|
+
prNumber: {
|
|
18
|
+
type: 'integer',
|
|
19
|
+
minimum: 1,
|
|
20
|
+
description: 'Pull request number (provide this or prUrl)',
|
|
21
|
+
},
|
|
22
|
+
prUrl: {
|
|
23
|
+
type: 'string',
|
|
24
|
+
description: 'GitHub pull request URL (provide this or prNumber)',
|
|
25
|
+
},
|
|
26
|
+
kinds: {
|
|
27
|
+
type: 'array',
|
|
28
|
+
items: {
|
|
29
|
+
type: 'string',
|
|
30
|
+
enum: [...DEFAULT_GITHUB_WATCH_KINDS],
|
|
31
|
+
},
|
|
32
|
+
description: 'Optional PR update kinds to monitor; defaults to review, review_comment, and ci.completed',
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
async execute(args) {
|
|
37
|
+
const issue = parseIssueUrl(options.issueUrl);
|
|
38
|
+
const numberFromArgs = parsePullRequestNumber(args.prNumber);
|
|
39
|
+
const urlRef = parsePullRequestUrl(args.prUrl);
|
|
40
|
+
if (numberFromArgs === undefined && urlRef === undefined) {
|
|
41
|
+
throw new Error('register_github_watch requires prNumber or prUrl');
|
|
42
|
+
}
|
|
43
|
+
if (urlRef && !sameRepository(issue, urlRef)) {
|
|
44
|
+
throw new Error('register_github_watch prUrl must belong to the same repository as the session Issue');
|
|
45
|
+
}
|
|
46
|
+
if (numberFromArgs !== undefined &&
|
|
47
|
+
urlRef !== undefined &&
|
|
48
|
+
numberFromArgs !== urlRef.number) {
|
|
49
|
+
throw new Error('register_github_watch prNumber and prUrl refer to different pull requests');
|
|
50
|
+
}
|
|
51
|
+
const prNumber = numberFromArgs ?? urlRef.number;
|
|
52
|
+
const url = `https://github.com/${issue.owner}/${issue.repo}/pull/${prNumber}`;
|
|
53
|
+
const requestedKinds = parseKinds(args.kinds);
|
|
54
|
+
const cursor = options.getCursor();
|
|
55
|
+
cursor.explicitPullRequests ??= {};
|
|
56
|
+
const key = String(prNumber);
|
|
57
|
+
const existing = cursor.explicitPullRequests[key];
|
|
58
|
+
const kinds = existing
|
|
59
|
+
? resolveKinds(existing.kinds)
|
|
60
|
+
: requestedKinds;
|
|
61
|
+
if (!existing) {
|
|
62
|
+
const registration = {
|
|
63
|
+
prNumber,
|
|
64
|
+
registeredAt: (options.now ?? (() => new Date()))().toISOString(),
|
|
65
|
+
kinds,
|
|
66
|
+
};
|
|
67
|
+
cursor.explicitPullRequests[key] = {
|
|
68
|
+
registeredAt: registration.registeredAt,
|
|
69
|
+
kinds: [...kinds],
|
|
70
|
+
};
|
|
71
|
+
await options.onRegistered?.(registration);
|
|
72
|
+
}
|
|
73
|
+
return yamlToolResult('register_github_watch', {
|
|
74
|
+
ok: true,
|
|
75
|
+
prNumber,
|
|
76
|
+
url,
|
|
77
|
+
kinds,
|
|
78
|
+
message: existing
|
|
79
|
+
? 'Pull request is already registered for the harness GitHub monitor'
|
|
80
|
+
: 'Registered for harness GitHub monitor',
|
|
81
|
+
});
|
|
82
|
+
},
|
|
83
|
+
},
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
function parsePullRequestNumber(value) {
|
|
87
|
+
if (value === undefined)
|
|
88
|
+
return undefined;
|
|
89
|
+
if (typeof value === 'number') {
|
|
90
|
+
if (Number.isSafeInteger(value) && value > 0)
|
|
91
|
+
return value;
|
|
92
|
+
}
|
|
93
|
+
else if (typeof value === 'string' && /^\d+$/.test(value.trim())) {
|
|
94
|
+
const parsed = Number(value.trim());
|
|
95
|
+
if (Number.isSafeInteger(parsed) && parsed > 0)
|
|
96
|
+
return parsed;
|
|
97
|
+
}
|
|
98
|
+
throw new Error('register_github_watch prNumber must be a positive integer');
|
|
99
|
+
}
|
|
100
|
+
function parsePullRequestUrl(value) {
|
|
101
|
+
if (value === undefined)
|
|
102
|
+
return undefined;
|
|
103
|
+
if (typeof value !== 'string' || value.trim().length === 0) {
|
|
104
|
+
throw new Error('register_github_watch prUrl must be a non-empty URL');
|
|
105
|
+
}
|
|
106
|
+
const match = /^https?:\/\/github\.com\/([^/]+)\/([^/]+)\/pull\/(\d+)\/?$/.exec(value.trim());
|
|
107
|
+
if (!match) {
|
|
108
|
+
throw new Error('register_github_watch prUrl must be a GitHub pull request URL');
|
|
109
|
+
}
|
|
110
|
+
const number = Number(match[3]);
|
|
111
|
+
if (!Number.isSafeInteger(number) || number <= 0) {
|
|
112
|
+
throw new Error('register_github_watch prUrl must contain a valid PR number');
|
|
113
|
+
}
|
|
114
|
+
return { owner: match[1], repo: match[2], number };
|
|
115
|
+
}
|
|
116
|
+
function sameRepository(issue, pr) {
|
|
117
|
+
return (issue.owner.toLowerCase() === pr.owner.toLowerCase() &&
|
|
118
|
+
issue.repo.toLowerCase() === pr.repo.toLowerCase());
|
|
119
|
+
}
|
|
120
|
+
function parseKinds(value) {
|
|
121
|
+
if (value === undefined)
|
|
122
|
+
return [...DEFAULT_GITHUB_WATCH_KINDS];
|
|
123
|
+
if (!Array.isArray(value)) {
|
|
124
|
+
throw new Error('register_github_watch kinds must be an array');
|
|
125
|
+
}
|
|
126
|
+
const kinds = [];
|
|
127
|
+
for (const item of value) {
|
|
128
|
+
if (typeof item !== 'string' || !PULL_REQUEST_WATCH_KINDS.has(item)) {
|
|
129
|
+
throw new Error('register_github_watch kinds must contain only pr.review, pr.review_comment, or ci.completed');
|
|
130
|
+
}
|
|
131
|
+
if (!kinds.includes(item)) {
|
|
132
|
+
kinds.push(item);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return kinds;
|
|
136
|
+
}
|
|
137
|
+
function resolveKinds(kinds) {
|
|
138
|
+
if (!kinds)
|
|
139
|
+
return [...DEFAULT_GITHUB_WATCH_KINDS];
|
|
140
|
+
return parseKinds(kinds);
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=register-github-watch-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-github-watch-tool.js","sourceRoot":"","sources":["../../src/github/register-github-watch-tool.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -10,6 +10,7 @@ export * from './dispatch/index.js';
|
|
|
10
10
|
export * from './github/index.js';
|
|
11
11
|
export * from './conductor/index.js';
|
|
12
12
|
export * from './permission/index.js';
|
|
13
|
+
export * from './representation/index.js';
|
|
13
14
|
export * from './usage/index.js';
|
|
14
15
|
export * from './escalation/index.js';
|
|
15
16
|
export * from './session/index.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAEhE,eAAO,MAAM,YAAY,0BAA0B,CAAC;AAEpD,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AAEnC,uEAAuE;AACvE,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,yBAAyB,EACzB,8BAA8B,GAC/B,MAAM,oBAAoB,CAAC;AAC5B,uEAAuE;AACvE,YAAY,EACV,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAEhE,eAAO,MAAM,YAAY,0BAA0B,CAAC;AAEpD,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AAEnC,uEAAuE;AACvE,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,yBAAyB,EACzB,8BAA8B,GAC/B,MAAM,oBAAoB,CAAC;AAC5B,uEAAuE;AACvE,YAAY,EACV,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,oBAAoB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -10,6 +10,7 @@ export * from './dispatch/index.js';
|
|
|
10
10
|
export * from './github/index.js';
|
|
11
11
|
export * from './conductor/index.js';
|
|
12
12
|
export * from './permission/index.js';
|
|
13
|
+
export * from './representation/index.js';
|
|
13
14
|
export * from './usage/index.js';
|
|
14
15
|
export * from './escalation/index.js';
|
|
15
16
|
export * from './session/index.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAEhE,MAAM,CAAC,MAAM,YAAY,GAAG,uBAAuB,CAAC;AAEpD,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AAEnC,uEAAuE;AACvE,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,yBAAyB,EACzB,8BAA8B,GAC/B,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAEhE,MAAM,CAAC,MAAM,YAAY,GAAG,uBAAuB,CAAC;AAEpD,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AAEnC,uEAAuE;AACvE,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,yBAAyB,EACzB,8BAA8B,GAC/B,MAAM,oBAAoB,CAAC"}
|
|
@@ -10,6 +10,6 @@ export interface PermissionOperationSummary {
|
|
|
10
10
|
field: string;
|
|
11
11
|
value: string;
|
|
12
12
|
}
|
|
13
|
-
/**
|
|
13
|
+
/** ACP payload の構造化フィールドから、ツールに依存しない操作概要を抜き出す。 */
|
|
14
14
|
export declare function extractPermissionOperationSummary(request: PermissionRequest): PermissionOperationSummary | undefined;
|
|
15
15
|
//# sourceMappingURL=format-permission-summary-for-operator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format-permission-summary-for-operator.d.ts","sourceRoot":"","sources":["../../src/permission/format-permission-summary-for-operator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAIjE,MAAM,WAAW,yCAAyC;IACxD,uEAAuE;IACvE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,kDAAkD;AAClD,wBAAgB,kCAAkC,CAChD,OAAO,EAAE,iBAAiB,EAC1B,OAAO,GAAE,yCAA8C,GACtD,MAAM,CAgBR;AAED,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,
|
|
1
|
+
{"version":3,"file":"format-permission-summary-for-operator.d.ts","sourceRoot":"","sources":["../../src/permission/format-permission-summary-for-operator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAIjE,MAAM,WAAW,yCAAyC;IACxD,uEAAuE;IACvE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,kDAAkD;AAClD,wBAAgB,kCAAkC,CAChD,OAAO,EAAE,iBAAiB,EAC1B,OAAO,GAAE,yCAA8C,GACtD,MAAM,CAgBR;AAED,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,kDAAkD;AAClD,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,iBAAiB,GACzB,0BAA0B,GAAG,SAAS,CAuExC"}
|
|
@@ -15,32 +15,58 @@ export function formatPermissionSummaryForOperator(pending, options = {}) {
|
|
|
15
15
|
parts.push(`id=${formatLogValue(shortPermissionId(pending.id))}`);
|
|
16
16
|
return parts.join(' ');
|
|
17
17
|
}
|
|
18
|
-
/**
|
|
18
|
+
/** ACP payload の構造化フィールドから、ツールに依存しない操作概要を抜き出す。 */
|
|
19
19
|
export function extractPermissionOperationSummary(request) {
|
|
20
20
|
const raw = asRecord(request.raw) ?? {};
|
|
21
|
-
const toolCall =
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
raw
|
|
21
|
+
const toolCall = asRecordOrJson(raw.toolCall) ?? asRecordOrJson(raw.tool_call);
|
|
22
|
+
const inputs = [
|
|
23
|
+
asRecordOrJson(raw.input),
|
|
24
|
+
asRecordOrJson(raw.arguments),
|
|
25
|
+
asRecordOrJson(raw.rawInput),
|
|
26
|
+
asRecordOrJson(raw.raw_input),
|
|
27
|
+
asRecordOrJson(toolCall?.args),
|
|
28
|
+
asRecordOrJson(toolCall?.rawInput),
|
|
29
|
+
asRecordOrJson(toolCall?.raw_input),
|
|
30
|
+
raw,
|
|
31
|
+
].filter((input) => input !== undefined);
|
|
32
|
+
const command = inputs
|
|
33
|
+
.map((input) => readString(input, 'command', 'cmd', 'commandLine', 'shellCommand', 'script'))
|
|
34
|
+
.find((value) => value !== undefined);
|
|
35
|
+
if (command) {
|
|
36
|
+
return { field: 'cmd', value: sanitizeSummaryValue(command) };
|
|
37
|
+
}
|
|
27
38
|
const tool = request.toolName.trim().toLowerCase();
|
|
28
39
|
if (tool === 'shell' || tool === 'bash') {
|
|
29
|
-
const
|
|
30
|
-
readString(
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
return { field: 'cmd', value: sanitizeSummaryValue(command) };
|
|
40
|
+
const description = inputs
|
|
41
|
+
.map((input) => readString(input, 'description', 'working_directory'))
|
|
42
|
+
.find((value) => value !== undefined);
|
|
43
|
+
if (description) {
|
|
44
|
+
return { field: 'cmd', value: sanitizeSummaryValue(description) };
|
|
35
45
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
readString(raw, 'path', 'file_path', 'filePath', 'target_file');
|
|
40
|
-
if (path) {
|
|
41
|
-
return { field: 'path', value: sanitizeSummaryValue(path) };
|
|
46
|
+
const rawInputText = readString(toolCall, 'rawInput', 'raw_input');
|
|
47
|
+
if (rawInputText && !asRecordOrJson(rawInputText)) {
|
|
48
|
+
return { field: 'cmd', value: sanitizeSummaryValue(rawInputText) };
|
|
42
49
|
}
|
|
43
50
|
}
|
|
51
|
+
const path = inputs
|
|
52
|
+
.map((input) => readString(input, 'path', 'file_path', 'filePath', 'target_file', 'filename'))
|
|
53
|
+
.find((value) => value !== undefined);
|
|
54
|
+
if (path) {
|
|
55
|
+
return { field: 'path', value: sanitizeSummaryValue(path) };
|
|
56
|
+
}
|
|
57
|
+
const locationPath = readLocationPath(raw, toolCall);
|
|
58
|
+
if (locationPath) {
|
|
59
|
+
return { field: 'path', value: sanitizeSummaryValue(locationPath) };
|
|
60
|
+
}
|
|
61
|
+
const toolCallId = readString(toolCall, 'toolCallId', 'tool_call_id') ??
|
|
62
|
+
readString(raw, 'toolCallId', 'tool_call_id');
|
|
63
|
+
if (toolCallId) {
|
|
64
|
+
return { field: 'toolCallId', value: sanitizeSummaryValue(toolCallId) };
|
|
65
|
+
}
|
|
66
|
+
const title = readString(toolCall, 'title', 'description');
|
|
67
|
+
if (title) {
|
|
68
|
+
return { field: 'detail', value: sanitizeSummaryValue(title) };
|
|
69
|
+
}
|
|
44
70
|
const fallback = sanitizeSummaryValue(safeShortenRaw(request.raw));
|
|
45
71
|
if (fallback) {
|
|
46
72
|
return { field: 'detail', value: fallback };
|
|
@@ -59,6 +85,36 @@ function asRecord(value) {
|
|
|
59
85
|
? value
|
|
60
86
|
: undefined;
|
|
61
87
|
}
|
|
88
|
+
function asRecordOrJson(value) {
|
|
89
|
+
const record = asRecord(value);
|
|
90
|
+
if (record) {
|
|
91
|
+
return record;
|
|
92
|
+
}
|
|
93
|
+
if (typeof value !== 'string') {
|
|
94
|
+
return undefined;
|
|
95
|
+
}
|
|
96
|
+
try {
|
|
97
|
+
return asRecord(JSON.parse(value));
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
return undefined;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
function readLocationPath(raw, toolCall) {
|
|
104
|
+
for (const candidate of [raw.locations, toolCall?.locations]) {
|
|
105
|
+
if (!Array.isArray(candidate)) {
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
for (const location of candidate) {
|
|
109
|
+
const record = asRecord(location);
|
|
110
|
+
const path = readString(record, 'path', 'file_path', 'filePath', 'uri');
|
|
111
|
+
if (path) {
|
|
112
|
+
return path;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return undefined;
|
|
117
|
+
}
|
|
62
118
|
function readString(record, ...keys) {
|
|
63
119
|
if (!record) {
|
|
64
120
|
return undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format-permission-summary-for-operator.js","sourceRoot":"","sources":["../../src/permission/format-permission-summary-for-operator.ts"],"names":[],"mappings":"AAGA,MAAM,wBAAwB,GAAG,GAAG,CAAC;AAOrC,kDAAkD;AAClD,MAAM,UAAU,kCAAkC,CAChD,OAA0B,EAC1B,UAAqD,EAAE;IAEvD,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,QAAQ,CAAC;IACvD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;IACtC,MAAM,KAAK,GAAG;QACZ,oBAAoB;QACpB,UAAU,cAAc,CAAC,MAAM,CAAC,EAAE;QAClC,QAAQ,cAAc,CAAC,IAAI,CAAC,EAAE;KAC/B,CAAC;IAEF,MAAM,SAAS,GAAG,iCAAiC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACrE,IAAI,SAAS,EAAE,CAAC;QACd,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,IAAI,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAM,cAAc,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAClE,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAOD,
|
|
1
|
+
{"version":3,"file":"format-permission-summary-for-operator.js","sourceRoot":"","sources":["../../src/permission/format-permission-summary-for-operator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permission-request.d.ts","sourceRoot":"","sources":["../../src/permission/permission-request.ts"],"names":[],"mappings":"AAGA,2DAA2D;AAC3D,MAAM,WAAW,gBAAgB;IAC/B,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC7B,GAAG,EAAE,OAAO,CAAC;CACd;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,OAAO,GAAG,iBAAiB,
|
|
1
|
+
{"version":3,"file":"permission-request.d.ts","sourceRoot":"","sources":["../../src/permission/permission-request.ts"],"names":[],"mappings":"AAGA,2DAA2D;AAC3D,MAAM,WAAW,gBAAgB;IAC/B,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC7B,GAAG,EAAE,OAAO,CAAC;CACd;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,OAAO,GAAG,iBAAiB,CA0CzE"}
|
|
@@ -3,10 +3,21 @@ export function parsePermissionRequest(params) {
|
|
|
3
3
|
const record = params && typeof params === 'object'
|
|
4
4
|
? params
|
|
5
5
|
: {};
|
|
6
|
+
const toolCallRecord = readToolCallPayload(record);
|
|
6
7
|
const toolCall = readToolCallRecord(record);
|
|
7
8
|
const toolFromCall = toolCall ? formatConductorToolName(toolCall) : undefined;
|
|
8
9
|
const explicitTool = readNonEmptyString(record.toolName) ?? readNonEmptyString(record.tool_name);
|
|
9
|
-
const
|
|
10
|
+
const inferredTool = inferAcpToolName(toolCallRecord) ??
|
|
11
|
+
inferToolNameFromToolCallId(readNonEmptyString(toolCallRecord?.toolCallId) ??
|
|
12
|
+
readNonEmptyString(toolCallRecord?.tool_call_id) ??
|
|
13
|
+
readNonEmptyString(record.toolCallId) ??
|
|
14
|
+
readNonEmptyString(record.tool_call_id)) ??
|
|
15
|
+
inferToolNameFromInput(record, toolCallRecord);
|
|
16
|
+
const toolName = (explicitTool && !isUnknownToolName(explicitTool) ? explicitTool : undefined) ??
|
|
17
|
+
toolFromCall ??
|
|
18
|
+
inferredTool ??
|
|
19
|
+
explicitTool ??
|
|
20
|
+
'unknown';
|
|
10
21
|
const options = parsePermissionOptions(record.options);
|
|
11
22
|
return {
|
|
12
23
|
sessionId: typeof record.sessionId === 'string'
|
|
@@ -39,11 +50,10 @@ function parsePermissionOptions(value) {
|
|
|
39
50
|
return options.length > 0 ? options : undefined;
|
|
40
51
|
}
|
|
41
52
|
function readToolCallRecord(record) {
|
|
42
|
-
const
|
|
43
|
-
if (!
|
|
53
|
+
const candidate = readToolCallPayload(record);
|
|
54
|
+
if (!candidate) {
|
|
44
55
|
return undefined;
|
|
45
56
|
}
|
|
46
|
-
const candidate = toolCall;
|
|
47
57
|
const type = readNonEmptyString(candidate.type);
|
|
48
58
|
if (!type) {
|
|
49
59
|
return undefined;
|
|
@@ -53,6 +63,114 @@ function readToolCallRecord(record) {
|
|
|
53
63
|
: {};
|
|
54
64
|
return { type, args };
|
|
55
65
|
}
|
|
66
|
+
function readToolCallPayload(record) {
|
|
67
|
+
const toolCall = record.toolCall ?? record.tool_call;
|
|
68
|
+
return asRecordOrJson(toolCall);
|
|
69
|
+
}
|
|
70
|
+
function inferAcpToolName(toolCall) {
|
|
71
|
+
if (!toolCall) {
|
|
72
|
+
return undefined;
|
|
73
|
+
}
|
|
74
|
+
const explicitName = readNonEmptyString(toolCall.toolName) ?? readNonEmptyString(toolCall.name);
|
|
75
|
+
if (explicitName && !isUnknownToolName(explicitName)) {
|
|
76
|
+
return explicitName;
|
|
77
|
+
}
|
|
78
|
+
const kind = readNonEmptyString(toolCall.kind)?.toLowerCase();
|
|
79
|
+
if (kind) {
|
|
80
|
+
const nameByKind = {
|
|
81
|
+
execute: 'Shell',
|
|
82
|
+
read: 'Read',
|
|
83
|
+
edit: 'Edit',
|
|
84
|
+
delete: 'Delete',
|
|
85
|
+
move: 'Move',
|
|
86
|
+
search: 'Search',
|
|
87
|
+
fetch: 'Fetch',
|
|
88
|
+
think: 'Think',
|
|
89
|
+
};
|
|
90
|
+
const name = nameByKind[kind];
|
|
91
|
+
if (name) {
|
|
92
|
+
return name;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return undefined;
|
|
96
|
+
}
|
|
97
|
+
function inferToolNameFromToolCallId(toolCallId) {
|
|
98
|
+
if (!toolCallId) {
|
|
99
|
+
return undefined;
|
|
100
|
+
}
|
|
101
|
+
const prefix = toolCallId.split('-', 1)[0]?.toLowerCase();
|
|
102
|
+
const nameByPrefix = {
|
|
103
|
+
exec: 'Shell',
|
|
104
|
+
shell: 'Shell',
|
|
105
|
+
bash: 'Shell',
|
|
106
|
+
write: 'Write',
|
|
107
|
+
edit: 'Edit',
|
|
108
|
+
delete: 'Delete',
|
|
109
|
+
read: 'Read',
|
|
110
|
+
};
|
|
111
|
+
return prefix ? nameByPrefix[prefix] : undefined;
|
|
112
|
+
}
|
|
113
|
+
function inferToolNameFromInput(record, toolCall) {
|
|
114
|
+
const candidates = [
|
|
115
|
+
record.input,
|
|
116
|
+
record.arguments,
|
|
117
|
+
record.rawInput,
|
|
118
|
+
record.raw_input,
|
|
119
|
+
toolCall?.args,
|
|
120
|
+
toolCall?.rawInput,
|
|
121
|
+
toolCall?.raw_input,
|
|
122
|
+
];
|
|
123
|
+
for (const candidate of candidates) {
|
|
124
|
+
const input = asRecordOrJson(candidate);
|
|
125
|
+
if (!input) {
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
if (readString(input, 'command', 'cmd', 'commandLine', 'shellCommand')) {
|
|
129
|
+
return 'Shell';
|
|
130
|
+
}
|
|
131
|
+
const provider = readNonEmptyString(input.providerIdentifier ?? input.provider_id ?? input.provider);
|
|
132
|
+
const tool = readNonEmptyString(input.toolName ?? input.tool_name);
|
|
133
|
+
if (provider && tool) {
|
|
134
|
+
return `mcp:${provider}/${tool}`;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return undefined;
|
|
138
|
+
}
|
|
139
|
+
function asRecordOrJson(value) {
|
|
140
|
+
const record = asRecord(value);
|
|
141
|
+
if (record) {
|
|
142
|
+
return record;
|
|
143
|
+
}
|
|
144
|
+
if (typeof value !== 'string') {
|
|
145
|
+
return undefined;
|
|
146
|
+
}
|
|
147
|
+
try {
|
|
148
|
+
return asRecord(JSON.parse(value));
|
|
149
|
+
}
|
|
150
|
+
catch {
|
|
151
|
+
return undefined;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
function asRecord(value) {
|
|
155
|
+
return value && typeof value === 'object' && !Array.isArray(value)
|
|
156
|
+
? value
|
|
157
|
+
: undefined;
|
|
158
|
+
}
|
|
159
|
+
function readString(record, ...keys) {
|
|
160
|
+
if (!record) {
|
|
161
|
+
return undefined;
|
|
162
|
+
}
|
|
163
|
+
for (const key of keys) {
|
|
164
|
+
const value = record[key];
|
|
165
|
+
if (typeof value === 'string' && value.trim()) {
|
|
166
|
+
return value.trim();
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
return undefined;
|
|
170
|
+
}
|
|
171
|
+
function isUnknownToolName(value) {
|
|
172
|
+
return value.trim().toLowerCase() === 'unknown';
|
|
173
|
+
}
|
|
56
174
|
function readNonEmptyString(value) {
|
|
57
175
|
if (typeof value !== 'string' || !value.trim()) {
|
|
58
176
|
return undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permission-request.js","sourceRoot":"","sources":["../../src/permission/permission-request.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAmB9E,MAAM,UAAU,sBAAsB,CAAC,MAAe;IACpD,MAAM,MAAM,GACV,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QAClC,CAAC,CAAE,MAAkC;QACrC,CAAC,CAAC,EAAE,CAAC;IAET,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAE9E,MAAM,YAAY,GAChB,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAE9E,MAAM,QAAQ,
|
|
1
|
+
{"version":3,"file":"permission-request.js","sourceRoot":"","sources":["../../src/permission/permission-request.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ instructions:
|
|
|
5
5
|
- 自分で判断できないことは open question でオペレータの最終判断を仰ぐ
|
|
6
6
|
- implementer / reviewer との会話は簡潔に行います。詳細な状態・報告の正本は Issue / PR とします。
|
|
7
7
|
- permission.pending が届いたら、必ず resolve_permission で可否を決定します(回答があるまで worker は作業を完遂できません)。不安要素があれば ask_human でオペレータに問い合わせます
|
|
8
|
+
- implementer から PR 作成の報告を受けたら、GitHub Search の反映を待たず `register_github_watch` に `prNumber` または `prUrl` を渡して監視登録します。同じリポジトリの PR だけを登録し、`kinds` は必要な場合だけ指定します。
|
|
8
9
|
- '指示の典型的な内容:'
|
|
9
10
|
- ' - **implementer** へ: 対象 Issue、今回のゴール、スコープ、使う Skill 等'
|
|
10
11
|
- ' - **reviewer** へ: 対象 PR URL、レビュー観点、再レビューなら前回ブロッカー'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conductor-base-module.d.ts","sourceRoot":"","sources":["../../../../src/prompt/modules/ensemble/conductor-base-module.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,YAAY,CAAC,eAAe,
|
|
1
|
+
{"version":3,"file":"conductor-base-module.d.ts","sourceRoot":"","sources":["../../../../src/prompt/modules/ensemble/conductor-base-module.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,YAAY,CAAC,eAAe,CA6G7D,CAAC"}
|
|
@@ -27,6 +27,16 @@ export const conductorBaseModule = {
|
|
|
27
27
|
'- `## permission 判断待ち` — worker の操作許可が保留中',
|
|
28
28
|
],
|
|
29
29
|
},
|
|
30
|
+
{
|
|
31
|
+
type: 'subsection',
|
|
32
|
+
title: 'dispatch 保留',
|
|
33
|
+
items: [
|
|
34
|
+
'- 複数 worker の完了をまとめて読みたいとき、Issue / PR を集中して読んでいるときは `set_dispatch_hold({ hold: true })` を使う',
|
|
35
|
+
'- 保留中も `operator.message` と `permission.pending` は即時に届く。permission の判断を保留モードで止めない',
|
|
36
|
+
'- 作業状況をまとめて判断できる状態になったら `set_dispatch_hold({ hold: false })` を使う。保留中の trigger イベントは到着順の 1 束として 1 回の通知に合成される',
|
|
37
|
+
'- 保留は一時的な Driver 状態で、セッション再開時には解除されている',
|
|
38
|
+
],
|
|
39
|
+
},
|
|
30
40
|
{
|
|
31
41
|
type: 'subsection',
|
|
32
42
|
title: 'メトリクス(オペレータへの状態説明用)',
|
|
@@ -69,6 +79,15 @@ export const conductorBaseModule = {
|
|
|
69
79
|
'- 状態照会に `prompt_worker` を使わない。Issue / PR を読まず tool 結果で答える',
|
|
70
80
|
],
|
|
71
81
|
},
|
|
82
|
+
{
|
|
83
|
+
type: 'subsection',
|
|
84
|
+
title: 'GitHub 監視',
|
|
85
|
+
items: [
|
|
86
|
+
'- implementer から PR 作成の報告を受けたら、GitHub Search の反映を待たず `register_github_watch` で監視登録する',
|
|
87
|
+
'- `register_github_watch` には `prNumber` または `prUrl` を渡す。同じリポジトリの PR だけを登録する',
|
|
88
|
+
'- `kinds` を省略すると PR review / review comment / CI 完了を監視する。登録済み PR の再登録は不要',
|
|
89
|
+
],
|
|
90
|
+
},
|
|
72
91
|
{
|
|
73
92
|
type: 'subsection',
|
|
74
93
|
title: 'permission',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conductor-base-module.js","sourceRoot":"","sources":["../../../../src/prompt/modules/ensemble/conductor-base-module.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAkC;IAChE,SAAS,EAAE;QACT,+BAA+B;QAC/B,2CAA2C;KAC5C;IACD,KAAK,EAAE;QACL,wDAAwD;QACxD,qEAAqE;QACrE,0DAA0D;KAC3D;IACD,YAAY,EAAE;QACZ,gEAAgE;QAChE,yDAAyD;QACzD,sDAAsD;QACtD;YACE,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,gBAAgB;YACvB,KAAK,EAAE;gBACL,mCAAmC;gBACnC,wCAAwC;gBACxC,wCAAwC;gBACxC,kKAAkK;gBAClK,2CAA2C;aAC5C;SACF;QACD;YACE,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,qBAAqB;YAC5B,KAAK,EAAE;gBACL,sDAAsD;gBACtD,gFAAgF;gBAChF,gDAAgD;gBAChD,mFAAmF;aACpF;SACF;QACD;YACE,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,eAAe;YACtB,KAAK,EAAE;gBACL,gDAAgD;gBAChD,2CAA2C;gBAC3C,oCAAoC;gBACpC,2EAA2E;gBAC3E,qDAAqD;gBACrD,2BAA2B;aAC5B;SACF;QACD;YACE,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,eAAe;YACtB,KAAK,EAAE;gBACL,iGAAiG;gBACjG,yEAAyE;gBACzE,iEAAiE;gBACjE,2DAA2D;aAC5D;SACF;QACD;YACE,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,aAAa;YACpB,KAAK,EAAE;gBACL,8FAA8F;gBAC9F,uEAAuE;gBACvE,8DAA8D;gBAC9D,2DAA2D;aAC5D;SACF;QACD;YACE,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,YAAY;YACnB,KAAK,EAAE;gBACL,+CAA+C;gBAC/C,8CAA8C;gBAC9C,yCAAyC;gBACzC,iCAAiC;gBACjC,uDAAuD;aACxD;SACF;QACD;YACE,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,eAAe;YACtB,KAAK,EAAE;gBACL,wCAAwC;gBACxC,qDAAqD;gBACrD,+BAA+B;gBAC/B,qDAAqD;gBACrD,0DAA0D;aAC3D;SACF;KACF;CACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"conductor-base-module.js","sourceRoot":"","sources":["../../../../src/prompt/modules/ensemble/conductor-base-module.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAkC;IAChE,SAAS,EAAE;QACT,+BAA+B;QAC/B,2CAA2C;KAC5C;IACD,KAAK,EAAE;QACL,wDAAwD;QACxD,qEAAqE;QACrE,0DAA0D;KAC3D;IACD,YAAY,EAAE;QACZ,gEAAgE;QAChE,yDAAyD;QACzD,sDAAsD;QACtD;YACE,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,gBAAgB;YACvB,KAAK,EAAE;gBACL,mCAAmC;gBACnC,wCAAwC;gBACxC,wCAAwC;gBACxC,kKAAkK;gBAClK,2CAA2C;aAC5C;SACF;QACD;YACE,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,aAAa;YACpB,KAAK,EAAE;gBACL,6FAA6F;gBAC7F,mFAAmF;gBACnF,6GAA6G;gBAC7G,wCAAwC;aACzC;SACF;QACD;YACE,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,qBAAqB;YAC5B,KAAK,EAAE;gBACL,sDAAsD;gBACtD,gFAAgF;gBAChF,gDAAgD;gBAChD,mFAAmF;aACpF;SACF;QACD;YACE,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,eAAe;YACtB,KAAK,EAAE;gBACL,gDAAgD;gBAChD,2CAA2C;gBAC3C,oCAAoC;gBACpC,2EAA2E;gBAC3E,qDAAqD;gBACrD,2BAA2B;aAC5B;SACF;QACD;YACE,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,eAAe;YACtB,KAAK,EAAE;gBACL,iGAAiG;gBACjG,yEAAyE;gBACzE,iEAAiE;gBACjE,2DAA2D;aAC5D;SACF;QACD;YACE,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,aAAa;YACpB,KAAK,EAAE;gBACL,8FAA8F;gBAC9F,uEAAuE;gBACvE,8DAA8D;gBAC9D,2DAA2D;aAC5D;SACF;QACD;YACE,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,WAAW;YAClB,KAAK,EAAE;gBACL,sFAAsF;gBACtF,6EAA6E;gBAC7E,0EAA0E;aAC3E;SACF;QACD;YACE,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,YAAY;YACnB,KAAK,EAAE;gBACL,+CAA+C;gBAC/C,8CAA8C;gBAC9C,yCAAyC;gBACzC,iCAAiC;gBACjC,uDAAuD;aACxD;SACF;QACD;YACE,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,eAAe;YACtB,KAAK,EAAE;gBACL,wCAAwC;gBACxC,qDAAqD;gBACrD,+BAA+B;gBAC/B,qDAAqD;gBACrD,0DAA0D;aAC3D;SACF;KACF;CACF,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { createSessionLogRepresentation, registerSessionLogRenderer, renderSessionLogEvent, sessionLogRepresentation, } from './session-log-representation.js';
|
|
2
|
+
export type { SessionLogRepresentationEventType, SessionLogRenderer, SessionLogRepresentation, } from './session-log-representation.js';
|
|
3
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/representation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,8BAA8B,EAC9B,0BAA0B,EAC1B,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,iCAAiC,CAAC;AACzC,YAAY,EACV,iCAAiC,EACjC,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,iCAAiC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/representation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,8BAA8B,EAC9B,0BAA0B,EAC1B,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,iCAAiC,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { SessionLogEvent } from '../conductor/session/events/session-log-event.js';
|
|
2
|
+
export type SessionLogRepresentationEventType = SessionLogEvent['type'];
|
|
3
|
+
export type SessionLogRenderer<Type extends SessionLogRepresentationEventType> = (event: Extract<SessionLogEvent, {
|
|
4
|
+
type: Type;
|
|
5
|
+
}>) => string | undefined;
|
|
6
|
+
/**
|
|
7
|
+
* SessionLogEvent の表示表現をイベント型ごとに登録・解決する core 側の入口。
|
|
8
|
+
*
|
|
9
|
+
* 出力経路(stderr / TUI 活動ログ)が同じ表現を使えるよう、sink はこの
|
|
10
|
+
* representation にイベントを渡すだけにする。未登録のイベントは undefined
|
|
11
|
+
* を返し、sink 側の既存フォーマットへフォールバックできる。
|
|
12
|
+
*/
|
|
13
|
+
export interface SessionLogRepresentation {
|
|
14
|
+
register<Type extends SessionLogRepresentationEventType>(type: Type, renderer: SessionLogRenderer<Type>): void;
|
|
15
|
+
render(event: SessionLogEvent): string | undefined;
|
|
16
|
+
}
|
|
17
|
+
export declare function createSessionLogRepresentation(): SessionLogRepresentation;
|
|
18
|
+
/** 既定の operator 向け SessionLogEvent representation。 */
|
|
19
|
+
export declare const sessionLogRepresentation: SessionLogRepresentation;
|
|
20
|
+
/** 既定 registry にイベント型 renderer を追加する登録入口。 */
|
|
21
|
+
export declare function registerSessionLogRenderer<Type extends SessionLogRepresentationEventType>(type: Type, renderer: SessionLogRenderer<Type>): void;
|
|
22
|
+
/** 既定 registry から operator 向け 1 行表現を解決する入口。 */
|
|
23
|
+
export declare function renderSessionLogEvent(event: SessionLogEvent): string | undefined;
|
|
24
|
+
//# sourceMappingURL=session-log-representation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-log-representation.d.ts","sourceRoot":"","sources":["../../src/representation/session-log-representation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kDAAkD,CAAC;AAGxF,MAAM,MAAM,iCAAiC,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;AAExE,MAAM,MAAM,kBAAkB,CAAC,IAAI,SAAS,iCAAiC,IAAI,CAC/E,KAAK,EAAE,OAAO,CAAC,eAAe,EAAE;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC,KAC5C,MAAM,GAAG,SAAS,CAAC;AAMxB;;;;;;GAMG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,SAAS,iCAAiC,EACrD,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,kBAAkB,CAAC,IAAI,CAAC,GACjC,IAAI,CAAC;IACR,MAAM,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,GAAG,SAAS,CAAC;CACpD;AAoBD,wBAAgB,8BAA8B,IAAI,wBAAwB,CAEzE;AAED,sDAAsD;AACtD,eAAO,MAAM,wBAAwB,0BAAmC,CAAC;AAEzE,6CAA6C;AAC7C,wBAAgB,0BAA0B,CACxC,IAAI,SAAS,iCAAiC,EAE9C,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,kBAAkB,CAAC,IAAI,CAAC,GACjC,IAAI,CAEN;AAED,+CAA+C;AAC/C,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,eAAe,GACrB,MAAM,GAAG,SAAS,CAEpB"}
|