@goondan/cli 0.0.3-alpha1 → 0.0.3-alpha11

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.
Files changed (63) hide show
  1. package/dist/bin.js +4 -0
  2. package/dist/bin.js.map +1 -1
  3. package/dist/commands/init.js +0 -2
  4. package/dist/commands/init.js.map +1 -1
  5. package/dist/commands/instance.js +2 -1
  6. package/dist/commands/instance.js.map +1 -1
  7. package/dist/commands/run.js +0 -1
  8. package/dist/commands/run.js.map +1 -1
  9. package/dist/commands/studio.d.ts +12 -0
  10. package/dist/commands/studio.js +127 -0
  11. package/dist/commands/studio.js.map +1 -0
  12. package/dist/parser.d.ts +6 -2
  13. package/dist/parser.js +8 -3
  14. package/dist/parser.js.map +1 -1
  15. package/dist/router.js +3 -0
  16. package/dist/router.js.map +1 -1
  17. package/dist/services/defaults.js +21 -16
  18. package/dist/services/defaults.js.map +1 -1
  19. package/dist/services/init.js +11 -23
  20. package/dist/services/init.js.map +1 -1
  21. package/dist/services/runtime.js +95 -69
  22. package/dist/services/runtime.js.map +1 -1
  23. package/dist/services/studio.d.ts +11 -0
  24. package/dist/services/studio.js +816 -0
  25. package/dist/services/studio.js.map +1 -0
  26. package/dist/studio/assets.d.ts +3 -0
  27. package/dist/studio/assets.js +1070 -0
  28. package/dist/studio/assets.js.map +1 -0
  29. package/dist/types.d.ts +69 -2
  30. package/package.json +5 -2
  31. package/dist/commands/context.d.ts +0 -8
  32. package/dist/commands/context.js +0 -2
  33. package/dist/commands/context.js.map +0 -1
  34. package/dist/help.d.ts +0 -1
  35. package/dist/help.js +0 -25
  36. package/dist/help.js.map +0 -1
  37. package/dist/options.d.ts +0 -13
  38. package/dist/options.js +0 -57
  39. package/dist/options.js.map +0 -1
  40. package/dist/services/conversation-state.d.ts +0 -20
  41. package/dist/services/conversation-state.js +0 -198
  42. package/dist/services/conversation-state.js.map +0 -1
  43. package/dist/services/runtime-restart-signal.d.ts +0 -5
  44. package/dist/services/runtime-restart-signal.js +0 -18
  45. package/dist/services/runtime-restart-signal.js.map +0 -1
  46. package/dist/services/runtime-restart.d.ts +0 -11
  47. package/dist/services/runtime-restart.js +0 -151
  48. package/dist/services/runtime-restart.js.map +0 -1
  49. package/dist/services/runtime-routing.d.ts +0 -40
  50. package/dist/services/runtime-routing.js +0 -154
  51. package/dist/services/runtime-routing.js.map +0 -1
  52. package/dist/services/runtime-runner-connector-child.d.ts +0 -1
  53. package/dist/services/runtime-runner-connector-child.js +0 -188
  54. package/dist/services/runtime-runner-connector-child.js.map +0 -1
  55. package/dist/services/runtime-runner-protocol.d.ts +0 -12
  56. package/dist/services/runtime-runner-protocol.js +0 -14
  57. package/dist/services/runtime-runner-protocol.js.map +0 -1
  58. package/dist/services/runtime-runner.d.ts +0 -1
  59. package/dist/services/runtime-runner.js +0 -2595
  60. package/dist/services/runtime-runner.js.map +0 -1
  61. package/dist/services/turn-policy.d.ts +0 -7
  62. package/dist/services/turn-policy.js +0 -13
  63. package/dist/services/turn-policy.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assets.js","sourceRoot":"","sources":["../../src/studio/assets.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyC1B,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyVzB,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwqBxB,CAAC"}
package/dist/types.d.ts CHANGED
@@ -17,7 +17,6 @@ export interface ValidationResult {
17
17
  export interface RuntimeStartRequest {
18
18
  bundlePath: string;
19
19
  swarm?: string;
20
- instanceKey?: string;
21
20
  watch: boolean;
22
21
  foreground?: boolean;
23
22
  interactive: boolean;
@@ -119,6 +118,74 @@ export interface PackagePublishResult {
119
118
  tag: string;
120
119
  dryRun: boolean;
121
120
  }
121
+ export interface StudioInstanceSummary {
122
+ key: string;
123
+ status: string;
124
+ agent: string;
125
+ createdAt: string;
126
+ updatedAt: string;
127
+ }
128
+ export interface StudioParticipant {
129
+ id: string;
130
+ label: string;
131
+ kind: 'agent' | 'user' | 'assistant' | 'tool' | 'extension' | 'connector' | 'system' | 'unknown';
132
+ lastSeenAt: string;
133
+ }
134
+ export interface StudioInteractionHistory {
135
+ at: string;
136
+ from: string;
137
+ to: string;
138
+ direction: 'a->b' | 'b->a';
139
+ kind: string;
140
+ detail: string;
141
+ }
142
+ export interface StudioInteraction {
143
+ key: string;
144
+ a: string;
145
+ b: string;
146
+ total: number;
147
+ lastSeenAt: string;
148
+ direction: 'a->b' | 'b->a' | 'undirected';
149
+ history: StudioInteractionHistory[];
150
+ }
151
+ export interface StudioTimelineEntry {
152
+ at: string;
153
+ kind: 'message' | 'runtime-event' | 'connector-log';
154
+ source: string;
155
+ target?: string;
156
+ subtype: string;
157
+ detail: string;
158
+ }
159
+ export interface StudioVisualization {
160
+ instanceKey: string;
161
+ participants: StudioParticipant[];
162
+ interactions: StudioInteraction[];
163
+ timeline: StudioTimelineEntry[];
164
+ recentEvents: StudioTimelineEntry[];
165
+ }
166
+ export interface StudioInstancesRequest {
167
+ stateRoot?: string;
168
+ }
169
+ export interface StudioInstanceRequest {
170
+ stateRoot?: string;
171
+ instanceKey: string;
172
+ maxRecentEvents?: number;
173
+ }
174
+ export interface StudioServerRequest {
175
+ stateRoot?: string;
176
+ port: number;
177
+ host: string;
178
+ }
179
+ export interface StudioServerSession {
180
+ url: string;
181
+ close(): Promise<void>;
182
+ closed: Promise<void>;
183
+ }
184
+ export interface StudioService {
185
+ listInstances(request: StudioInstancesRequest): Promise<StudioInstanceSummary[]>;
186
+ loadVisualization(request: StudioInstanceRequest): Promise<StudioVisualization>;
187
+ startServer(request: StudioServerRequest): Promise<StudioServerSession>;
188
+ }
122
189
  export interface RegistryPackageMetadata {
123
190
  name: string;
124
191
  latestVersion: string;
@@ -199,7 +266,6 @@ export interface InitRequest {
199
266
  targetDir: string;
200
267
  name: string;
201
268
  template: InitTemplate;
202
- asPackage: boolean;
203
269
  git: boolean;
204
270
  force: boolean;
205
271
  }
@@ -240,4 +306,5 @@ export interface CliDependencies {
240
306
  doctor: DoctorService;
241
307
  logs: LogService;
242
308
  init: InitService;
309
+ studio: StudioService;
243
310
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@goondan/cli",
3
- "version": "0.0.3-alpha1",
3
+ "version": "0.0.3-alpha11",
4
4
  "description": "Goondan CLI (gdn)",
5
5
  "type": "module",
6
6
  "bin": {
@@ -11,10 +11,13 @@
11
11
  "files": [
12
12
  "dist"
13
13
  ],
14
+ "publishConfig": {
15
+ "access": "public"
16
+ },
14
17
  "dependencies": {
15
18
  "@optique/core": "^0.9.0",
16
19
  "@optique/run": "^0.9.0",
17
- "@goondan/runtime": "0.0.3-alpha1"
20
+ "@goondan/runtime": "0.0.3-alpha11"
18
21
  },
19
22
  "devDependencies": {
20
23
  "@types/node": "^22.19.7",
@@ -1,8 +0,0 @@
1
- import type { CliDependencies, ExitCode, ParsedArguments } from '../types.js';
2
- import type { GlobalRuntimeOptions } from '../options.js';
3
- export interface CommandContext {
4
- parsed: ParsedArguments;
5
- deps: CliDependencies;
6
- globals: GlobalRuntimeOptions;
7
- }
8
- export type CommandHandler = (context: CommandContext) => Promise<ExitCode>;
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=context.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/commands/context.ts"],"names":[],"mappings":""}
package/dist/help.d.ts DELETED
@@ -1 +0,0 @@
1
- export declare function getMainHelp(): string;
package/dist/help.js DELETED
@@ -1,25 +0,0 @@
1
- export function getMainHelp() {
2
- return [
3
- 'Goondan CLI (gdn)',
4
- '',
5
- '사용법:',
6
- ' gdn <command> [subcommand] [options]',
7
- '',
8
- '명령어:',
9
- ' run Orchestrator 기동',
10
- ' restart 실행 중인 Orchestrator 재시작 신호',
11
- ' validate Bundle 구성 검증',
12
- ' instance list/delete 인스턴스 조회/삭제',
13
- ' logs 프로세스 로그 조회',
14
- ' package add/install/publish 패키지 관리',
15
- ' doctor 환경 진단',
16
- '',
17
- '전역 옵션:',
18
- ' --help, -h',
19
- ' --version, -V',
20
- ' --config <path>, -c',
21
- ' --state-root <path>',
22
- ' --json',
23
- ].join('\n');
24
- }
25
- //# sourceMappingURL=help.js.map
package/dist/help.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,WAAW;IACzB,OAAO;QACL,mBAAmB;QACnB,EAAE;QACF,MAAM;QACN,wCAAwC;QACxC,EAAE;QACF,MAAM;QACN,0CAA0C;QAC1C,oDAAoD;QACpD,uCAAuC;QACvC,qCAAqC;QACrC,qCAAqC;QACrC,uCAAuC;QACvC,gCAAgC;QAChC,EAAE;QACF,QAAQ;QACR,cAAc;QACd,iBAAiB;QACjB,uBAAuB;QACvB,uBAAuB;QACvB,UAAU;KACX,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
package/dist/options.d.ts DELETED
@@ -1,13 +0,0 @@
1
- import type { LogStream, ParsedArguments } from './types.js';
2
- export interface GlobalRuntimeOptions {
3
- configPath: string;
4
- stateRoot?: string;
5
- json: boolean;
6
- }
7
- export declare function getGlobalOptions(parsed: ParsedArguments): GlobalRuntimeOptions;
8
- export declare function getStringOption(parsed: ParsedArguments, name: string): string | undefined;
9
- export declare function getBooleanOption(parsed: ParsedArguments, name: string): boolean;
10
- export declare function getNumberOption(parsed: ParsedArguments, name: string, fallback: number): number;
11
- export declare function getFormatOption(parsed: ParsedArguments, fallback: 'text' | 'json' | 'github'): 'text' | 'json' | 'github';
12
- export declare function getAccessOption(parsed: ParsedArguments): 'public' | 'restricted';
13
- export declare function getLogStreamOption(parsed: ParsedArguments, fallback: LogStream): LogStream;
package/dist/options.js DELETED
@@ -1,57 +0,0 @@
1
- import { DEFAULT_BUNDLE_FILE } from './constants.js';
2
- import { usageError } from './errors.js';
3
- import { ensureBoolean, ensureNumber, ensureString } from './utils.js';
4
- export function getGlobalOptions(parsed) {
5
- const configPath = ensureString(parsed.globalOptions['config']) ?? DEFAULT_BUNDLE_FILE;
6
- const stateRoot = ensureString(parsed.globalOptions['state-root']);
7
- const json = ensureBoolean(parsed.globalOptions['json']);
8
- return {
9
- configPath,
10
- stateRoot,
11
- json,
12
- };
13
- }
14
- export function getStringOption(parsed, name) {
15
- return ensureString(parsed.options[name]);
16
- }
17
- export function getBooleanOption(parsed, name) {
18
- return ensureBoolean(parsed.options[name]);
19
- }
20
- export function getNumberOption(parsed, name, fallback) {
21
- const parsedNumber = ensureNumber(parsed.options[name]);
22
- if (typeof parsedNumber === 'number') {
23
- return parsedNumber;
24
- }
25
- return fallback;
26
- }
27
- export function getFormatOption(parsed, fallback) {
28
- const candidate = getStringOption(parsed, 'format');
29
- if (!candidate) {
30
- return fallback;
31
- }
32
- if (candidate === 'text' || candidate === 'json' || candidate === 'github') {
33
- return candidate;
34
- }
35
- throw usageError('지원하지 않는 --format 값입니다.', 'text, json, github 중 하나를 사용하세요.');
36
- }
37
- export function getAccessOption(parsed) {
38
- const candidate = getStringOption(parsed, 'access');
39
- if (!candidate) {
40
- return 'public';
41
- }
42
- if (candidate === 'public' || candidate === 'restricted') {
43
- return candidate;
44
- }
45
- throw usageError('지원하지 않는 --access 값입니다.', '--access public 또는 --access restricted를 사용하세요.');
46
- }
47
- export function getLogStreamOption(parsed, fallback) {
48
- const candidate = getStringOption(parsed, 'stream');
49
- if (!candidate) {
50
- return fallback;
51
- }
52
- if (candidate === 'stdout' || candidate === 'stderr' || candidate === 'both') {
53
- return candidate;
54
- }
55
- throw usageError('지원하지 않는 --stream 값입니다.', '--stream stdout|stderr|both 중 하나를 사용하세요.');
56
- }
57
- //# sourceMappingURL=options.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAQvE,MAAM,UAAU,gBAAgB,CAAC,MAAuB;IACtD,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,IAAI,mBAAmB,CAAC;IACvF,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC;IACnE,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;IAEzD,OAAO;QACL,UAAU;QACV,SAAS;QACT,IAAI;KACL,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAuB,EAAE,IAAY;IACnE,OAAO,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAuB,EAAE,IAAY;IACpE,OAAO,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAuB,EAAE,IAAY,EAAE,QAAgB;IACrF,MAAM,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACxD,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;QACrC,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAuB,EAAE,QAAoC;IAC3F,MAAM,SAAS,GAAG,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACpD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC3E,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,UAAU,CAAC,wBAAwB,EAAE,iCAAiC,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAuB;IACrD,MAAM,SAAS,GAAG,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACpD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;QACzD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,UAAU,CAAC,wBAAwB,EAAE,gDAAgD,CAAC,CAAC;AAC/F,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAuB,EAAE,QAAmB;IAC7E,MAAM,SAAS,GAAG,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACpD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QAC7E,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,UAAU,CAAC,wBAAwB,EAAE,0CAA0C,CAAC,CAAC;AACzF,CAAC"}
@@ -1,20 +0,0 @@
1
- import { type Message } from '@goondan/runtime';
2
- export interface ConversationTurn {
3
- role: 'user' | 'assistant';
4
- content: unknown;
5
- }
6
- interface LlmMessage {
7
- role: string;
8
- content: unknown;
9
- }
10
- export interface AnthropicPreparedConversation {
11
- messages: Record<string, unknown>[];
12
- systemAddendum: string;
13
- }
14
- export declare function trimConversation(turns: ConversationTurn[], maxTurns: number): ConversationTurn[];
15
- export declare function toConversationTurns(messages: Message[]): ConversationTurn[];
16
- export declare function toPersistentMessages(turns: ConversationTurn[]): Message[];
17
- export declare function toAnthropicMessages(turns: ConversationTurn[]): Record<string, unknown>[];
18
- export declare function toConversationTurnsFromAnthropicMessages(messages: unknown[]): ConversationTurn[];
19
- export declare function prepareAnthropicConversation(messages: LlmMessage[]): AnthropicPreparedConversation;
20
- export {};
@@ -1,198 +0,0 @@
1
- import { isJsonObject } from '@goondan/runtime';
2
- export function trimConversation(turns, maxTurns) {
3
- const limit = Math.max(1, maxTurns) * 2;
4
- if (turns.length <= limit) {
5
- return turns;
6
- }
7
- return turns.slice(turns.length - limit);
8
- }
9
- export function toConversationTurns(messages) {
10
- const turns = [];
11
- for (const message of messages) {
12
- const role = message.data.role;
13
- if (role !== 'user' && role !== 'assistant') {
14
- continue;
15
- }
16
- turns.push({
17
- role,
18
- content: message.data.content,
19
- });
20
- }
21
- return turns;
22
- }
23
- export function toPersistentMessages(turns) {
24
- const messages = [];
25
- for (let index = 0; index < turns.length; index += 1) {
26
- const turn = turns[index];
27
- if (!turn) {
28
- continue;
29
- }
30
- if (turn.role === 'assistant') {
31
- messages.push({
32
- id: `persist-${index}`,
33
- data: {
34
- role: 'assistant',
35
- content: turn.content,
36
- },
37
- metadata: {},
38
- createdAt: new Date(),
39
- source: {
40
- type: 'assistant',
41
- stepId: `persist-step-${index}`,
42
- },
43
- });
44
- continue;
45
- }
46
- messages.push({
47
- id: `persist-${index}`,
48
- data: {
49
- role: 'user',
50
- content: turn.content,
51
- },
52
- metadata: {},
53
- createdAt: new Date(),
54
- source: {
55
- type: 'user',
56
- },
57
- });
58
- }
59
- return messages;
60
- }
61
- export function toAnthropicMessages(turns) {
62
- return turns.map((turn) => ({
63
- role: turn.role,
64
- content: turn.content,
65
- }));
66
- }
67
- export function toConversationTurnsFromAnthropicMessages(messages) {
68
- const turns = [];
69
- for (const message of messages) {
70
- if (!isJsonObject(message)) {
71
- continue;
72
- }
73
- const role = message.role;
74
- if (role !== 'user' && role !== 'assistant') {
75
- continue;
76
- }
77
- if (!Object.hasOwn(message, 'content')) {
78
- continue;
79
- }
80
- turns.push({
81
- role,
82
- content: message.content,
83
- });
84
- }
85
- return turns;
86
- }
87
- function safeStringify(value) {
88
- try {
89
- return JSON.stringify(value);
90
- }
91
- catch {
92
- return String(value);
93
- }
94
- }
95
- function toSystemText(content) {
96
- if (typeof content === 'string') {
97
- return content;
98
- }
99
- if (Array.isArray(content)) {
100
- const lines = [];
101
- for (const item of content) {
102
- if (isJsonObject(item) && item.type === 'text' && typeof item.text === 'string') {
103
- lines.push(item.text);
104
- continue;
105
- }
106
- lines.push(safeStringify(item));
107
- }
108
- return lines.join('\n');
109
- }
110
- if (isJsonObject(content) && content.type === 'text' && typeof content.text === 'string') {
111
- return content.text;
112
- }
113
- return safeStringify(content);
114
- }
115
- function extractToolUseIds(content) {
116
- const ids = new Set();
117
- if (!Array.isArray(content)) {
118
- return ids;
119
- }
120
- for (const block of content) {
121
- if (!isJsonObject(block) || block.type !== 'tool_use') {
122
- continue;
123
- }
124
- const id = block.id;
125
- if (typeof id === 'string' && id.trim().length > 0) {
126
- ids.add(id);
127
- }
128
- }
129
- return ids;
130
- }
131
- function sanitizeUserContent(content, allowedToolUseIds) {
132
- if (!Array.isArray(content)) {
133
- return {
134
- content,
135
- hasContent: true,
136
- hadToolResult: false,
137
- };
138
- }
139
- const sanitized = [];
140
- let hadToolResult = false;
141
- for (const block of content) {
142
- if (!isJsonObject(block) || block.type !== 'tool_result') {
143
- sanitized.push(block);
144
- continue;
145
- }
146
- hadToolResult = true;
147
- const toolUseId = block.tool_use_id;
148
- if (typeof toolUseId !== 'string') {
149
- continue;
150
- }
151
- if (allowedToolUseIds.has(toolUseId)) {
152
- sanitized.push(block);
153
- }
154
- }
155
- return {
156
- content: sanitized,
157
- hasContent: sanitized.length > 0,
158
- hadToolResult,
159
- };
160
- }
161
- export function prepareAnthropicConversation(messages) {
162
- const anthropicMessages = [];
163
- const systemParts = [];
164
- let previousAssistantToolUseIds;
165
- for (const message of messages) {
166
- if (message.role === 'assistant') {
167
- anthropicMessages.push({
168
- role: 'assistant',
169
- content: message.content,
170
- });
171
- previousAssistantToolUseIds = extractToolUseIds(message.content);
172
- continue;
173
- }
174
- if (message.role === 'user') {
175
- const sanitized = sanitizeUserContent(message.content, previousAssistantToolUseIds ?? new Set());
176
- previousAssistantToolUseIds = undefined;
177
- if (sanitized.hadToolResult && !sanitized.hasContent) {
178
- continue;
179
- }
180
- anthropicMessages.push({
181
- role: 'user',
182
- content: sanitized.content,
183
- });
184
- continue;
185
- }
186
- if (message.role === 'system') {
187
- const text = toSystemText(message.content).trim();
188
- if (text.length > 0) {
189
- systemParts.push(text);
190
- }
191
- }
192
- }
193
- return {
194
- messages: anthropicMessages,
195
- systemAddendum: systemParts.join('\n\n'),
196
- };
197
- }
198
- //# sourceMappingURL=conversation-state.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"conversation-state.js","sourceRoot":"","sources":["../../src/services/conversation-state.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- export interface RuntimeRestartSignal {
2
- requested: boolean;
3
- reason?: string;
4
- }
5
- export declare function readRuntimeRestartSignal(value: unknown): RuntimeRestartSignal | undefined;
@@ -1,18 +0,0 @@
1
- import { isObjectRecord } from '../utils.js';
2
- const RESTART_FLAG_KEYS = ['restartRequested', 'runtimeRestart', '__goondanRestart'];
3
- export function readRuntimeRestartSignal(value) {
4
- if (!isObjectRecord(value)) {
5
- return undefined;
6
- }
7
- for (const key of RESTART_FLAG_KEYS) {
8
- if (value[key] === true) {
9
- const reasonValue = value['restartReason'];
10
- return {
11
- requested: true,
12
- reason: typeof reasonValue === 'string' && reasonValue.trim().length > 0 ? reasonValue.trim() : undefined,
13
- };
14
- }
15
- }
16
- return undefined;
17
- }
18
- //# sourceMappingURL=runtime-restart-signal.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime-restart-signal.js","sourceRoot":"","sources":["../../src/services/runtime-restart-signal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAO7C,MAAM,iBAAiB,GAAG,CAAC,kBAAkB,EAAE,gBAAgB,EAAE,kBAAkB,CAAU,CAAC;AAE9F,MAAM,UAAU,wBAAwB,CAAC,KAAc;IACrD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;YACxB,MAAM,WAAW,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC;YAC3C,OAAO;gBACL,SAAS,EAAE,IAAI;gBACf,MAAM,EAAE,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS;aAC1G,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -1,11 +0,0 @@
1
- export interface ReplacementRunnerInput {
2
- runnerModulePath: string;
3
- runnerArgs: string[];
4
- stateRoot: string;
5
- instanceKey: string;
6
- bundlePath: string;
7
- watch: boolean;
8
- env: NodeJS.ProcessEnv;
9
- startupTimeoutMs?: number;
10
- }
11
- export declare function spawnReplacementRunner(input: ReplacementRunnerInput): Promise<number>;