takt 0.1.5 → 0.1.6

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 (57) hide show
  1. package/dist/agents/runner.d.ts +1 -1
  2. package/dist/agents/runner.d.ts.map +1 -1
  3. package/dist/agents/runner.js +13 -34
  4. package/dist/agents/runner.js.map +1 -1
  5. package/dist/cli.d.ts +2 -3
  6. package/dist/cli.d.ts.map +1 -1
  7. package/dist/cli.js +5 -8
  8. package/dist/cli.js.map +1 -1
  9. package/dist/commands/help.d.ts.map +1 -1
  10. package/dist/commands/help.js +4 -8
  11. package/dist/commands/help.js.map +1 -1
  12. package/dist/commands/index.d.ts +1 -1
  13. package/dist/commands/index.d.ts.map +1 -1
  14. package/dist/commands/index.js.map +1 -1
  15. package/dist/commands/taskExecution.d.ts +1 -6
  16. package/dist/commands/taskExecution.d.ts.map +1 -1
  17. package/dist/commands/taskExecution.js +2 -6
  18. package/dist/commands/taskExecution.js.map +1 -1
  19. package/dist/commands/workflowExecution.d.ts +0 -2
  20. package/dist/commands/workflowExecution.d.ts.map +1 -1
  21. package/dist/commands/workflowExecution.js +9 -11
  22. package/dist/commands/workflowExecution.js.map +1 -1
  23. package/dist/mock/client.d.ts +27 -0
  24. package/dist/mock/client.d.ts.map +1 -0
  25. package/dist/mock/client.js +56 -0
  26. package/dist/mock/client.js.map +1 -0
  27. package/dist/models/schemas.d.ts +6 -0
  28. package/dist/models/schemas.d.ts.map +1 -1
  29. package/dist/models/schemas.js +4 -4
  30. package/dist/models/schemas.js.map +1 -1
  31. package/dist/models/types.d.ts +4 -4
  32. package/dist/models/types.d.ts.map +1 -1
  33. package/dist/providers/claude.d.ts +11 -0
  34. package/dist/providers/claude.d.ts.map +1 -0
  35. package/dist/providers/claude.js +37 -0
  36. package/dist/providers/claude.js.map +1 -0
  37. package/dist/providers/codex.d.ts +11 -0
  38. package/dist/providers/codex.d.ts.map +1 -0
  39. package/dist/providers/codex.js +29 -0
  40. package/dist/providers/codex.js.map +1 -0
  41. package/dist/providers/index.d.ts +39 -0
  42. package/dist/providers/index.d.ts.map +1 -0
  43. package/dist/providers/index.js +32 -0
  44. package/dist/providers/index.js.map +1 -0
  45. package/dist/providers/mock.d.ts +11 -0
  46. package/dist/providers/mock.d.ts.map +1 -0
  47. package/dist/providers/mock.js +24 -0
  48. package/dist/providers/mock.js.map +1 -0
  49. package/package.json +1 -1
  50. package/resources/global/en/agents/default/architect.md +67 -6
  51. package/resources/global/en/agents/default/coder.md +155 -1
  52. package/resources/global/en/workflows/expert-review.yaml +1 -1
  53. package/resources/global/ja/agents/default/architect.md +62 -1
  54. package/resources/global/ja/agents/default/coder.md +156 -2
  55. package/resources/global/ja/agents/expert-review/cqrs-es-reviewer.md +328 -8
  56. package/resources/global/ja/agents/expert-review/frontend-reviewer.md +303 -33
  57. package/resources/global/ja/workflows/expert-review.yaml +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/models/schemas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/models/schemas.ts"],"names":[],"mappings":"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"}
@@ -42,7 +42,7 @@ export interface WorkflowStep {
42
42
  /** Resolved absolute path to agent prompt file (set by loader) */
43
43
  agentPath?: string;
44
44
  /** Provider override for this step */
45
- provider?: 'claude' | 'codex';
45
+ provider?: 'claude' | 'codex' | 'mock';
46
46
  /** Model override for this step */
47
47
  model?: string;
48
48
  instructionTemplate: string;
@@ -102,7 +102,7 @@ export interface CustomAgentConfig {
102
102
  statusPatterns?: Record<string, string>;
103
103
  claudeAgent?: string;
104
104
  claudeSkill?: string;
105
- provider?: 'claude' | 'codex';
105
+ provider?: 'claude' | 'codex' | 'mock';
106
106
  model?: string;
107
107
  }
108
108
  /** Debug configuration for takt */
@@ -118,7 +118,7 @@ export interface GlobalConfig {
118
118
  trustedDirectories: string[];
119
119
  defaultWorkflow: string;
120
120
  logLevel: 'debug' | 'info' | 'warn' | 'error';
121
- provider?: 'claude' | 'codex';
121
+ provider?: 'claude' | 'codex' | 'mock';
122
122
  model?: string;
123
123
  debug?: DebugConfig;
124
124
  }
@@ -126,6 +126,6 @@ export interface GlobalConfig {
126
126
  export interface ProjectConfig {
127
127
  workflow?: string;
128
128
  agents?: CustomAgentConfig[];
129
- provider?: 'claude' | 'codex';
129
+ provider?: 'claude' | 'codex' | 'mock';
130
130
  }
131
131
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/models/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/models/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Claude provider implementation
3
+ */
4
+ import type { AgentResponse } from '../models/types.js';
5
+ import type { Provider, ProviderCallOptions } from './index.js';
6
+ /** Claude provider - wraps existing Claude client */
7
+ export declare class ClaudeProvider implements Provider {
8
+ call(agentName: string, prompt: string, options: ProviderCallOptions): Promise<AgentResponse>;
9
+ callCustom(agentName: string, prompt: string, systemPrompt: string, options: ProviderCallOptions): Promise<AgentResponse>;
10
+ }
11
+ //# sourceMappingURL=claude.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/providers/claude.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEhE,qDAAqD;AACrD,qBAAa,cAAe,YAAW,QAAQ;IACvC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;IAiB7F,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;CAehI"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Claude provider implementation
3
+ */
4
+ import { callClaude, callClaudeCustom } from '../claude/client.js';
5
+ /** Claude provider - wraps existing Claude client */
6
+ export class ClaudeProvider {
7
+ async call(agentName, prompt, options) {
8
+ const callOptions = {
9
+ cwd: options.cwd,
10
+ sessionId: options.sessionId,
11
+ allowedTools: options.allowedTools,
12
+ model: options.model,
13
+ systemPrompt: options.systemPrompt,
14
+ statusPatterns: options.statusPatterns,
15
+ onStream: options.onStream,
16
+ onPermissionRequest: options.onPermissionRequest,
17
+ onAskUserQuestion: options.onAskUserQuestion,
18
+ bypassPermissions: options.bypassPermissions,
19
+ };
20
+ return callClaude(agentName, prompt, callOptions);
21
+ }
22
+ async callCustom(agentName, prompt, systemPrompt, options) {
23
+ const callOptions = {
24
+ cwd: options.cwd,
25
+ sessionId: options.sessionId,
26
+ allowedTools: options.allowedTools,
27
+ model: options.model,
28
+ statusPatterns: options.statusPatterns,
29
+ onStream: options.onStream,
30
+ onPermissionRequest: options.onPermissionRequest,
31
+ onAskUserQuestion: options.onAskUserQuestion,
32
+ bypassPermissions: options.bypassPermissions,
33
+ };
34
+ return callClaudeCustom(agentName, prompt, systemPrompt, callOptions);
35
+ }
36
+ }
37
+ //# sourceMappingURL=claude.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/providers/claude.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAA0B,MAAM,qBAAqB,CAAC;AAI3F,qDAAqD;AACrD,MAAM,OAAO,cAAc;IACzB,KAAK,CAAC,IAAI,CAAC,SAAiB,EAAE,MAAc,EAAE,OAA4B;QACxE,MAAM,WAAW,GAAsB;YACrC,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;YAChD,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;YAC5C,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;SAC7C,CAAC;QAEF,OAAO,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,SAAiB,EAAE,MAAc,EAAE,YAAoB,EAAE,OAA4B;QACpG,MAAM,WAAW,GAAsB;YACrC,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;YAChD,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;YAC5C,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;SAC7C,CAAC;QAEF,OAAO,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;IACxE,CAAC;CACF"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Codex provider implementation
3
+ */
4
+ import type { AgentResponse } from '../models/types.js';
5
+ import type { Provider, ProviderCallOptions } from './index.js';
6
+ /** Codex provider - wraps existing Codex client */
7
+ export declare class CodexProvider implements Provider {
8
+ call(agentName: string, prompt: string, options: ProviderCallOptions): Promise<AgentResponse>;
9
+ callCustom(agentName: string, prompt: string, systemPrompt: string, options: ProviderCallOptions): Promise<AgentResponse>;
10
+ }
11
+ //# sourceMappingURL=codex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../src/providers/codex.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEhE,mDAAmD;AACnD,qBAAa,aAAc,YAAW,QAAQ;IACtC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;IAa7F,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;CAWhI"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Codex provider implementation
3
+ */
4
+ import { callCodex, callCodexCustom } from '../codex/client.js';
5
+ /** Codex provider - wraps existing Codex client */
6
+ export class CodexProvider {
7
+ async call(agentName, prompt, options) {
8
+ const callOptions = {
9
+ cwd: options.cwd,
10
+ sessionId: options.sessionId,
11
+ model: options.model,
12
+ systemPrompt: options.systemPrompt,
13
+ statusPatterns: options.statusPatterns,
14
+ onStream: options.onStream,
15
+ };
16
+ return callCodex(agentName, prompt, callOptions);
17
+ }
18
+ async callCustom(agentName, prompt, systemPrompt, options) {
19
+ const callOptions = {
20
+ cwd: options.cwd,
21
+ sessionId: options.sessionId,
22
+ model: options.model,
23
+ statusPatterns: options.statusPatterns,
24
+ onStream: options.onStream,
25
+ };
26
+ return callCodexCustom(agentName, prompt, systemPrompt, callOptions);
27
+ }
28
+ }
29
+ //# sourceMappingURL=codex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/providers/codex.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,eAAe,EAAyB,MAAM,oBAAoB,CAAC;AAIvF,mDAAmD;AACnD,MAAM,OAAO,aAAa;IACxB,KAAK,CAAC,IAAI,CAAC,SAAiB,EAAE,MAAc,EAAE,OAA4B;QACxE,MAAM,WAAW,GAAqB;YACpC,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC3B,CAAC;QAEF,OAAO,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,SAAiB,EAAE,MAAc,EAAE,YAAoB,EAAE,OAA4B;QACpG,MAAM,WAAW,GAAqB;YACpC,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC3B,CAAC;QAEF,OAAO,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;IACvE,CAAC;CACF"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Provider abstraction layer
3
+ *
4
+ * Provides a unified interface for different agent providers (Claude, Codex, Mock).
5
+ * This enables adding new providers without modifying the runner logic.
6
+ */
7
+ import type { StreamCallback, PermissionHandler, AskUserQuestionHandler } from '../claude/process.js';
8
+ import type { AgentResponse } from '../models/types.js';
9
+ /** Common options for all providers */
10
+ export interface ProviderCallOptions {
11
+ cwd: string;
12
+ sessionId?: string;
13
+ model?: string;
14
+ systemPrompt?: string;
15
+ allowedTools?: string[];
16
+ statusPatterns?: Record<string, string>;
17
+ onStream?: StreamCallback;
18
+ onPermissionRequest?: PermissionHandler;
19
+ onAskUserQuestion?: AskUserQuestionHandler;
20
+ bypassPermissions?: boolean;
21
+ }
22
+ /** Provider interface - all providers must implement this */
23
+ export interface Provider {
24
+ /** Call the provider with a prompt (using systemPrompt from options if provided) */
25
+ call(agentName: string, prompt: string, options: ProviderCallOptions): Promise<AgentResponse>;
26
+ /** Call the provider with explicit system prompt */
27
+ callCustom(agentName: string, prompt: string, systemPrompt: string, options: ProviderCallOptions): Promise<AgentResponse>;
28
+ }
29
+ /** Provider type */
30
+ export type ProviderType = 'claude' | 'codex' | 'mock';
31
+ /**
32
+ * Get a provider instance by type
33
+ */
34
+ export declare function getProvider(type: ProviderType): Provider;
35
+ /**
36
+ * Register a custom provider
37
+ */
38
+ export declare function registerProvider(type: string, provider: Provider): void;
39
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACtG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAKxD,uCAAuC;AACvC,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,mBAAmB,CAAC,EAAE,iBAAiB,CAAC;IACxC,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;IAC3C,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,6DAA6D;AAC7D,MAAM,WAAW,QAAQ;IACvB,oFAAoF;IACpF,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAE9F,oDAAoD;IACpD,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CAC3H;AAED,oBAAoB;AACpB,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AASvD;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,QAAQ,CAMxD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAEvE"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Provider abstraction layer
3
+ *
4
+ * Provides a unified interface for different agent providers (Claude, Codex, Mock).
5
+ * This enables adding new providers without modifying the runner logic.
6
+ */
7
+ import { ClaudeProvider } from './claude.js';
8
+ import { CodexProvider } from './codex.js';
9
+ import { MockProvider } from './mock.js';
10
+ /** Provider registry */
11
+ const providers = {
12
+ claude: new ClaudeProvider(),
13
+ codex: new CodexProvider(),
14
+ mock: new MockProvider(),
15
+ };
16
+ /**
17
+ * Get a provider instance by type
18
+ */
19
+ export function getProvider(type) {
20
+ const provider = providers[type];
21
+ if (!provider) {
22
+ throw new Error(`Unknown provider type: ${type}`);
23
+ }
24
+ return provider;
25
+ }
26
+ /**
27
+ * Register a custom provider
28
+ */
29
+ export function registerProvider(type, provider) {
30
+ providers[type] = provider;
31
+ }
32
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AA4BzC,wBAAwB;AACxB,MAAM,SAAS,GAAmC;IAChD,MAAM,EAAE,IAAI,cAAc,EAAE;IAC5B,KAAK,EAAE,IAAI,aAAa,EAAE;IAC1B,IAAI,EAAE,IAAI,YAAY,EAAE;CACzB,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,IAAkB;IAC5C,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,QAAkB;IAC9D,SAAsC,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;AAC3D,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Mock provider implementation
3
+ */
4
+ import type { AgentResponse } from '../models/types.js';
5
+ import type { Provider, ProviderCallOptions } from './index.js';
6
+ /** Mock provider - wraps existing Mock client */
7
+ export declare class MockProvider implements Provider {
8
+ call(agentName: string, prompt: string, options: ProviderCallOptions): Promise<AgentResponse>;
9
+ callCustom(agentName: string, prompt: string, _systemPrompt: string, options: ProviderCallOptions): Promise<AgentResponse>;
10
+ }
11
+ //# sourceMappingURL=mock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../../src/providers/mock.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEhE,iDAAiD;AACjD,qBAAa,YAAa,YAAW,QAAQ;IACrC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;IAU7F,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;CASjI"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Mock provider implementation
3
+ */
4
+ import { callMock, callMockCustom } from '../mock/client.js';
5
+ /** Mock provider - wraps existing Mock client */
6
+ export class MockProvider {
7
+ async call(agentName, prompt, options) {
8
+ const callOptions = {
9
+ cwd: options.cwd,
10
+ sessionId: options.sessionId,
11
+ onStream: options.onStream,
12
+ };
13
+ return callMock(agentName, prompt, callOptions);
14
+ }
15
+ async callCustom(agentName, prompt, _systemPrompt, options) {
16
+ const callOptions = {
17
+ cwd: options.cwd,
18
+ sessionId: options.sessionId,
19
+ onStream: options.onStream,
20
+ };
21
+ return callMockCustom(agentName, prompt, _systemPrompt, callOptions);
22
+ }
23
+ }
24
+ //# sourceMappingURL=mock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock.js","sourceRoot":"","sources":["../../src/providers/mock.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAwB,MAAM,mBAAmB,CAAC;AAInF,iDAAiD;AACjD,MAAM,OAAO,YAAY;IACvB,KAAK,CAAC,IAAI,CAAC,SAAiB,EAAE,MAAc,EAAE,OAA4B;QACxE,MAAM,WAAW,GAAoB;YACnC,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC3B,CAAC;QAEF,OAAO,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,SAAiB,EAAE,MAAc,EAAE,aAAqB,EAAE,OAA4B;QACrG,MAAM,WAAW,GAAoB;YACnC,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC3B,CAAC;QAEF,OAAO,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;IACvE,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "takt",
3
- "version": "0.1.5",
3
+ "version": "0.1.6",
4
4
  "description": "TAKT: Task Agent Koordination Tool - AI Agent Workflow Orchestration",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -159,7 +159,68 @@ Prohibited patterns:
159
159
  | Hidden Dependencies | Child components implicitly calling APIs etc. |
160
160
  | Non-idiomatic | Custom implementation ignoring language/FW conventions |
161
161
 
162
- ### 6. Unnecessary Backward Compatibility Code Detection
162
+ ### 6. Abstraction Level Evaluation
163
+
164
+ **Conditional Branch Proliferation Detection:**
165
+
166
+ | Pattern | Judgment |
167
+ |---------|----------|
168
+ | Same if-else pattern in 3+ places | Abstract with polymorphism → **REJECT** |
169
+ | switch/case with 5+ branches | Consider Strategy/Map pattern |
170
+ | Flag arguments changing behavior | Split into separate functions → **REJECT** |
171
+ | Type-based branching (instanceof/typeof) | Replace with polymorphism → **REJECT** |
172
+ | Nested conditionals (3+ levels) | Early return or extract → **REJECT** |
173
+
174
+ **Abstraction Level Mismatch Detection:**
175
+
176
+ | Pattern | Problem | Fix |
177
+ |---------|---------|-----|
178
+ | Low-level details in high-level processing | Hard to read | Extract details to functions |
179
+ | Mixed abstraction levels in one function | Cognitive load | Align to same granularity |
180
+ | DB operations mixed with business logic | Responsibility violation | Separate to Repository layer |
181
+ | Config values mixed with processing logic | Hard to change | Externalize configuration |
182
+
183
+ **Good Abstraction Examples:**
184
+
185
+ ```typescript
186
+ // ❌ Proliferating conditionals
187
+ function process(type: string) {
188
+ if (type === 'A') { /* process A */ }
189
+ else if (type === 'B') { /* process B */ }
190
+ else if (type === 'C') { /* process C */ }
191
+ // ...continues
192
+ }
193
+
194
+ // ✅ Abstract with Map pattern
195
+ const processors: Record<string, () => void> = {
196
+ A: processA,
197
+ B: processB,
198
+ C: processC,
199
+ };
200
+ function process(type: string) {
201
+ processors[type]?.();
202
+ }
203
+ ```
204
+
205
+ ```typescript
206
+ // ❌ Mixed abstraction levels
207
+ function createUser(data: UserData) {
208
+ // High level: business logic
209
+ validateUser(data);
210
+ // Low level: DB operation details
211
+ const conn = await pool.getConnection();
212
+ await conn.query('INSERT INTO users...');
213
+ conn.release();
214
+ }
215
+
216
+ // ✅ Aligned abstraction levels
217
+ function createUser(data: UserData) {
218
+ validateUser(data);
219
+ await userRepository.save(data); // Details hidden
220
+ }
221
+ ```
222
+
223
+ ### 7. Unnecessary Backward Compatibility Code Detection
163
224
 
164
225
  **AI tends to leave unnecessary code "for backward compatibility." Don't overlook this.**
165
226
 
@@ -188,7 +249,7 @@ Code that should be kept:
188
249
 
189
250
  **Be suspicious when AI says "for backward compatibility."** Verify if it's really needed.
190
251
 
191
- ### 7. Workaround Detection
252
+ ### 8. Workaround Detection
192
253
 
193
254
  **Don't overlook compromises made to "just make it work."**
194
255
 
@@ -203,7 +264,7 @@ Code that should be kept:
203
264
 
204
265
  **Always point these out.** Temporary fixes become permanent.
205
266
 
206
- ### 8. Quality Attributes
267
+ ### 9. Quality Attributes
207
268
 
208
269
  | Attribute | Review Point |
209
270
  |-----------|--------------|
@@ -211,7 +272,7 @@ Code that should be kept:
211
272
  | Maintainability | Easy to modify and fix |
212
273
  | Observability | Logging and monitoring enabled |
213
274
 
214
- ### 9. Big Picture
275
+ ### 10. Big Picture
215
276
 
216
277
  **Caution**: Don't get lost in minor "clean code" nitpicks.
217
278
 
@@ -222,7 +283,7 @@ Verify:
222
283
  - Does it align with business requirements
223
284
  - Is naming consistent with the domain
224
285
 
225
- ### 10. Change Scope Assessment
286
+ ### 11. Change Scope Assessment
226
287
 
227
288
  **Check change scope and include in report (non-blocking).**
228
289
 
@@ -241,7 +302,7 @@ Verify:
241
302
  **Include as suggestions (non-blocking):**
242
303
  - If splittable, present splitting proposal
243
304
 
244
- ### 11. Circular Review Detection
305
+ ### 12. Circular Review Detection
245
306
 
246
307
  When review count is provided (e.g., "Review count: 3rd"), adjust judgment accordingly.
247
308
 
@@ -105,7 +105,45 @@ Perform self-check after implementation.
105
105
  | Boy Scout | Leave touched areas slightly improved |
106
106
  | Fail Fast | Detect errors early. Don't swallow them |
107
107
 
108
- **When in doubt**: Choose Simple. Abstraction can come later.
108
+ **When in doubt**: Choose Simple.
109
+
110
+ ## Abstraction Principles
111
+
112
+ **Before adding conditional branches, consider:**
113
+ - Does this condition exist elsewhere? → Abstract with a pattern
114
+ - Will more branches be added? → Use Strategy/Map pattern
115
+ - Branching on type? → Replace with polymorphism
116
+
117
+ ```typescript
118
+ // ❌ Adding more conditionals
119
+ if (type === 'A') { ... }
120
+ else if (type === 'B') { ... }
121
+ else if (type === 'C') { ... } // Yet another one
122
+
123
+ // ✅ Abstract with Map
124
+ const handlers = { A: handleA, B: handleB, C: handleC };
125
+ handlers[type]?.();
126
+ ```
127
+
128
+ **Align abstraction levels:**
129
+ - Keep same granularity of operations within one function
130
+ - Extract detailed processing to separate functions
131
+ - Don't mix "what to do" with "how to do it"
132
+
133
+ ```typescript
134
+ // ❌ Mixed abstraction levels
135
+ function processOrder(order) {
136
+ validateOrder(order); // High level
137
+ const conn = pool.getConnection(); // Low level detail
138
+ conn.query('INSERT...'); // Low level detail
139
+ }
140
+
141
+ // ✅ Aligned abstraction levels
142
+ function processOrder(order) {
143
+ validateOrder(order);
144
+ saveOrder(order); // Details hidden
145
+ }
146
+ ```
109
147
 
110
148
  **Follow language/framework conventions:**
111
149
  - Be Pythonic in Python, Kotlin-like in Kotlin
@@ -134,6 +172,121 @@ Perform self-check after implementation.
134
172
  - Children don't modify state directly (notify parent via events)
135
173
  - State flows in one direction
136
174
 
175
+ ## Error Handling
176
+
177
+ **Principle: Centralize error handling. Don't scatter try-catch everywhere.**
178
+
179
+ ```typescript
180
+ // ❌ Try-catch everywhere
181
+ async function createUser(data) {
182
+ try {
183
+ const user = await userService.create(data)
184
+ return user
185
+ } catch (e) {
186
+ console.error(e)
187
+ throw new Error('Failed to create user')
188
+ }
189
+ }
190
+
191
+ // ✅ Centralized handling at upper layer
192
+ // Catch at Controller/Handler layer
193
+ // Or use @ControllerAdvice / ErrorBoundary
194
+ async function createUser(data) {
195
+ return await userService.create(data) // Let exceptions propagate
196
+ }
197
+ ```
198
+
199
+ **Error handling placement:**
200
+
201
+ | Layer | Responsibility |
202
+ |-------|----------------|
203
+ | Domain/Service layer | Throw exceptions on business rule violations |
204
+ | Controller/Handler layer | Catch exceptions and convert to response |
205
+ | Global handler | Handle common exceptions (NotFound, auth errors, etc.) |
206
+
207
+ ## Transformation Placement
208
+
209
+ **Principle: Put conversion methods on DTOs.**
210
+
211
+ ```typescript
212
+ // ✅ Request/Response DTOs have conversion methods
213
+ interface CreateUserRequest {
214
+ name: string
215
+ email: string
216
+ }
217
+
218
+ function toUseCaseInput(req: CreateUserRequest): CreateUserInput {
219
+ return { name: req.name, email: req.email }
220
+ }
221
+
222
+ // Controller
223
+ const input = toUseCaseInput(request)
224
+ const output = await useCase.execute(input)
225
+ return UserResponse.from(output)
226
+ ```
227
+
228
+ **Conversion direction:**
229
+ ```
230
+ Request → toInput() → UseCase/Service → Output → Response.from()
231
+ ```
232
+
233
+ ## Extraction Decisions
234
+
235
+ **Rule of Three:**
236
+ - 1st time: Write it inline
237
+ - 2nd time: Don't extract yet (wait and see)
238
+ - 3rd time: Consider extraction
239
+
240
+ **Should extract:**
241
+ - Same logic in 3+ places
242
+ - Same style/UI pattern
243
+ - Same validation logic
244
+ - Same formatting logic
245
+
246
+ **Should NOT extract:**
247
+ - Similar but slightly different (forced generalization adds complexity)
248
+ - Used in only 1-2 places
249
+ - Based on "might use later" predictions
250
+
251
+ ```typescript
252
+ // ❌ Over-generalization
253
+ function formatValue(value, type, options) {
254
+ if (type === 'currency') { ... }
255
+ else if (type === 'date') { ... }
256
+ else if (type === 'percentage') { ... }
257
+ }
258
+
259
+ // ✅ Separate functions by purpose
260
+ function formatCurrency(amount: number): string { ... }
261
+ function formatDate(date: Date): string { ... }
262
+ function formatPercentage(value: number): string { ... }
263
+ ```
264
+
265
+ ## Writing Tests
266
+
267
+ **Principle: Structure tests with "Given-When-Then".**
268
+
269
+ ```typescript
270
+ test('returns NotFound error when user does not exist', async () => {
271
+ // Given: non-existent user ID
272
+ const nonExistentId = 'non-existent-id'
273
+
274
+ // When: attempt to get user
275
+ const result = await getUser(nonExistentId)
276
+
277
+ // Then: NotFound error is returned
278
+ expect(result.error).toBe('NOT_FOUND')
279
+ })
280
+ ```
281
+
282
+ **Test priority:**
283
+
284
+ | Priority | Target |
285
+ |----------|--------|
286
+ | High | Business logic, state transitions |
287
+ | Medium | Edge cases, error handling |
288
+ | Low | Simple CRUD, UI appearance |
289
+
137
290
  ## Prohibited
138
291
 
139
292
  - **Fallback value overuse** - Don't hide problems with `?? 'unknown'`, `|| 'default'`
@@ -143,4 +296,5 @@ Perform self-check after implementation.
143
296
  - **Direct object/array mutation** - Create new with spread operator
144
297
  - **console.log** - Don't leave in production code
145
298
  - **Hardcoded secrets**
299
+ - **Scattered try-catch** - Centralize error handling at upper layer
146
300
 
@@ -631,7 +631,7 @@ steps:
631
631
  pass_previous_response: true
632
632
  transitions:
633
633
  - condition: done
634
- next_step: cqrs_es_review
634
+ next_step: ai_review
635
635
  - condition: blocked
636
636
  next_step: plan
637
637