codingbuddy 2.3.4 → 2.4.1

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 (131) hide show
  1. package/README.md +70 -0
  2. package/dist/src/cli/init/prompts/tech-stack-prompt.d.ts +1 -0
  3. package/dist/src/cli/init/prompts/tech-stack-prompt.js +1 -0
  4. package/dist/src/cli/init/prompts/tech-stack-prompt.js.map +1 -1
  5. package/dist/src/cli/init/prompts/test-strategy-prompt.d.ts +1 -0
  6. package/dist/src/cli/init/prompts/test-strategy-prompt.js +9 -7
  7. package/dist/src/cli/init/prompts/test-strategy-prompt.js.map +1 -1
  8. package/dist/src/config/config.schema.d.ts +11 -0
  9. package/dist/src/config/config.schema.js +7 -1
  10. package/dist/src/config/config.schema.js.map +1 -1
  11. package/dist/src/config/config.service.d.ts +4 -0
  12. package/dist/src/config/config.service.js +7 -0
  13. package/dist/src/config/config.service.js.map +1 -1
  14. package/dist/src/context/context-document.service.d.ts +24 -0
  15. package/dist/src/context/context-document.service.js +212 -0
  16. package/dist/src/context/context-document.service.js.map +1 -0
  17. package/dist/src/context/context-document.types.d.ts +89 -0
  18. package/dist/src/context/context-document.types.js +53 -0
  19. package/dist/src/context/context-document.types.js.map +1 -0
  20. package/dist/src/context/context-parser.utils.d.ts +10 -0
  21. package/dist/src/context/context-parser.utils.js +214 -0
  22. package/dist/src/context/context-parser.utils.js.map +1 -0
  23. package/dist/src/context/context-serializer.utils.d.ts +16 -0
  24. package/dist/src/context/context-serializer.utils.js +130 -0
  25. package/dist/src/context/context-serializer.utils.js.map +1 -0
  26. package/dist/src/context/context.module.js +5 -3
  27. package/dist/src/context/context.module.js.map +1 -1
  28. package/dist/src/keyword/keyword.module.js +5 -2
  29. package/dist/src/keyword/keyword.module.js.map +1 -1
  30. package/dist/src/keyword/keyword.service.js +19 -11
  31. package/dist/src/keyword/keyword.service.js.map +1 -1
  32. package/dist/src/keyword/patterns/agent.patterns.d.ts +2 -0
  33. package/dist/src/keyword/patterns/agent.patterns.js +91 -0
  34. package/dist/src/keyword/patterns/agent.patterns.js.map +1 -0
  35. package/dist/src/keyword/patterns/ai-ml.patterns.d.ts +2 -0
  36. package/dist/src/keyword/patterns/ai-ml.patterns.js +81 -0
  37. package/dist/src/keyword/patterns/ai-ml.patterns.js.map +1 -0
  38. package/dist/src/keyword/patterns/backend.patterns.d.ts +2 -0
  39. package/dist/src/keyword/patterns/backend.patterns.js +91 -0
  40. package/dist/src/keyword/patterns/backend.patterns.js.map +1 -0
  41. package/dist/src/keyword/patterns/context.patterns.d.ts +2 -0
  42. package/dist/src/keyword/patterns/context.patterns.js +82 -0
  43. package/dist/src/keyword/patterns/context.patterns.js.map +1 -0
  44. package/dist/src/keyword/patterns/data.patterns.d.ts +2 -0
  45. package/dist/src/keyword/patterns/data.patterns.js +47 -0
  46. package/dist/src/keyword/patterns/data.patterns.js.map +1 -0
  47. package/dist/src/keyword/patterns/explicit.patterns.d.ts +1 -0
  48. package/dist/src/keyword/patterns/explicit.patterns.js +10 -0
  49. package/dist/src/keyword/patterns/explicit.patterns.js.map +1 -0
  50. package/dist/src/keyword/patterns/index.d.ts +12 -0
  51. package/dist/src/keyword/patterns/index.js +26 -0
  52. package/dist/src/keyword/patterns/index.js.map +1 -0
  53. package/dist/src/keyword/patterns/intent-pattern-checks.d.ts +2 -0
  54. package/dist/src/keyword/patterns/intent-pattern-checks.js +48 -0
  55. package/dist/src/keyword/patterns/intent-pattern-checks.js.map +1 -0
  56. package/dist/src/keyword/patterns/intent-patterns.types.d.ts +15 -0
  57. package/dist/src/keyword/patterns/intent-patterns.types.js +3 -0
  58. package/dist/src/keyword/patterns/intent-patterns.types.js.map +1 -0
  59. package/dist/src/keyword/patterns/meta-discussion.patterns.d.ts +1 -0
  60. package/dist/src/keyword/patterns/meta-discussion.patterns.js +11 -0
  61. package/dist/src/keyword/patterns/meta-discussion.patterns.js.map +1 -0
  62. package/dist/src/keyword/patterns/mobile.patterns.d.ts +2 -0
  63. package/dist/src/keyword/patterns/mobile.patterns.js +35 -0
  64. package/dist/src/keyword/patterns/mobile.patterns.js.map +1 -0
  65. package/dist/src/keyword/patterns/platform.patterns.d.ts +2 -0
  66. package/dist/src/keyword/patterns/platform.patterns.js +72 -0
  67. package/dist/src/keyword/patterns/platform.patterns.js.map +1 -0
  68. package/dist/src/keyword/patterns/tooling.patterns.d.ts +2 -0
  69. package/dist/src/keyword/patterns/tooling.patterns.js +78 -0
  70. package/dist/src/keyword/patterns/tooling.patterns.js.map +1 -0
  71. package/dist/src/keyword/primary-agent-resolver.d.ts +7 -29
  72. package/dist/src/keyword/primary-agent-resolver.js +34 -684
  73. package/dist/src/keyword/primary-agent-resolver.js.map +1 -1
  74. package/dist/src/keyword/strategies/__tests__/strategy-test.utils.d.ts +8 -0
  75. package/dist/src/keyword/strategies/__tests__/strategy-test.utils.js +45 -0
  76. package/dist/src/keyword/strategies/__tests__/strategy-test.utils.js.map +1 -0
  77. package/dist/src/keyword/strategies/act-agent.strategy.d.ts +10 -0
  78. package/dist/src/keyword/strategies/act-agent.strategy.js +125 -0
  79. package/dist/src/keyword/strategies/act-agent.strategy.js.map +1 -0
  80. package/dist/src/keyword/strategies/eval-agent.strategy.d.ts +5 -0
  81. package/dist/src/keyword/strategies/eval-agent.strategy.js +19 -0
  82. package/dist/src/keyword/strategies/eval-agent.strategy.js.map +1 -0
  83. package/dist/src/keyword/strategies/index.d.ts +4 -0
  84. package/dist/src/keyword/strategies/index.js +10 -0
  85. package/dist/src/keyword/strategies/index.js.map +1 -0
  86. package/dist/src/keyword/strategies/plan-agent.strategy.d.ts +6 -0
  87. package/dist/src/keyword/strategies/plan-agent.strategy.js +68 -0
  88. package/dist/src/keyword/strategies/plan-agent.strategy.js.map +1 -0
  89. package/dist/src/keyword/strategies/resolution-strategy.interface.d.ts +20 -0
  90. package/dist/src/keyword/strategies/resolution-strategy.interface.js +3 -0
  91. package/dist/src/keyword/strategies/resolution-strategy.interface.js.map +1 -0
  92. package/dist/src/mcp/handlers/config.handler.js +2 -1
  93. package/dist/src/mcp/handlers/config.handler.js.map +1 -1
  94. package/dist/src/mcp/handlers/context-document.handler.d.ts +13 -0
  95. package/dist/src/mcp/handlers/context-document.handler.js +232 -0
  96. package/dist/src/mcp/handlers/context-document.handler.js.map +1 -0
  97. package/dist/src/mcp/handlers/index.d.ts +1 -0
  98. package/dist/src/mcp/handlers/index.js +3 -1
  99. package/dist/src/mcp/handlers/index.js.map +1 -1
  100. package/dist/src/mcp/handlers/mode.handler.d.ts +6 -1
  101. package/dist/src/mcp/handlers/mode.handler.js +128 -14
  102. package/dist/src/mcp/handlers/mode.handler.js.map +1 -1
  103. package/dist/src/mcp/mcp.module.js +1 -0
  104. package/dist/src/mcp/mcp.module.js.map +1 -1
  105. package/dist/src/rules/rules.service.js +17 -1
  106. package/dist/src/rules/rules.service.js.map +1 -1
  107. package/dist/src/rules/rules.types.d.ts +7 -0
  108. package/dist/src/session/__tests__/session-test.utils.d.ts +5 -0
  109. package/dist/src/session/__tests__/session-test.utils.js +59 -0
  110. package/dist/src/session/__tests__/session-test.utils.js.map +1 -0
  111. package/dist/src/session/session.cache.d.ts +19 -0
  112. package/dist/src/session/session.cache.js +83 -0
  113. package/dist/src/session/session.cache.js.map +1 -0
  114. package/dist/src/session/session.parser.d.ts +22 -0
  115. package/dist/src/session/session.parser.js +273 -0
  116. package/dist/src/session/session.parser.js.map +1 -0
  117. package/dist/src/session/session.serializer.d.ts +6 -0
  118. package/dist/src/session/session.serializer.js +84 -0
  119. package/dist/src/session/session.serializer.js.map +1 -0
  120. package/dist/src/session/session.service.d.ts +3 -12
  121. package/dist/src/session/session.service.js +63 -311
  122. package/dist/src/session/session.service.js.map +1 -1
  123. package/dist/src/session/session.types.d.ts +11 -0
  124. package/dist/src/shared/async.utils.d.ts +12 -0
  125. package/dist/src/shared/async.utils.js +50 -0
  126. package/dist/src/shared/async.utils.js.map +1 -1
  127. package/dist/src/shared/slug.utils.d.ts +2 -0
  128. package/dist/src/shared/slug.utils.js +20 -0
  129. package/dist/src/shared/slug.utils.js.map +1 -0
  130. package/dist/tsconfig.build.tsbuildinfo +1 -1
  131. package/package.json +2 -2
@@ -0,0 +1,89 @@
1
+ import type { Mode } from '../keyword/keyword.types';
2
+ export declare const CONTEXT_FILE_PATH = "docs/codingbuddy/context.md";
3
+ export declare const CONTEXT_FILE_TIMEOUT_MS = 5000;
4
+ export declare const MAX_CONTEXT_ARRAY_ITEMS = 100;
5
+ export declare const MAX_CONTEXT_ITEM_LENGTH = 2000;
6
+ export interface ContextMetadata {
7
+ title: string;
8
+ createdAt: string;
9
+ lastUpdatedAt: string;
10
+ currentMode: Mode;
11
+ status: 'active' | 'completed';
12
+ }
13
+ export interface ContextSection {
14
+ mode: Mode;
15
+ timestamp: string;
16
+ task?: string;
17
+ decisions?: string[];
18
+ notes?: string[];
19
+ primaryAgent?: string;
20
+ recommendedActAgent?: string;
21
+ recommendedActAgentConfidence?: number;
22
+ progress?: string[];
23
+ findings?: string[];
24
+ recommendations?: string[];
25
+ status?: 'in_progress' | 'completed' | 'blocked';
26
+ }
27
+ export interface ContextDocument {
28
+ metadata: ContextMetadata;
29
+ sections: ContextSection[];
30
+ }
31
+ export interface ResetContextData {
32
+ title: string;
33
+ task?: string;
34
+ primaryAgent?: string;
35
+ recommendedActAgent?: string;
36
+ recommendedActAgentConfidence?: number;
37
+ decisions?: string[];
38
+ notes?: string[];
39
+ }
40
+ export interface AppendContextData {
41
+ mode: Mode;
42
+ task?: string;
43
+ primaryAgent?: string;
44
+ decisions?: string[];
45
+ notes?: string[];
46
+ progress?: string[];
47
+ findings?: string[];
48
+ recommendations?: string[];
49
+ status?: 'in_progress' | 'completed' | 'blocked';
50
+ }
51
+ export interface ContextOperationResult {
52
+ success: boolean;
53
+ filePath?: string;
54
+ message?: string;
55
+ error?: string;
56
+ document?: ContextDocument;
57
+ }
58
+ export interface ContextReadResult {
59
+ exists: boolean;
60
+ document?: ContextDocument;
61
+ error?: string;
62
+ }
63
+ export declare const CONTEXT_MARKDOWN: {
64
+ readonly CONTEXT_HEADER: "# Context:";
65
+ readonly CREATED_PREFIX: "**Created**:";
66
+ readonly UPDATED_PREFIX: "**Updated**:";
67
+ readonly MODE_PREFIX: "**Current Mode**:";
68
+ readonly STATUS_PREFIX: "**Status**:";
69
+ readonly SECTION_SEPARATOR: "---";
70
+ readonly TASK_HEADER: "### Task";
71
+ readonly DECISIONS_HEADER: "### Decisions";
72
+ readonly NOTES_HEADER: "### Notes";
73
+ readonly PROGRESS_HEADER: "### Progress";
74
+ readonly FINDINGS_HEADER: "### Findings";
75
+ readonly RECOMMENDATIONS_HEADER: "### Recommendations";
76
+ readonly PRIMARY_AGENT_PREFIX: "**Primary Agent**:";
77
+ readonly RECOMMENDED_ACT_AGENT_PREFIX: "**Recommended ACT Agent**:";
78
+ };
79
+ export declare const CONTEXT_SECTION_HEADER_PATTERN: RegExp;
80
+ export declare const VALID_CONTEXT_STATUSES: readonly ["active", "completed"];
81
+ export declare const VALID_SECTION_STATUSES: readonly ["in_progress", "completed", "blocked"];
82
+ export declare function isValidContextStatus(value: string): value is ContextMetadata['status'];
83
+ export declare function isValidSectionStatus(value: string): value is NonNullable<ContextSection['status']>;
84
+ export interface ContextLimits {
85
+ maxArrayItems: number;
86
+ maxItemLength: number;
87
+ }
88
+ export declare const DEFAULT_CONTEXT_LIMITS: ContextLimits;
89
+ export declare function truncateArray(items: string[] | undefined, limits?: ContextLimits): string[] | undefined;
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_CONTEXT_LIMITS = exports.VALID_SECTION_STATUSES = exports.VALID_CONTEXT_STATUSES = exports.CONTEXT_SECTION_HEADER_PATTERN = exports.CONTEXT_MARKDOWN = exports.MAX_CONTEXT_ITEM_LENGTH = exports.MAX_CONTEXT_ARRAY_ITEMS = exports.CONTEXT_FILE_TIMEOUT_MS = exports.CONTEXT_FILE_PATH = void 0;
4
+ exports.isValidContextStatus = isValidContextStatus;
5
+ exports.isValidSectionStatus = isValidSectionStatus;
6
+ exports.truncateArray = truncateArray;
7
+ exports.CONTEXT_FILE_PATH = 'docs/codingbuddy/context.md';
8
+ exports.CONTEXT_FILE_TIMEOUT_MS = 5000;
9
+ exports.MAX_CONTEXT_ARRAY_ITEMS = 100;
10
+ exports.MAX_CONTEXT_ITEM_LENGTH = 2000;
11
+ exports.CONTEXT_MARKDOWN = {
12
+ CONTEXT_HEADER: '# Context:',
13
+ CREATED_PREFIX: '**Created**:',
14
+ UPDATED_PREFIX: '**Updated**:',
15
+ MODE_PREFIX: '**Current Mode**:',
16
+ STATUS_PREFIX: '**Status**:',
17
+ SECTION_SEPARATOR: '---',
18
+ TASK_HEADER: '### Task',
19
+ DECISIONS_HEADER: '### Decisions',
20
+ NOTES_HEADER: '### Notes',
21
+ PROGRESS_HEADER: '### Progress',
22
+ FINDINGS_HEADER: '### Findings',
23
+ RECOMMENDATIONS_HEADER: '### Recommendations',
24
+ PRIMARY_AGENT_PREFIX: '**Primary Agent**:',
25
+ RECOMMENDED_ACT_AGENT_PREFIX: '**Recommended ACT Agent**:',
26
+ };
27
+ exports.CONTEXT_SECTION_HEADER_PATTERN = /^## (PLAN|ACT|EVAL|AUTO) \((.+)\)$/;
28
+ exports.VALID_CONTEXT_STATUSES = ['active', 'completed'];
29
+ exports.VALID_SECTION_STATUSES = [
30
+ 'in_progress',
31
+ 'completed',
32
+ 'blocked',
33
+ ];
34
+ function isValidContextStatus(value) {
35
+ return exports.VALID_CONTEXT_STATUSES.includes(value);
36
+ }
37
+ function isValidSectionStatus(value) {
38
+ return exports.VALID_SECTION_STATUSES.includes(value);
39
+ }
40
+ exports.DEFAULT_CONTEXT_LIMITS = {
41
+ maxArrayItems: exports.MAX_CONTEXT_ARRAY_ITEMS,
42
+ maxItemLength: exports.MAX_CONTEXT_ITEM_LENGTH,
43
+ };
44
+ function truncateArray(items, limits = exports.DEFAULT_CONTEXT_LIMITS) {
45
+ if (!items)
46
+ return undefined;
47
+ return items
48
+ .slice(0, limits.maxArrayItems)
49
+ .map(item => item.length > limits.maxItemLength
50
+ ? item.substring(0, limits.maxItemLength)
51
+ : item);
52
+ }
53
+ //# sourceMappingURL=context-document.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-document.types.js","sourceRoot":"","sources":["../../../src/context/context-document.types.ts"],"names":[],"mappings":";;;AAmMA,oDAIC;AAKD,oDAMC;AA4BD,sCAYC;AApPY,QAAA,iBAAiB,GAAG,6BAA6B,CAAC;AAKlD,QAAA,uBAAuB,GAAG,IAAI,CAAC;AAM/B,QAAA,uBAAuB,GAAG,GAAG,CAAC;AAM9B,QAAA,uBAAuB,GAAG,IAAI,CAAC;AAwI/B,QAAA,gBAAgB,GAAG;IAC9B,cAAc,EAAE,YAAY;IAC5B,cAAc,EAAE,cAAc;IAC9B,cAAc,EAAE,cAAc;IAC9B,WAAW,EAAE,mBAAmB;IAChC,aAAa,EAAE,aAAa;IAC5B,iBAAiB,EAAE,KAAK;IACxB,WAAW,EAAE,UAAU;IACvB,gBAAgB,EAAE,eAAe;IACjC,YAAY,EAAE,WAAW;IACzB,eAAe,EAAE,cAAc;IAC/B,eAAe,EAAE,cAAc;IAC/B,sBAAsB,EAAE,qBAAqB;IAC7C,oBAAoB,EAAE,oBAAoB;IAC1C,4BAA4B,EAAE,4BAA4B;CAClD,CAAC;AAKE,QAAA,8BAA8B,GACzC,oCAAoC,CAAC;AAK1B,QAAA,sBAAsB,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAU,CAAC;AAC1D,QAAA,sBAAsB,GAAG;IACpC,aAAa;IACb,WAAW;IACX,SAAS;CACD,CAAC;AAKX,SAAgB,oBAAoB,CAClC,KAAa;IAEb,OAAO,8BAAsB,CAAC,QAAQ,CAAC,KAAkC,CAAC,CAAC;AAC7E,CAAC;AAKD,SAAgB,oBAAoB,CAClC,KAAa;IAEb,OAAO,8BAAsB,CAAC,QAAQ,CACpC,KAA8C,CAC/C,CAAC;AACJ,CAAC;AAeY,QAAA,sBAAsB,GAAkB;IACnD,aAAa,EAAE,+BAAuB;IACtC,aAAa,EAAE,+BAAuB;CACvC,CAAC;AAUF,SAAgB,aAAa,CAC3B,KAA2B,EAC3B,SAAwB,8BAAsB;IAE9C,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,OAAO,KAAK;SACT,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC;SAC9B,GAAG,CAAC,IAAI,CAAC,EAAE,CACV,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,aAAa;QAChC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC;QACzC,CAAC,CAAC,IAAI,CACT,CAAC;AACN,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { Mode } from '../keyword/keyword.types';
2
+ import type { ContextDocument, ContextSection } from './context-document.types';
3
+ export declare function parseContextDocument(content: string): ContextDocument;
4
+ export declare function extractRecommendedActAgent(document: ContextDocument): {
5
+ agent: string;
6
+ confidence: number;
7
+ } | null;
8
+ export declare function getAllDecisions(document: ContextDocument): string[];
9
+ export declare function getAllNotes(document: ContextDocument): string[];
10
+ export declare function findSectionByMode(document: ContextDocument, mode: Mode): ContextSection | undefined;
@@ -0,0 +1,214 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseContextDocument = parseContextDocument;
4
+ exports.extractRecommendedActAgent = extractRecommendedActAgent;
5
+ exports.getAllDecisions = getAllDecisions;
6
+ exports.getAllNotes = getAllNotes;
7
+ exports.findSectionByMode = findSectionByMode;
8
+ const context_document_types_1 = require("./context-document.types");
9
+ const VALID_MODES = ['PLAN', 'ACT', 'EVAL', 'AUTO'];
10
+ function parseMode(value) {
11
+ const trimmed = value.trim();
12
+ if (VALID_MODES.includes(trimmed)) {
13
+ return trimmed;
14
+ }
15
+ return null;
16
+ }
17
+ function addToSectionList(section, listType, item) {
18
+ if (!section[listType]) {
19
+ section[listType] = [];
20
+ }
21
+ section[listType].push(item);
22
+ }
23
+ function parseContextDocument(content) {
24
+ const lines = content.split('\n');
25
+ const ctx = {
26
+ metadata: {
27
+ title: 'Untitled',
28
+ createdAt: new Date().toISOString(),
29
+ lastUpdatedAt: new Date().toISOString(),
30
+ currentMode: 'PLAN',
31
+ status: 'active',
32
+ },
33
+ sections: [],
34
+ currentSection: null,
35
+ currentListType: null,
36
+ };
37
+ for (const line of lines) {
38
+ parseLine(line, ctx);
39
+ }
40
+ if (ctx.currentSection && ctx.currentSection.mode) {
41
+ ctx.sections.push(ctx.currentSection);
42
+ }
43
+ return {
44
+ metadata: ctx.metadata,
45
+ sections: ctx.sections,
46
+ };
47
+ }
48
+ function parseLine(line, ctx) {
49
+ if (!ctx.currentSection && parseMetadataLine(line, ctx)) {
50
+ return;
51
+ }
52
+ if (parseSectionHeader(line, ctx)) {
53
+ return;
54
+ }
55
+ if (ctx.currentSection) {
56
+ parseSectionContent(line, ctx);
57
+ }
58
+ }
59
+ function parseMetadataLine(line, ctx) {
60
+ const { CONTEXT_HEADER, CREATED_PREFIX, UPDATED_PREFIX, MODE_PREFIX, STATUS_PREFIX, } = context_document_types_1.CONTEXT_MARKDOWN;
61
+ if (line.startsWith(CONTEXT_HEADER)) {
62
+ ctx.metadata.title = line.replace(CONTEXT_HEADER, '').trim();
63
+ return true;
64
+ }
65
+ if (line.startsWith(CREATED_PREFIX)) {
66
+ ctx.metadata.createdAt = line.replace(CREATED_PREFIX, '').trim();
67
+ return true;
68
+ }
69
+ if (line.startsWith(UPDATED_PREFIX)) {
70
+ ctx.metadata.lastUpdatedAt = line.replace(UPDATED_PREFIX, '').trim();
71
+ return true;
72
+ }
73
+ if (line.startsWith(MODE_PREFIX)) {
74
+ const modeValue = line.replace(MODE_PREFIX, '').trim();
75
+ const mode = parseMode(modeValue);
76
+ if (mode) {
77
+ ctx.metadata.currentMode = mode;
78
+ }
79
+ return true;
80
+ }
81
+ if (line.startsWith(STATUS_PREFIX) && !ctx.currentSection) {
82
+ const status = line.replace(STATUS_PREFIX, '').trim();
83
+ if ((0, context_document_types_1.isValidContextStatus)(status)) {
84
+ ctx.metadata.status = status;
85
+ }
86
+ return true;
87
+ }
88
+ return false;
89
+ }
90
+ function parseSectionHeader(line, ctx) {
91
+ const match = line.match(context_document_types_1.CONTEXT_SECTION_HEADER_PATTERN);
92
+ if (!match) {
93
+ return false;
94
+ }
95
+ const mode = parseMode(match[1]);
96
+ if (!mode) {
97
+ return false;
98
+ }
99
+ if (ctx.currentSection && ctx.currentSection.mode) {
100
+ ctx.sections.push(ctx.currentSection);
101
+ }
102
+ ctx.currentSection = {
103
+ mode,
104
+ timestamp: match[2],
105
+ };
106
+ ctx.currentListType = null;
107
+ return true;
108
+ }
109
+ function parseSectionContent(line, ctx) {
110
+ if (!ctx.currentSection)
111
+ return;
112
+ const { PRIMARY_AGENT_PREFIX, RECOMMENDED_ACT_AGENT_PREFIX, STATUS_PREFIX, TASK_HEADER, DECISIONS_HEADER, NOTES_HEADER, PROGRESS_HEADER, FINDINGS_HEADER, RECOMMENDATIONS_HEADER, SECTION_SEPARATOR, } = context_document_types_1.CONTEXT_MARKDOWN;
113
+ if (line === SECTION_SEPARATOR) {
114
+ return;
115
+ }
116
+ if (line.startsWith(PRIMARY_AGENT_PREFIX)) {
117
+ ctx.currentSection.primaryAgent = line
118
+ .replace(PRIMARY_AGENT_PREFIX, '')
119
+ .trim();
120
+ return;
121
+ }
122
+ if (line.startsWith(RECOMMENDED_ACT_AGENT_PREFIX)) {
123
+ const rest = line.replace(RECOMMENDED_ACT_AGENT_PREFIX, '').trim();
124
+ const confidenceMatch = rest.match(/^([^\s(]+)(?:\s*\(confidence: ([\d.]+)\))?/);
125
+ if (confidenceMatch) {
126
+ ctx.currentSection.recommendedActAgent = confidenceMatch[1];
127
+ if (confidenceMatch[2]) {
128
+ ctx.currentSection.recommendedActAgentConfidence = parseFloat(confidenceMatch[2]);
129
+ }
130
+ }
131
+ return;
132
+ }
133
+ if (line.startsWith(STATUS_PREFIX)) {
134
+ const status = line.replace(STATUS_PREFIX, '').trim();
135
+ if ((0, context_document_types_1.isValidSectionStatus)(status)) {
136
+ ctx.currentSection.status = status;
137
+ }
138
+ return;
139
+ }
140
+ if (line === TASK_HEADER) {
141
+ ctx.currentListType = null;
142
+ return;
143
+ }
144
+ if (line === DECISIONS_HEADER) {
145
+ ctx.currentListType = 'decisions';
146
+ return;
147
+ }
148
+ if (line === NOTES_HEADER) {
149
+ ctx.currentListType = 'notes';
150
+ return;
151
+ }
152
+ if (line === PROGRESS_HEADER) {
153
+ ctx.currentListType = 'progress';
154
+ return;
155
+ }
156
+ if (line === FINDINGS_HEADER) {
157
+ ctx.currentListType = 'findings';
158
+ return;
159
+ }
160
+ if (line === RECOMMENDATIONS_HEADER) {
161
+ ctx.currentListType = 'recommendations';
162
+ return;
163
+ }
164
+ if (line.startsWith('- ') && ctx.currentListType) {
165
+ const item = line.replace('- ', '').trim();
166
+ addToSectionList(ctx.currentSection, ctx.currentListType, item);
167
+ return;
168
+ }
169
+ if (isContentLine(line) && !ctx.currentListType) {
170
+ ctx.currentSection.task = ctx.currentSection.task
171
+ ? `${ctx.currentSection.task}\n${line}`
172
+ : line;
173
+ }
174
+ }
175
+ function isContentLine(line) {
176
+ const trimmed = line.trim();
177
+ return (trimmed.length > 0 &&
178
+ !trimmed.startsWith('#') &&
179
+ !trimmed.startsWith('**') &&
180
+ !trimmed.startsWith('-') &&
181
+ trimmed !== '---');
182
+ }
183
+ function extractRecommendedActAgent(document) {
184
+ const planSection = document.sections.find(s => s.mode === 'PLAN');
185
+ if (planSection?.recommendedActAgent) {
186
+ return {
187
+ agent: planSection.recommendedActAgent,
188
+ confidence: planSection.recommendedActAgentConfidence || 0,
189
+ };
190
+ }
191
+ return null;
192
+ }
193
+ function getAllDecisions(document) {
194
+ const decisions = [];
195
+ for (const section of document.sections) {
196
+ if (section.decisions) {
197
+ decisions.push(...section.decisions);
198
+ }
199
+ }
200
+ return decisions;
201
+ }
202
+ function getAllNotes(document) {
203
+ const notes = [];
204
+ for (const section of document.sections) {
205
+ if (section.notes) {
206
+ notes.push(...section.notes);
207
+ }
208
+ }
209
+ return notes;
210
+ }
211
+ function findSectionByMode(document, mode) {
212
+ return document.sections.find(s => s.mode === mode);
213
+ }
214
+ //# sourceMappingURL=context-parser.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-parser.utils.js","sourceRoot":"","sources":["../../../src/context/context-parser.utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { ContextDocument, ContextMetadata, ContextSection } from './context-document.types';
2
+ export declare function serializeContextDocument(document: ContextDocument): string;
3
+ export declare function serializeMetadata(metadata: ContextMetadata): string[];
4
+ export declare function serializeSection(section: ContextSection): string[];
5
+ export declare function createNewContextDocument(title: string, planSection: ContextSection, isoTimestamp: string): ContextDocument;
6
+ export declare function createPlanSection(data: {
7
+ task?: string;
8
+ primaryAgent?: string;
9
+ recommendedActAgent?: string;
10
+ recommendedActAgentConfidence?: number;
11
+ decisions?: string[];
12
+ notes?: string[];
13
+ }, timestamp: string): ContextSection;
14
+ export declare function mergeArraysUnique(existing: string[] | undefined, newItems: string[] | undefined): string[];
15
+ export declare function mergeSection(existing: ContextSection, newData: Partial<ContextSection>, timestamp: string): ContextSection;
16
+ export declare function generateTimestamp(date?: Date): string;
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.serializeContextDocument = serializeContextDocument;
4
+ exports.serializeMetadata = serializeMetadata;
5
+ exports.serializeSection = serializeSection;
6
+ exports.createNewContextDocument = createNewContextDocument;
7
+ exports.createPlanSection = createPlanSection;
8
+ exports.mergeArraysUnique = mergeArraysUnique;
9
+ exports.mergeSection = mergeSection;
10
+ exports.generateTimestamp = generateTimestamp;
11
+ const context_document_types_1 = require("./context-document.types");
12
+ function serializeContextDocument(document) {
13
+ const lines = [];
14
+ lines.push(...serializeMetadata(document.metadata));
15
+ for (const section of document.sections) {
16
+ lines.push('');
17
+ lines.push(...serializeSection(section));
18
+ }
19
+ return lines.join('\n');
20
+ }
21
+ function serializeMetadata(metadata) {
22
+ const { CONTEXT_HEADER, CREATED_PREFIX, UPDATED_PREFIX, MODE_PREFIX, STATUS_PREFIX, SECTION_SEPARATOR, } = context_document_types_1.CONTEXT_MARKDOWN;
23
+ return [
24
+ `${CONTEXT_HEADER} ${metadata.title}`,
25
+ '',
26
+ `${CREATED_PREFIX} ${metadata.createdAt}`,
27
+ `${UPDATED_PREFIX} ${metadata.lastUpdatedAt}`,
28
+ `${MODE_PREFIX} ${metadata.currentMode}`,
29
+ `${STATUS_PREFIX} ${metadata.status}`,
30
+ '',
31
+ SECTION_SEPARATOR,
32
+ ];
33
+ }
34
+ function serializeList(lines, header, items) {
35
+ if (items && items.length > 0) {
36
+ lines.push(header);
37
+ for (const item of items) {
38
+ lines.push(`- ${item}`);
39
+ }
40
+ lines.push('');
41
+ }
42
+ }
43
+ function serializeSection(section) {
44
+ const { PRIMARY_AGENT_PREFIX, RECOMMENDED_ACT_AGENT_PREFIX, STATUS_PREFIX, TASK_HEADER, DECISIONS_HEADER, NOTES_HEADER, PROGRESS_HEADER, FINDINGS_HEADER, RECOMMENDATIONS_HEADER, SECTION_SEPARATOR, } = context_document_types_1.CONTEXT_MARKDOWN;
45
+ const lines = [];
46
+ lines.push(`## ${section.mode} (${section.timestamp})`);
47
+ lines.push('');
48
+ if (section.primaryAgent) {
49
+ lines.push(`${PRIMARY_AGENT_PREFIX} ${section.primaryAgent}`);
50
+ }
51
+ if (section.recommendedActAgent) {
52
+ const confidence = section.recommendedActAgentConfidence
53
+ ? ` (confidence: ${section.recommendedActAgentConfidence})`
54
+ : '';
55
+ lines.push(`${RECOMMENDED_ACT_AGENT_PREFIX} ${section.recommendedActAgent}${confidence}`);
56
+ }
57
+ if (section.status) {
58
+ lines.push(`${STATUS_PREFIX} ${section.status}`);
59
+ }
60
+ lines.push('');
61
+ if (section.task) {
62
+ lines.push(TASK_HEADER);
63
+ lines.push(section.task);
64
+ lines.push('');
65
+ }
66
+ serializeList(lines, DECISIONS_HEADER, section.decisions);
67
+ serializeList(lines, NOTES_HEADER, section.notes);
68
+ serializeList(lines, PROGRESS_HEADER, section.progress);
69
+ serializeList(lines, FINDINGS_HEADER, section.findings);
70
+ serializeList(lines, RECOMMENDATIONS_HEADER, section.recommendations);
71
+ lines.push(SECTION_SEPARATOR);
72
+ return lines;
73
+ }
74
+ function createNewContextDocument(title, planSection, isoTimestamp) {
75
+ return {
76
+ metadata: {
77
+ title,
78
+ createdAt: isoTimestamp,
79
+ lastUpdatedAt: isoTimestamp,
80
+ currentMode: 'PLAN',
81
+ status: 'active',
82
+ },
83
+ sections: [planSection],
84
+ };
85
+ }
86
+ function createPlanSection(data, timestamp) {
87
+ return {
88
+ mode: 'PLAN',
89
+ timestamp,
90
+ task: data.task,
91
+ primaryAgent: data.primaryAgent,
92
+ recommendedActAgent: data.recommendedActAgent,
93
+ recommendedActAgentConfidence: data.recommendedActAgentConfidence,
94
+ decisions: data.decisions,
95
+ notes: data.notes,
96
+ status: 'in_progress',
97
+ };
98
+ }
99
+ function mergeArraysUnique(existing, newItems) {
100
+ const set = new Set(existing || []);
101
+ for (const item of newItems || []) {
102
+ set.add(item);
103
+ }
104
+ return Array.from(set);
105
+ }
106
+ function mergeSection(existing, newData, timestamp) {
107
+ return {
108
+ ...existing,
109
+ timestamp,
110
+ task: newData.task || existing.task,
111
+ primaryAgent: newData.primaryAgent || existing.primaryAgent,
112
+ recommendedActAgent: newData.recommendedActAgent || existing.recommendedActAgent,
113
+ recommendedActAgentConfidence: newData.recommendedActAgentConfidence ??
114
+ existing.recommendedActAgentConfidence,
115
+ decisions: mergeArraysUnique(existing.decisions, newData.decisions),
116
+ notes: mergeArraysUnique(existing.notes, newData.notes),
117
+ progress: mergeArraysUnique(existing.progress, newData.progress),
118
+ findings: mergeArraysUnique(existing.findings, newData.findings),
119
+ recommendations: mergeArraysUnique(existing.recommendations, newData.recommendations),
120
+ status: newData.status || existing.status,
121
+ };
122
+ }
123
+ function generateTimestamp(date = new Date()) {
124
+ return date.toLocaleString('en-US', {
125
+ hour: '2-digit',
126
+ minute: '2-digit',
127
+ hour12: false,
128
+ });
129
+ }
130
+ //# sourceMappingURL=context-serializer.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-serializer.utils.js","sourceRoot":"","sources":["../../../src/context/context-serializer.utils.ts"],"names":[],"mappings":"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"}
@@ -9,15 +9,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.ContextModule = void 0;
10
10
  const common_1 = require("@nestjs/common");
11
11
  const context_service_1 = require("./context.service");
12
+ const context_document_service_1 = require("./context-document.service");
12
13
  const checklist_module_1 = require("../checklist/checklist.module");
14
+ const config_module_1 = require("../config/config.module");
13
15
  let ContextModule = class ContextModule {
14
16
  };
15
17
  exports.ContextModule = ContextModule;
16
18
  exports.ContextModule = ContextModule = __decorate([
17
19
  (0, common_1.Module)({
18
- imports: [checklist_module_1.ChecklistModule],
19
- providers: [context_service_1.ContextService],
20
- exports: [context_service_1.ContextService],
20
+ imports: [checklist_module_1.ChecklistModule, config_module_1.CodingBuddyConfigModule],
21
+ providers: [context_service_1.ContextService, context_document_service_1.ContextDocumentService],
22
+ exports: [context_service_1.ContextService, context_document_service_1.ContextDocumentService],
21
23
  })
22
24
  ], ContextModule);
23
25
  //# sourceMappingURL=context.module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.module.js","sourceRoot":"","sources":["../../../src/context/context.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,uDAAmD;AACnD,oEAAgE;AAOzD,IAAM,aAAa,GAAnB,MAAM,aAAa;CAAG,CAAA;AAAhB,sCAAa;wBAAb,aAAa;IALzB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,kCAAe,CAAC;QAC1B,SAAS,EAAE,CAAC,gCAAc,CAAC;QAC3B,OAAO,EAAE,CAAC,gCAAc,CAAC;KAC1B,CAAC;GACW,aAAa,CAAG"}
1
+ {"version":3,"file":"context.module.js","sourceRoot":"","sources":["../../../src/context/context.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,uDAAmD;AACnD,yEAAoE;AACpE,oEAAgE;AAChE,2DAAkE;AAO3D,IAAM,aAAa,GAAnB,MAAM,aAAa;CAAG,CAAA;AAAhB,sCAAa;wBAAb,aAAa;IALzB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,kCAAe,EAAE,uCAAuB,CAAC;QACnD,SAAS,EAAE,CAAC,gCAAc,EAAE,iDAAsB,CAAC;QACnD,OAAO,EAAE,CAAC,gCAAc,EAAE,iDAAsB,CAAC;KAClD,CAAC;GACW,aAAa,CAAG"}
@@ -40,8 +40,11 @@ exports.KeywordModule = KeywordModule = __decorate([
40
40
  const getProjectConfig = async () => {
41
41
  try {
42
42
  const settings = await configService.getSettings();
43
- if (settings.ai?.primaryAgent) {
44
- return { primaryAgent: settings.ai.primaryAgent };
43
+ if (settings.ai?.primaryAgent || settings.ai?.excludeAgents) {
44
+ return {
45
+ primaryAgent: settings.ai.primaryAgent,
46
+ excludeAgents: settings.ai.excludeAgents,
47
+ };
45
48
  }
46
49
  return null;
47
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"keyword.module.js","sourceRoot":"","sources":["../../../src/keyword/keyword.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAgD;AAChD,2DAAqF;AACrF,6DAAyD;AACzD,wDAAoD;AACpD,0DAAsD;AACtD,uDAA2D;AAC3D,uDAAmD;AACnD,qEAAgE;AAGnD,QAAA,eAAe,GAAG,iBAAiB,CAAC;AA4F1C,IAAM,aAAa,GAAnB,MAAM,aAAa;CAAG,CAAA;AAAhB,sCAAa;wBAAb,aAAa;IA1FzB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,0BAAW,EAAE,uCAAe,CAAC;QACvC,SAAS,EAAE;YACT;gBACE,OAAO,EAAE,uBAAe;gBACxB,UAAU,EAAE,CACV,YAA0B,EAC1B,aAA4B,EAC5B,EAAE;oBACF,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC,eAAe,CAAC,CAAC;oBAE3C,MAAM,UAAU,GAAG,KAAK,IAAiC,EAAE;wBACzD,MAAM,OAAO,GACX,MAAM,YAAY,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAC;wBAC1D,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAuB,CAAC;oBACnD,CAAC,CAAC;oBAEF,MAAM,QAAQ,GAAG,KAAK,EAAE,IAAY,EAAmB,EAAE;wBACvD,OAAO,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;oBAC3C,CAAC,CAAC;oBAEF,MAAM,SAAS,GAAG,KAAK,EAAE,SAAiB,EAAoB,EAAE;wBAC9D,OAAO,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;oBAC1C,CAAC,CAAC;oBAGF,MAAM,gBAAgB,GAAG,KAAK,IAAI,EAAE;wBAClC,IAAI,CAAC;4BACH,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,WAAW,EAAE,CAAC;4BACnD,IAAI,QAAQ,CAAC,EAAE,EAAE,YAAY,EAAE,CAAC;gCAC9B,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;4BACpD,CAAC;4BACD,OAAO,IAAI,CAAC;wBACd,CAAC;wBAAC,OAAO,KAAK,EAAE,CAAC;4BACf,MAAM,CAAC,KAAK,CACV,kCAAkC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAC7F,CAAC;4BACF,OAAO,IAAI,CAAC;wBACd,CAAC;oBACH,CAAC,CAAC;oBAEF,MAAM,iBAAiB,GAAG,KAAK,IAAuB,EAAE;wBACtD,MAAM,UAAU,GAAG,MAAM,YAAY,CAAC,UAAU,EAAE,CAAC;wBACnD,MAAM,aAAa,GAAa,EAAE,CAAC;wBAEnC,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;4BAC9B,IAAI,CAAC;gCACH,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gCAChD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAqC,CAAC;gCACzD,IAAI,IAAI,EAAE,IAAI,KAAK,SAAS,EAAE,CAAC;oCAC7B,aAAa,CAAC,IAAI,CAAC,IAAA,gCAAkB,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;gCACrD,CAAC;4BACH,CAAC;4BAAC,MAAM,CAAC;4BAET,CAAC;wBACH,CAAC;wBAED,OAAO,aAAa,CAAC;oBACvB,CAAC,CAAC;oBAEF,MAAM,oBAAoB,GAAG,IAAI,6CAAoB,CACnD,gBAAgB,EAChB,iBAAiB,CAClB,CAAC;oBAEF,MAAM,cAAc,GAAG,KAAK,IAAI,EAAE;wBAChC,IAAI,CAAC;4BACH,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,WAAW,EAAE,CAAC;4BACnD,OAAO,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC;wBAC/B,CAAC;wBAAC,OAAO,KAAK,EAAE,CAAC;4BACf,MAAM,CAAC,KAAK,CACV,+BAA+B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAC1F,CAAC;4BACF,OAAO,IAAI,CAAC;wBACd,CAAC;oBACH,CAAC,CAAC;oBAEF,OAAO,IAAI,gCAAc,CACvB,UAAU,EACV,QAAQ,EACR,SAAS,EACT,oBAAoB,EACpB,cAAc,CACf,CAAC;gBACJ,CAAC;gBACD,MAAM,EAAE,CAAC,4BAAY,EAAE,8BAAa,CAAC;aACtC;SACF;QACD,OAAO,EAAE,CAAC,uBAAe,CAAC;KAC3B,CAAC;GACW,aAAa,CAAG"}
1
+ {"version":3,"file":"keyword.module.js","sourceRoot":"","sources":["../../../src/keyword/keyword.module.ts"],"names":[],"mappings":"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"}