pm-orchestrator-runner 1.0.6 → 1.0.8

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 (105) hide show
  1. package/README.md +20 -10
  2. package/dist/cli/index.js +36 -1
  3. package/dist/cli/index.js.map +1 -1
  4. package/dist/config/index.d.ts +9 -0
  5. package/dist/config/index.d.ts.map +1 -0
  6. package/dist/config/index.js +19 -0
  7. package/dist/config/index.js.map +1 -0
  8. package/dist/config/namespace.d.ts +86 -0
  9. package/dist/config/namespace.d.ts.map +1 -0
  10. package/dist/config/namespace.js +150 -0
  11. package/dist/config/namespace.js.map +1 -0
  12. package/dist/core/runner-core.d.ts +19 -0
  13. package/dist/core/runner-core.d.ts.map +1 -1
  14. package/dist/core/runner-core.js +67 -4
  15. package/dist/core/runner-core.js.map +1 -1
  16. package/dist/executor/claude-code-executor.d.ts +28 -0
  17. package/dist/executor/claude-code-executor.d.ts.map +1 -1
  18. package/dist/executor/claude-code-executor.js +184 -1
  19. package/dist/executor/claude-code-executor.js.map +1 -1
  20. package/dist/executor/deterministic-executor.d.ts +2 -1
  21. package/dist/executor/deterministic-executor.d.ts.map +1 -1
  22. package/dist/executor/deterministic-executor.js +7 -0
  23. package/dist/executor/deterministic-executor.js.map +1 -1
  24. package/dist/executor/recovery-executor.d.ts +2 -1
  25. package/dist/executor/recovery-executor.d.ts.map +1 -1
  26. package/dist/executor/recovery-executor.js +7 -0
  27. package/dist/executor/recovery-executor.js.map +1 -1
  28. package/dist/logging/task-log-manager.d.ts +17 -2
  29. package/dist/logging/task-log-manager.d.ts.map +1 -1
  30. package/dist/logging/task-log-manager.js +153 -63
  31. package/dist/logging/task-log-manager.js.map +1 -1
  32. package/dist/models/enums.d.ts +54 -0
  33. package/dist/models/enums.d.ts.map +1 -1
  34. package/dist/models/enums.js +59 -1
  35. package/dist/models/enums.js.map +1 -1
  36. package/dist/models/index.d.ts +4 -1
  37. package/dist/models/index.d.ts.map +1 -1
  38. package/dist/models/index.js +50 -2
  39. package/dist/models/index.js.map +1 -1
  40. package/dist/models/repl/task-log.d.ts +9 -0
  41. package/dist/models/repl/task-log.d.ts.map +1 -1
  42. package/dist/models/repl/task-log.js.map +1 -1
  43. package/dist/models/run.d.ts +82 -0
  44. package/dist/models/run.d.ts.map +1 -0
  45. package/dist/models/run.js +161 -0
  46. package/dist/models/run.js.map +1 -0
  47. package/dist/models/task-group.d.ts +164 -0
  48. package/dist/models/task-group.d.ts.map +1 -0
  49. package/dist/models/task-group.js +246 -0
  50. package/dist/models/task-group.js.map +1 -0
  51. package/dist/models/task.d.ts +7 -0
  52. package/dist/models/task.d.ts.map +1 -1
  53. package/dist/models/task.js.map +1 -1
  54. package/dist/models/thread.d.ts +53 -0
  55. package/dist/models/thread.d.ts.map +1 -0
  56. package/dist/models/thread.js +92 -0
  57. package/dist/models/thread.js.map +1 -0
  58. package/dist/pool/agent-pool.d.ts.map +1 -1
  59. package/dist/pool/agent-pool.js +2 -3
  60. package/dist/pool/agent-pool.js.map +1 -1
  61. package/dist/prompt/index.d.ts +8 -0
  62. package/dist/prompt/index.d.ts.map +1 -0
  63. package/dist/prompt/index.js +13 -0
  64. package/dist/prompt/index.js.map +1 -0
  65. package/dist/prompt/prompt-assembler.d.ts +145 -0
  66. package/dist/prompt/prompt-assembler.d.ts.map +1 -0
  67. package/dist/prompt/prompt-assembler.js +242 -0
  68. package/dist/prompt/prompt-assembler.js.map +1 -0
  69. package/dist/queue/index.d.ts +41 -0
  70. package/dist/queue/index.d.ts.map +1 -0
  71. package/dist/queue/index.js +42 -0
  72. package/dist/queue/index.js.map +1 -0
  73. package/dist/queue/queue-poller.d.ts +107 -0
  74. package/dist/queue/queue-poller.d.ts.map +1 -0
  75. package/dist/queue/queue-poller.js +181 -0
  76. package/dist/queue/queue-poller.js.map +1 -0
  77. package/dist/queue/queue-store.d.ts +163 -0
  78. package/dist/queue/queue-store.d.ts.map +1 -0
  79. package/dist/queue/queue-store.js +421 -0
  80. package/dist/queue/queue-store.js.map +1 -0
  81. package/dist/repl/commands/logs.d.ts +3 -1
  82. package/dist/repl/commands/logs.d.ts.map +1 -1
  83. package/dist/repl/commands/logs.js +23 -3
  84. package/dist/repl/commands/logs.js.map +1 -1
  85. package/dist/repl/index.d.ts +1 -0
  86. package/dist/repl/index.d.ts.map +1 -1
  87. package/dist/repl/index.js +3 -1
  88. package/dist/repl/index.js.map +1 -1
  89. package/dist/repl/repl-interface.d.ts +94 -6
  90. package/dist/repl/repl-interface.d.ts.map +1 -1
  91. package/dist/repl/repl-interface.js +350 -54
  92. package/dist/repl/repl-interface.js.map +1 -1
  93. package/dist/repl/two-pane-renderer.d.ts +148 -0
  94. package/dist/repl/two-pane-renderer.d.ts.map +1 -0
  95. package/dist/repl/two-pane-renderer.js +239 -0
  96. package/dist/repl/two-pane-renderer.js.map +1 -0
  97. package/dist/web/index.d.ts +45 -0
  98. package/dist/web/index.d.ts.map +1 -0
  99. package/dist/web/index.js +47 -0
  100. package/dist/web/index.js.map +1 -0
  101. package/dist/web/server.d.ts +71 -0
  102. package/dist/web/server.d.ts.map +1 -0
  103. package/dist/web/server.js +329 -0
  104. package/dist/web/server.js.map +1 -0
  105. package/package.json +12 -3
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+ /**
3
+ * Run Model
4
+ * Per spec 05_DATA_MODELS.md L69-104
5
+ *
6
+ * Run は一連のタスク実行単位を表す。1つのスレッド内に複数の Run が存在できる。
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.generateRunId = generateRunId;
10
+ exports.resetRunCounter = resetRunCounter;
11
+ exports.createRun = createRun;
12
+ exports.completeRun = completeRun;
13
+ exports.failRun = failRun;
14
+ exports.cancelRun = cancelRun;
15
+ exports.validateRun = validateRun;
16
+ exports.isRunning = isRunning;
17
+ exports.isCompleted = isCompleted;
18
+ exports.isFailed = isFailed;
19
+ exports.isCancelled = isCancelled;
20
+ exports.isTerminal = isTerminal;
21
+ exports.getRunDuration = getRunDuration;
22
+ const enums_1 = require("./enums");
23
+ /**
24
+ * Run counter for generating unique IDs
25
+ */
26
+ let runCounter = 0;
27
+ /**
28
+ * Generate a unique run ID
29
+ * Format: run_<連番>
30
+ */
31
+ function generateRunId() {
32
+ runCounter++;
33
+ return `run_${runCounter}`;
34
+ }
35
+ /**
36
+ * Reset run counter (for testing)
37
+ */
38
+ function resetRunCounter() {
39
+ runCounter = 0;
40
+ }
41
+ /**
42
+ * Create a new Run
43
+ */
44
+ function createRun(threadId, sessionId, trigger) {
45
+ return {
46
+ run_id: generateRunId(),
47
+ thread_id: threadId,
48
+ session_id: sessionId,
49
+ started_at: new Date().toISOString(),
50
+ completed_at: null,
51
+ status: enums_1.RunStatus.RUNNING,
52
+ trigger,
53
+ };
54
+ }
55
+ /**
56
+ * Complete a Run successfully
57
+ */
58
+ function completeRun(run) {
59
+ return {
60
+ ...run,
61
+ completed_at: new Date().toISOString(),
62
+ status: enums_1.RunStatus.COMPLETED,
63
+ };
64
+ }
65
+ /**
66
+ * Fail a Run
67
+ */
68
+ function failRun(run) {
69
+ return {
70
+ ...run,
71
+ completed_at: new Date().toISOString(),
72
+ status: enums_1.RunStatus.FAILED,
73
+ };
74
+ }
75
+ /**
76
+ * Cancel a Run
77
+ */
78
+ function cancelRun(run) {
79
+ return {
80
+ ...run,
81
+ completed_at: new Date().toISOString(),
82
+ status: enums_1.RunStatus.CANCELLED,
83
+ };
84
+ }
85
+ /**
86
+ * Validate a Run object
87
+ */
88
+ function validateRun(run) {
89
+ if (typeof run !== 'object' || run === null) {
90
+ return false;
91
+ }
92
+ const r = run;
93
+ // Required fields
94
+ if (typeof r.run_id !== 'string' || !r.run_id.startsWith('run_')) {
95
+ return false;
96
+ }
97
+ if (typeof r.thread_id !== 'string' || r.thread_id.length === 0) {
98
+ return false;
99
+ }
100
+ if (typeof r.session_id !== 'string' || r.session_id.length === 0) {
101
+ return false;
102
+ }
103
+ if (typeof r.started_at !== 'string') {
104
+ return false;
105
+ }
106
+ if (r.completed_at !== null && typeof r.completed_at !== 'string') {
107
+ return false;
108
+ }
109
+ if (!Object.values(enums_1.RunStatus).includes(r.status)) {
110
+ return false;
111
+ }
112
+ if (!Object.values(enums_1.RunTrigger).includes(r.trigger)) {
113
+ return false;
114
+ }
115
+ return true;
116
+ }
117
+ /**
118
+ * Check if a run is currently running
119
+ */
120
+ function isRunning(run) {
121
+ return run.status === enums_1.RunStatus.RUNNING;
122
+ }
123
+ /**
124
+ * Check if a run has completed (either successfully or with failure)
125
+ */
126
+ function isCompleted(run) {
127
+ return run.status === enums_1.RunStatus.COMPLETED;
128
+ }
129
+ /**
130
+ * Check if a run has failed
131
+ */
132
+ function isFailed(run) {
133
+ return run.status === enums_1.RunStatus.FAILED;
134
+ }
135
+ /**
136
+ * Check if a run was cancelled
137
+ */
138
+ function isCancelled(run) {
139
+ return run.status === enums_1.RunStatus.CANCELLED;
140
+ }
141
+ /**
142
+ * Check if a run is in a terminal state (completed, failed, or cancelled)
143
+ */
144
+ function isTerminal(run) {
145
+ return (run.status === enums_1.RunStatus.COMPLETED ||
146
+ run.status === enums_1.RunStatus.FAILED ||
147
+ run.status === enums_1.RunStatus.CANCELLED);
148
+ }
149
+ /**
150
+ * Get duration of a run in milliseconds
151
+ * Returns null if run is still in progress
152
+ */
153
+ function getRunDuration(run) {
154
+ if (run.completed_at === null) {
155
+ return null;
156
+ }
157
+ const start = new Date(run.started_at).getTime();
158
+ const end = new Date(run.completed_at).getTime();
159
+ return end - start;
160
+ }
161
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/models/run.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,164 @@
1
+ /**
2
+ * Task Group Model
3
+ * Per spec 16_TASK_GROUP.md
4
+ *
5
+ * Task Group は「会話・思考・文脈の単位」である。
6
+ * 05_DATA_MODELS.md の Thread 概念を拡張し、
7
+ * 論理的な会話単位としての役割を明確化する。
8
+ */
9
+ import { TaskGroupState } from './enums';
10
+ /**
11
+ * Conversation entry in task group history
12
+ * Represents a single input/output pair in the conversation
13
+ */
14
+ export interface ConversationEntry {
15
+ /** Entry ID */
16
+ entry_id: string;
17
+ /** Role (user/assistant/system) */
18
+ role: 'user' | 'assistant' | 'system';
19
+ /** Content of the entry */
20
+ content: string;
21
+ /** Timestamp of the entry */
22
+ timestamp: string;
23
+ /** Associated task ID (if applicable) */
24
+ task_id?: string;
25
+ }
26
+ /**
27
+ * File change record
28
+ * Tracks changes made to files within a task group
29
+ */
30
+ export interface FileChange {
31
+ /** Path to the file */
32
+ file_path: string;
33
+ /** Type of change */
34
+ change_type: 'created' | 'modified' | 'deleted';
35
+ /** Task that made the change */
36
+ task_id: string;
37
+ /** Timestamp of the change */
38
+ timestamp: string;
39
+ /** Previous content hash (for modified/deleted) */
40
+ previous_hash?: string;
41
+ /** New content hash (for created/modified) */
42
+ new_hash?: string;
43
+ }
44
+ /**
45
+ * Task result for context maintenance
46
+ * Summarized result of a task execution
47
+ */
48
+ export interface TaskResult {
49
+ /** Task ID */
50
+ task_id: string;
51
+ /** Final status */
52
+ status: string;
53
+ /** Summary of what was done */
54
+ summary: string;
55
+ /** Files that were modified */
56
+ files_modified: string[];
57
+ /** Error if any */
58
+ error?: string;
59
+ /** Completion timestamp */
60
+ completed_at: string;
61
+ }
62
+ /**
63
+ * Task Group Context
64
+ * Per spec 16_TASK_GROUP.md L100-106
65
+ *
66
+ * Contains all context information that persists within a task group.
67
+ */
68
+ export interface TaskGroupContext {
69
+ /** Task Group ID (corresponds to thread_id for main thread) */
70
+ task_group_id: string;
71
+ /** Conversation history within this task group */
72
+ conversation_history: ConversationEntry[];
73
+ /** Files currently being worked on */
74
+ working_files: string[];
75
+ /** Result of the last completed task */
76
+ last_task_result: TaskResult | null;
77
+ /** All file changes accumulated in this task group */
78
+ accumulated_changes: FileChange[];
79
+ }
80
+ /**
81
+ * Task Group metadata
82
+ * Per spec 16_TASK_GROUP.md L36-42
83
+ */
84
+ export interface TaskGroup {
85
+ /** Task Group ID (corresponds to thread_id) */
86
+ task_group_id: string;
87
+ /** Parent session ID */
88
+ session_id: string;
89
+ /** Creation timestamp */
90
+ created_at: string;
91
+ /** Human-readable description */
92
+ description?: string;
93
+ /** Current state */
94
+ state: TaskGroupState;
95
+ /** Context maintained within this group */
96
+ context: TaskGroupContext;
97
+ }
98
+ /**
99
+ * Generate a unique task group ID
100
+ * Format: tg_<連番>
101
+ */
102
+ export declare function generateTaskGroupId(): string;
103
+ /**
104
+ * Reset task group counter (for testing)
105
+ */
106
+ export declare function resetTaskGroupCounter(): void;
107
+ /**
108
+ * Generate a unique conversation entry ID
109
+ */
110
+ export declare function generateConversationEntryId(): string;
111
+ /**
112
+ * Reset conversation entry counter (for testing)
113
+ */
114
+ export declare function resetConversationEntryCounter(): void;
115
+ /**
116
+ * Create a new Task Group
117
+ */
118
+ export declare function createTaskGroup(sessionId: string, description?: string): TaskGroup;
119
+ /**
120
+ * Activate a task group
121
+ * Per spec 16_TASK_GROUP.md L138: Created → Active: 最初のタスク投入時
122
+ */
123
+ export declare function activateTaskGroup(taskGroup: TaskGroup): TaskGroup;
124
+ /**
125
+ * Pause a task group
126
+ * Per spec 16_TASK_GROUP.md L139: Active → Paused: ユーザーが一時停止
127
+ */
128
+ export declare function pauseTaskGroup(taskGroup: TaskGroup): TaskGroup;
129
+ /**
130
+ * Resume a paused task group
131
+ * Per spec 16_TASK_GROUP.md L140: Paused → Active: ユーザーが再開
132
+ */
133
+ export declare function resumeTaskGroup(taskGroup: TaskGroup): TaskGroup;
134
+ /**
135
+ * Complete a task group
136
+ * Per spec 16_TASK_GROUP.md L141-142: Active → Completed: ユーザーが明示的に終了
137
+ */
138
+ export declare function completeTaskGroup(taskGroup: TaskGroup): TaskGroup;
139
+ /**
140
+ * Add a conversation entry to the task group
141
+ */
142
+ export declare function addConversationEntry(taskGroup: TaskGroup, role: 'user' | 'assistant' | 'system', content: string, taskId?: string): TaskGroup;
143
+ /**
144
+ * Add a file change to the task group
145
+ */
146
+ export declare function addFileChange(taskGroup: TaskGroup, filePath: string, changeType: 'created' | 'modified' | 'deleted', taskId: string, previousHash?: string, newHash?: string): TaskGroup;
147
+ /**
148
+ * Update the last task result
149
+ * Per spec 16_TASK_GROUP.md L113-116: Task 完了後の文脈更新
150
+ */
151
+ export declare function updateLastTaskResult(taskGroup: TaskGroup, result: TaskResult): TaskGroup;
152
+ /**
153
+ * Validate a task group
154
+ */
155
+ export declare function validateTaskGroup(taskGroup: unknown): taskGroup is TaskGroup;
156
+ /**
157
+ * Check if a task group is active
158
+ */
159
+ export declare function isTaskGroupActive(taskGroup: TaskGroup): boolean;
160
+ /**
161
+ * Check if a task group is completed (read-only)
162
+ */
163
+ export declare function isTaskGroupCompleted(taskGroup: TaskGroup): boolean;
164
+ //# sourceMappingURL=task-group.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-group.d.ts","sourceRoot":"","sources":["../../src/models/task-group.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,246 @@
1
+ "use strict";
2
+ /**
3
+ * Task Group Model
4
+ * Per spec 16_TASK_GROUP.md
5
+ *
6
+ * Task Group は「会話・思考・文脈の単位」である。
7
+ * 05_DATA_MODELS.md の Thread 概念を拡張し、
8
+ * 論理的な会話単位としての役割を明確化する。
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.generateTaskGroupId = generateTaskGroupId;
12
+ exports.resetTaskGroupCounter = resetTaskGroupCounter;
13
+ exports.generateConversationEntryId = generateConversationEntryId;
14
+ exports.resetConversationEntryCounter = resetConversationEntryCounter;
15
+ exports.createTaskGroup = createTaskGroup;
16
+ exports.activateTaskGroup = activateTaskGroup;
17
+ exports.pauseTaskGroup = pauseTaskGroup;
18
+ exports.resumeTaskGroup = resumeTaskGroup;
19
+ exports.completeTaskGroup = completeTaskGroup;
20
+ exports.addConversationEntry = addConversationEntry;
21
+ exports.addFileChange = addFileChange;
22
+ exports.updateLastTaskResult = updateLastTaskResult;
23
+ exports.validateTaskGroup = validateTaskGroup;
24
+ exports.isTaskGroupActive = isTaskGroupActive;
25
+ exports.isTaskGroupCompleted = isTaskGroupCompleted;
26
+ const enums_1 = require("./enums");
27
+ /**
28
+ * Task group counter for generating unique IDs
29
+ */
30
+ let taskGroupCounter = 0;
31
+ /**
32
+ * Generate a unique task group ID
33
+ * Format: tg_<連番>
34
+ */
35
+ function generateTaskGroupId() {
36
+ taskGroupCounter++;
37
+ return `tg_${taskGroupCounter}`;
38
+ }
39
+ /**
40
+ * Reset task group counter (for testing)
41
+ */
42
+ function resetTaskGroupCounter() {
43
+ taskGroupCounter = 0;
44
+ }
45
+ /**
46
+ * Conversation entry counter
47
+ */
48
+ let conversationEntryCounter = 0;
49
+ /**
50
+ * Generate a unique conversation entry ID
51
+ */
52
+ function generateConversationEntryId() {
53
+ conversationEntryCounter++;
54
+ return `ce_${conversationEntryCounter}`;
55
+ }
56
+ /**
57
+ * Reset conversation entry counter (for testing)
58
+ */
59
+ function resetConversationEntryCounter() {
60
+ conversationEntryCounter = 0;
61
+ }
62
+ /**
63
+ * Create a new Task Group
64
+ */
65
+ function createTaskGroup(sessionId, description) {
66
+ const taskGroupId = generateTaskGroupId();
67
+ return {
68
+ task_group_id: taskGroupId,
69
+ session_id: sessionId,
70
+ created_at: new Date().toISOString(),
71
+ description,
72
+ state: enums_1.TaskGroupState.CREATED,
73
+ context: {
74
+ task_group_id: taskGroupId,
75
+ conversation_history: [],
76
+ working_files: [],
77
+ last_task_result: null,
78
+ accumulated_changes: [],
79
+ },
80
+ };
81
+ }
82
+ /**
83
+ * Activate a task group
84
+ * Per spec 16_TASK_GROUP.md L138: Created → Active: 最初のタスク投入時
85
+ */
86
+ function activateTaskGroup(taskGroup) {
87
+ if (taskGroup.state === enums_1.TaskGroupState.COMPLETED) {
88
+ throw new Error('Cannot activate a completed task group');
89
+ }
90
+ return {
91
+ ...taskGroup,
92
+ state: enums_1.TaskGroupState.ACTIVE,
93
+ };
94
+ }
95
+ /**
96
+ * Pause a task group
97
+ * Per spec 16_TASK_GROUP.md L139: Active → Paused: ユーザーが一時停止
98
+ */
99
+ function pauseTaskGroup(taskGroup) {
100
+ if (taskGroup.state !== enums_1.TaskGroupState.ACTIVE) {
101
+ throw new Error('Can only pause an active task group');
102
+ }
103
+ return {
104
+ ...taskGroup,
105
+ state: enums_1.TaskGroupState.PAUSED,
106
+ };
107
+ }
108
+ /**
109
+ * Resume a paused task group
110
+ * Per spec 16_TASK_GROUP.md L140: Paused → Active: ユーザーが再開
111
+ */
112
+ function resumeTaskGroup(taskGroup) {
113
+ if (taskGroup.state !== enums_1.TaskGroupState.PAUSED) {
114
+ throw new Error('Can only resume a paused task group');
115
+ }
116
+ return {
117
+ ...taskGroup,
118
+ state: enums_1.TaskGroupState.ACTIVE,
119
+ };
120
+ }
121
+ /**
122
+ * Complete a task group
123
+ * Per spec 16_TASK_GROUP.md L141-142: Active → Completed: ユーザーが明示的に終了
124
+ */
125
+ function completeTaskGroup(taskGroup) {
126
+ if (taskGroup.state !== enums_1.TaskGroupState.ACTIVE) {
127
+ throw new Error('Can only complete an active task group');
128
+ }
129
+ return {
130
+ ...taskGroup,
131
+ state: enums_1.TaskGroupState.COMPLETED,
132
+ };
133
+ }
134
+ /**
135
+ * Add a conversation entry to the task group
136
+ */
137
+ function addConversationEntry(taskGroup, role, content, taskId) {
138
+ const entry = {
139
+ entry_id: generateConversationEntryId(),
140
+ role,
141
+ content,
142
+ timestamp: new Date().toISOString(),
143
+ task_id: taskId,
144
+ };
145
+ return {
146
+ ...taskGroup,
147
+ context: {
148
+ ...taskGroup.context,
149
+ conversation_history: [...taskGroup.context.conversation_history, entry],
150
+ },
151
+ };
152
+ }
153
+ /**
154
+ * Add a file change to the task group
155
+ */
156
+ function addFileChange(taskGroup, filePath, changeType, taskId, previousHash, newHash) {
157
+ const change = {
158
+ file_path: filePath,
159
+ change_type: changeType,
160
+ task_id: taskId,
161
+ timestamp: new Date().toISOString(),
162
+ previous_hash: previousHash,
163
+ new_hash: newHash,
164
+ };
165
+ // Update working files
166
+ let workingFiles = [...taskGroup.context.working_files];
167
+ if (changeType === 'created' || changeType === 'modified') {
168
+ if (!workingFiles.includes(filePath)) {
169
+ workingFiles.push(filePath);
170
+ }
171
+ }
172
+ else if (changeType === 'deleted') {
173
+ workingFiles = workingFiles.filter((f) => f !== filePath);
174
+ }
175
+ return {
176
+ ...taskGroup,
177
+ context: {
178
+ ...taskGroup.context,
179
+ working_files: workingFiles,
180
+ accumulated_changes: [...taskGroup.context.accumulated_changes, change],
181
+ },
182
+ };
183
+ }
184
+ /**
185
+ * Update the last task result
186
+ * Per spec 16_TASK_GROUP.md L113-116: Task 完了後の文脈更新
187
+ */
188
+ function updateLastTaskResult(taskGroup, result) {
189
+ return {
190
+ ...taskGroup,
191
+ context: {
192
+ ...taskGroup.context,
193
+ last_task_result: result,
194
+ },
195
+ };
196
+ }
197
+ /**
198
+ * Validate a task group
199
+ */
200
+ function validateTaskGroup(taskGroup) {
201
+ if (typeof taskGroup !== 'object' || taskGroup === null) {
202
+ return false;
203
+ }
204
+ const tg = taskGroup;
205
+ // Required fields
206
+ if (typeof tg.task_group_id !== 'string' || !tg.task_group_id.startsWith('tg_')) {
207
+ return false;
208
+ }
209
+ if (typeof tg.session_id !== 'string' || tg.session_id.length === 0) {
210
+ return false;
211
+ }
212
+ if (typeof tg.created_at !== 'string') {
213
+ return false;
214
+ }
215
+ if (!Object.values(enums_1.TaskGroupState).includes(tg.state)) {
216
+ return false;
217
+ }
218
+ // Context validation
219
+ if (typeof tg.context !== 'object' || tg.context === null) {
220
+ return false;
221
+ }
222
+ const ctx = tg.context;
223
+ if (!Array.isArray(ctx.conversation_history)) {
224
+ return false;
225
+ }
226
+ if (!Array.isArray(ctx.working_files)) {
227
+ return false;
228
+ }
229
+ if (!Array.isArray(ctx.accumulated_changes)) {
230
+ return false;
231
+ }
232
+ return true;
233
+ }
234
+ /**
235
+ * Check if a task group is active
236
+ */
237
+ function isTaskGroupActive(taskGroup) {
238
+ return taskGroup.state === enums_1.TaskGroupState.ACTIVE;
239
+ }
240
+ /**
241
+ * Check if a task group is completed (read-only)
242
+ */
243
+ function isTaskGroupCompleted(taskGroup) {
244
+ return taskGroup.state === enums_1.TaskGroupState.COMPLETED;
245
+ }
246
+ //# sourceMappingURL=task-group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-group.js","sourceRoot":"","sources":["../../src/models/task-group.ts"],"names":[],"mappings":"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"}
@@ -13,9 +13,14 @@ export interface GranularityLimits {
13
13
  }
14
14
  /**
15
15
  * Task data structure
16
+ * Per spec 05_DATA_MODELS.md L108-142
16
17
  */
17
18
  export interface Task {
18
19
  task_id: string;
20
+ /** 所属スレッドの識別子 */
21
+ thread_id?: string;
22
+ /** 所属 Run の識別子 */
23
+ run_id?: string;
19
24
  description: string;
20
25
  requirements: string[];
21
26
  status: TaskStatus;
@@ -30,6 +35,8 @@ export interface Task {
30
35
  subtask_ids?: string[];
31
36
  started_at?: string;
32
37
  completed_at?: string;
38
+ /** 当該タスクに対応する TaskLog の識別子 */
39
+ log_ref?: string;
33
40
  error?: {
34
41
  code: string;
35
42
  message: string;
@@ -1 +1 @@
1
- {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../src/models/task.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,UAAU,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,oCAAoC,EAAE,OAAO,CAAC;IAC9C,kBAAkB,EAAE,iBAAiB,CAAC;IACtC,gCAAgC,EAAE,OAAO,CAAC;IAC1C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,EAAE,MAAM;CAI5B;AAoBD;;GAEG;AACH,wBAAgB,UAAU,CACxB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EAAE,EACtB,iBAAiB,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAC7C,IAAI,CAgBN;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CA2DhD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,GAAG,IAAI,CAMxE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAMnE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAKpE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAKlE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAK3D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAKrD"}
1
+ {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../src/models/task.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,IAAI;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,UAAU,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,oCAAoC,EAAE,OAAO,CAAC;IAC9C,kBAAkB,EAAE,iBAAiB,CAAC;IACtC,gCAAgC,EAAE,OAAO,CAAC;IAC1C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,EAAE,MAAM;CAI5B;AAoBD;;GAEG;AACH,wBAAgB,UAAU,CACxB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EAAE,EACtB,iBAAiB,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAC7C,IAAI,CAgBN;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CA2DhD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,GAAG,IAAI,CAMxE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAMnE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAKpE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAKlE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAK3D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAKrD"}
@@ -1 +1 @@
1
- {"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/models/task.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/models/task.ts"],"names":[],"mappings":"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"}