k0ntext 3.3.1 → 3.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (221) hide show
  1. package/README.md +225 -26
  2. package/dist/agents/cleanup-agent.d.ts.map +1 -1
  3. package/dist/agents/cleanup-agent.js +18 -6
  4. package/dist/agents/cleanup-agent.js.map +1 -1
  5. package/dist/agents/drift-agent.d.ts +7 -0
  6. package/dist/agents/drift-agent.d.ts.map +1 -1
  7. package/dist/agents/drift-agent.js +29 -8
  8. package/dist/agents/drift-agent.js.map +1 -1
  9. package/dist/cli/commands/cleanup.d.ts.map +1 -1
  10. package/dist/cli/commands/cleanup.js +8 -1
  11. package/dist/cli/commands/cleanup.js.map +1 -1
  12. package/dist/cli/commands/drift-detect.d.ts.map +1 -1
  13. package/dist/cli/commands/drift-detect.js +21 -1
  14. package/dist/cli/commands/drift-detect.js.map +1 -1
  15. package/dist/cli/commands/embeddings-refresh.d.ts +11 -0
  16. package/dist/cli/commands/embeddings-refresh.d.ts.map +1 -0
  17. package/dist/cli/commands/embeddings-refresh.js +114 -0
  18. package/dist/cli/commands/embeddings-refresh.js.map +1 -0
  19. package/dist/cli/commands/migrate.d.ts +11 -0
  20. package/dist/cli/commands/migrate.d.ts.map +1 -0
  21. package/dist/cli/commands/migrate.js +195 -0
  22. package/dist/cli/commands/migrate.js.map +1 -0
  23. package/dist/cli/commands/restore.d.ts +12 -0
  24. package/dist/cli/commands/restore.d.ts.map +1 -0
  25. package/dist/cli/commands/restore.js +261 -0
  26. package/dist/cli/commands/restore.js.map +1 -0
  27. package/dist/cli/commands/sync-templates.d.ts +15 -0
  28. package/dist/cli/commands/sync-templates.d.ts.map +1 -0
  29. package/dist/cli/commands/sync-templates.js +181 -0
  30. package/dist/cli/commands/sync-templates.js.map +1 -0
  31. package/dist/cli/commands/version-check.d.ts +12 -0
  32. package/dist/cli/commands/version-check.d.ts.map +1 -0
  33. package/dist/cli/commands/version-check.js +133 -0
  34. package/dist/cli/commands/version-check.js.map +1 -0
  35. package/dist/cli/generate.d.ts +5 -0
  36. package/dist/cli/generate.d.ts.map +1 -1
  37. package/dist/cli/generate.js +80 -16
  38. package/dist/cli/generate.js.map +1 -1
  39. package/dist/cli/index.js +215 -1
  40. package/dist/cli/index.js.map +1 -1
  41. package/dist/cli/repl/index.d.ts +1 -0
  42. package/dist/cli/repl/index.d.ts.map +1 -1
  43. package/dist/cli/repl/index.js +18 -6
  44. package/dist/cli/repl/index.js.map +1 -1
  45. package/dist/cli/utils/backup-manager.d.ts +94 -0
  46. package/dist/cli/utils/backup-manager.d.ts.map +1 -0
  47. package/dist/cli/utils/backup-manager.js +230 -0
  48. package/dist/cli/utils/backup-manager.js.map +1 -0
  49. package/dist/cli/utils/db-backup-manager.d.ts +55 -0
  50. package/dist/cli/utils/db-backup-manager.d.ts.map +1 -0
  51. package/dist/cli/utils/db-backup-manager.js +115 -0
  52. package/dist/cli/utils/db-backup-manager.js.map +1 -0
  53. package/dist/cli/utils/file-detector.d.ts +87 -0
  54. package/dist/cli/utils/file-detector.d.ts.map +1 -0
  55. package/dist/cli/utils/file-detector.js +131 -0
  56. package/dist/cli/utils/file-detector.js.map +1 -0
  57. package/dist/cli/utils/index.d.ts +9 -0
  58. package/dist/cli/utils/index.d.ts.map +1 -0
  59. package/dist/cli/utils/index.js +9 -0
  60. package/dist/cli/utils/index.js.map +1 -0
  61. package/dist/cli/utils/modification-prompt.d.ts +41 -0
  62. package/dist/cli/utils/modification-prompt.d.ts.map +1 -0
  63. package/dist/cli/utils/modification-prompt.js +84 -0
  64. package/dist/cli/utils/modification-prompt.js.map +1 -0
  65. package/dist/cli/version/checker.d.ts +47 -0
  66. package/dist/cli/version/checker.d.ts.map +1 -0
  67. package/dist/cli/version/checker.js +143 -0
  68. package/dist/cli/version/checker.js.map +1 -0
  69. package/dist/cli/version/comparator.d.ts +46 -0
  70. package/dist/cli/version/comparator.d.ts.map +1 -0
  71. package/dist/cli/version/comparator.js +99 -0
  72. package/dist/cli/version/comparator.js.map +1 -0
  73. package/dist/cli/version/index.d.ts +11 -0
  74. package/dist/cli/version/index.d.ts.map +1 -0
  75. package/dist/cli/version/index.js +11 -0
  76. package/dist/cli/version/index.js.map +1 -0
  77. package/dist/cli/version/parser.d.ts +38 -0
  78. package/dist/cli/version/parser.d.ts.map +1 -0
  79. package/dist/cli/version/parser.js +90 -0
  80. package/dist/cli/version/parser.js.map +1 -0
  81. package/dist/cli/version/prompt.d.ts +40 -0
  82. package/dist/cli/version/prompt.d.ts.map +1 -0
  83. package/dist/cli/version/prompt.js +162 -0
  84. package/dist/cli/version/prompt.js.map +1 -0
  85. package/dist/cli/version/types.d.ts +89 -0
  86. package/dist/cli/version/types.d.ts.map +1 -0
  87. package/dist/cli/version/types.js +7 -0
  88. package/dist/cli/version/types.js.map +1 -0
  89. package/dist/db/client.d.ts +79 -4
  90. package/dist/db/client.d.ts.map +1 -1
  91. package/dist/db/client.js +207 -12
  92. package/dist/db/client.js.map +1 -1
  93. package/dist/db/migrations/files/0014_add_schema_migrations_table.d.ts +14 -0
  94. package/dist/db/migrations/files/0014_add_schema_migrations_table.d.ts.map +1 -0
  95. package/dist/db/migrations/files/0014_add_schema_migrations_table.js +25 -0
  96. package/dist/db/migrations/files/0014_add_schema_migrations_table.js.map +1 -0
  97. package/dist/db/migrations/index.d.ts +9 -0
  98. package/dist/db/migrations/index.d.ts.map +1 -0
  99. package/dist/db/migrations/index.js +9 -0
  100. package/dist/db/migrations/index.js.map +1 -0
  101. package/dist/db/migrations/loader.d.ts +27 -0
  102. package/dist/db/migrations/loader.d.ts.map +1 -0
  103. package/dist/db/migrations/loader.js +106 -0
  104. package/dist/db/migrations/loader.js.map +1 -0
  105. package/dist/db/migrations/runner.d.ts +56 -0
  106. package/dist/db/migrations/runner.d.ts.map +1 -0
  107. package/dist/db/migrations/runner.js +266 -0
  108. package/dist/db/migrations/runner.js.map +1 -0
  109. package/dist/db/migrations/types.d.ts +71 -0
  110. package/dist/db/migrations/types.d.ts.map +1 -0
  111. package/dist/db/migrations/types.js +7 -0
  112. package/dist/db/migrations/types.js.map +1 -0
  113. package/dist/db/schema.d.ts +41 -2
  114. package/dist/db/schema.d.ts.map +1 -1
  115. package/dist/db/schema.js +77 -2
  116. package/dist/db/schema.js.map +1 -1
  117. package/dist/mcp.js +2 -2
  118. package/dist/mcp.js.map +1 -1
  119. package/dist/template-engine/data-transformer.d.ts +17 -0
  120. package/dist/template-engine/data-transformer.d.ts.map +1 -0
  121. package/dist/template-engine/data-transformer.js +343 -0
  122. package/dist/template-engine/data-transformer.js.map +1 -0
  123. package/dist/template-engine/engine.d.ts +74 -0
  124. package/dist/template-engine/engine.d.ts.map +1 -0
  125. package/dist/template-engine/engine.js +183 -0
  126. package/dist/template-engine/engine.js.map +1 -0
  127. package/dist/template-engine/helpers.d.ts +81 -0
  128. package/dist/template-engine/helpers.d.ts.map +1 -0
  129. package/dist/template-engine/helpers.js +153 -0
  130. package/dist/template-engine/helpers.js.map +1 -0
  131. package/dist/template-engine/index.d.ts +10 -0
  132. package/dist/template-engine/index.d.ts.map +1 -0
  133. package/dist/template-engine/index.js +10 -0
  134. package/dist/template-engine/index.js.map +1 -0
  135. package/dist/template-engine/types.d.ts +147 -0
  136. package/dist/template-engine/types.d.ts.map +1 -0
  137. package/dist/template-engine/types.js +7 -0
  138. package/dist/template-engine/types.js.map +1 -0
  139. package/dist/template-sync/comparator.d.ts +138 -0
  140. package/dist/template-sync/comparator.d.ts.map +1 -0
  141. package/dist/template-sync/comparator.js +353 -0
  142. package/dist/template-sync/comparator.js.map +1 -0
  143. package/dist/template-sync/conflict-resolver.d.ts +112 -0
  144. package/dist/template-sync/conflict-resolver.d.ts.map +1 -0
  145. package/dist/template-sync/conflict-resolver.js +328 -0
  146. package/dist/template-sync/conflict-resolver.js.map +1 -0
  147. package/dist/template-sync/engine.d.ts +93 -0
  148. package/dist/template-sync/engine.d.ts.map +1 -0
  149. package/dist/template-sync/engine.js +350 -0
  150. package/dist/template-sync/engine.js.map +1 -0
  151. package/dist/template-sync/hasher.d.ts +67 -0
  152. package/dist/template-sync/hasher.d.ts.map +1 -0
  153. package/dist/template-sync/hasher.js +94 -0
  154. package/dist/template-sync/hasher.js.map +1 -0
  155. package/dist/template-sync/index.d.ts +20 -0
  156. package/dist/template-sync/index.d.ts.map +1 -0
  157. package/dist/template-sync/index.js +14 -0
  158. package/dist/template-sync/index.js.map +1 -0
  159. package/dist/template-sync/manifest.d.ts +131 -0
  160. package/dist/template-sync/manifest.d.ts.map +1 -0
  161. package/dist/template-sync/manifest.js +309 -0
  162. package/dist/template-sync/manifest.js.map +1 -0
  163. package/dist/template-sync/merger.d.ts +125 -0
  164. package/dist/template-sync/merger.d.ts.map +1 -0
  165. package/dist/template-sync/merger.js +371 -0
  166. package/dist/template-sync/merger.js.map +1 -0
  167. package/dist/template-sync/scanner.d.ts +106 -0
  168. package/dist/template-sync/scanner.d.ts.map +1 -0
  169. package/dist/template-sync/scanner.js +196 -0
  170. package/dist/template-sync/scanner.js.map +1 -0
  171. package/dist/template-sync/types.d.ts +199 -0
  172. package/dist/template-sync/types.d.ts.map +1 -0
  173. package/dist/template-sync/types.js +30 -0
  174. package/dist/template-sync/types.js.map +1 -0
  175. package/package.json +2 -1
  176. package/src/agents/cleanup-agent.ts +21 -6
  177. package/src/agents/drift-agent.ts +31 -8
  178. package/src/cli/commands/cleanup.ts +9 -1
  179. package/src/cli/commands/drift-detect.ts +24 -1
  180. package/src/cli/commands/embeddings-refresh.ts +135 -0
  181. package/src/cli/commands/migrate.ts +231 -0
  182. package/src/cli/commands/restore.ts +318 -0
  183. package/src/cli/commands/sync-templates.ts +210 -0
  184. package/src/cli/commands/version-check.ts +158 -0
  185. package/src/cli/generate.ts +99 -17
  186. package/src/cli/index.ts +246 -1
  187. package/src/cli/repl/index.ts +16 -6
  188. package/src/cli/utils/backup-manager.ts +275 -0
  189. package/src/cli/utils/db-backup-manager.ts +146 -0
  190. package/src/cli/utils/file-detector.ts +181 -0
  191. package/src/cli/utils/index.ts +9 -0
  192. package/src/cli/utils/modification-prompt.ts +112 -0
  193. package/src/cli/version/checker.ts +172 -0
  194. package/src/cli/version/comparator.ts +106 -0
  195. package/src/cli/version/index.ts +11 -0
  196. package/src/cli/version/parser.ts +101 -0
  197. package/src/cli/version/prompt.ts +208 -0
  198. package/src/cli/version/types.ts +95 -0
  199. package/src/db/client.ts +285 -18
  200. package/src/db/migrations/files/0014_add_schema_migrations_table.sql +19 -0
  201. package/src/db/migrations/files/0014_add_schema_migrations_table.ts +30 -0
  202. package/src/db/migrations/index.ts +9 -0
  203. package/src/db/migrations/loader.ts +129 -0
  204. package/src/db/migrations/runner.ts +316 -0
  205. package/src/db/migrations/types.ts +71 -0
  206. package/src/db/schema.ts +109 -2
  207. package/src/mcp.ts +2 -2
  208. package/src/template-engine/data-transformer.ts +367 -0
  209. package/src/template-engine/engine.ts +213 -0
  210. package/src/template-engine/helpers.ts +163 -0
  211. package/src/template-engine/index.ts +10 -0
  212. package/src/template-engine/types.ts +158 -0
  213. package/src/template-sync/comparator.ts +452 -0
  214. package/src/template-sync/conflict-resolver.ts +401 -0
  215. package/src/template-sync/engine.ts +417 -0
  216. package/src/template-sync/hasher.ts +104 -0
  217. package/src/template-sync/index.ts +60 -0
  218. package/src/template-sync/manifest.ts +358 -0
  219. package/src/template-sync/merger.ts +454 -0
  220. package/src/template-sync/scanner.ts +254 -0
  221. package/src/template-sync/types.ts +247 -0
@@ -0,0 +1,163 @@
1
+ /**
2
+ * Template Helpers
3
+ *
4
+ * Custom Handlebars helpers for template rendering.
5
+ */
6
+
7
+ import type { HelperDelegate } from 'handlebars';
8
+
9
+ /**
10
+ * Join array elements with a separator
11
+ */
12
+ export const join: HelperDelegate = function (array: unknown[], separator = ', ') {
13
+ if (!Array.isArray(array)) return '';
14
+ return array.filter(Boolean).join(separator);
15
+ };
16
+
17
+ /**
18
+ * Get first N elements of an array
19
+ */
20
+ export const first: HelperDelegate = function (array: unknown[], n = 1) {
21
+ if (!Array.isArray(array)) return [];
22
+ return array.slice(0, n);
23
+ };
24
+
25
+ /**
26
+ * Truncate a string to a maximum length
27
+ */
28
+ export const truncate: HelperDelegate = function (str: unknown, len = 50, suffix = '...') {
29
+ if (typeof str !== 'string') return '';
30
+ if (str.length <= len) return str;
31
+ return str.slice(0, len) + suffix;
32
+ };
33
+
34
+ /**
35
+ * Slugify a string (convert to URL-friendly format)
36
+ */
37
+ export const slugify: HelperDelegate = function (str: unknown) {
38
+ if (typeof str !== 'string') return '';
39
+ return str
40
+ .toLowerCase()
41
+ .replace(/[^a-z0-9]+/g, '-')
42
+ .replace(/^-+|-+$/g, '');
43
+ };
44
+
45
+ /**
46
+ * Format a date
47
+ */
48
+ export const formatDate: HelperDelegate = function (date: unknown, format = 'ISO') {
49
+ if (!date) return '';
50
+ const d = typeof date === 'string' ? new Date(date) : date as Date;
51
+ if (isNaN(d.getTime())) return '';
52
+
53
+ switch (format) {
54
+ case 'ISO':
55
+ return d.toISOString();
56
+ case 'locale':
57
+ return d.toLocaleDateString();
58
+ case 'time':
59
+ return d.toLocaleTimeString();
60
+ case 'short':
61
+ return d.toLocaleDateString(undefined, { year: 'numeric', month: 'short', day: 'numeric' });
62
+ default:
63
+ return d.toISOString();
64
+ }
65
+ };
66
+
67
+ /**
68
+ * Conditional equality check
69
+ */
70
+ export const eq: HelperDelegate = function (this: unknown, a: unknown, b: unknown, options: any) {
71
+ return a === b ? options.fn(this) : options.inverse(this);
72
+ };
73
+
74
+ /**
75
+ * Conditional inequality check
76
+ */
77
+ export const ne: HelperDelegate = function (this: unknown, a: unknown, b: unknown, options: any) {
78
+ return a !== b ? options.fn(this) : options.inverse(this);
79
+ };
80
+
81
+ /**
82
+ * Logical AND
83
+ */
84
+ export const and: HelperDelegate = function (this: unknown, ...args: unknown[]) {
85
+ const options = args[args.length - 1] as any;
86
+ const values = args.slice(0, -1);
87
+ return values.every(v => Boolean(v)) ? options.fn(this) : options.inverse(this);
88
+ };
89
+
90
+ /**
91
+ * Logical OR
92
+ */
93
+ export const or: HelperDelegate = function (this: unknown, ...args: unknown[]) {
94
+ const options = args[args.length - 1] as any;
95
+ const values = args.slice(0, -1);
96
+ return values.some(v => Boolean(v)) ? options.fn(this) : options.inverse(this);
97
+ };
98
+
99
+ /**
100
+ * Default value if undefined/null
101
+ */
102
+ export const defaults: HelperDelegate = function (value: unknown, defaultValue: unknown) {
103
+ return value !== null && value !== undefined ? value : defaultValue;
104
+ };
105
+
106
+ /**
107
+ * JSON stringify
108
+ */
109
+ export const json: HelperDelegate = function (obj: unknown, spaces = 2) {
110
+ return JSON.stringify(obj, null, spaces);
111
+ };
112
+
113
+ /**
114
+ * Get object keys
115
+ */
116
+ export const keys: HelperDelegate = function (obj: Record<string, unknown>) {
117
+ return Object.keys(obj || {});
118
+ };
119
+
120
+ /**
121
+ * Get object values
122
+ */
123
+ export const values: HelperDelegate = function (obj: Record<string, unknown>) {
124
+ return Object.values(obj || {});
125
+ };
126
+
127
+ /**
128
+ * Register all helpers with a Handlebars instance
129
+ */
130
+ export function registerHelpers(Handlebars: any): void {
131
+ Handlebars.registerHelper('join', join);
132
+ Handlebars.registerHelper('first', first);
133
+ Handlebars.registerHelper('truncate', truncate);
134
+ Handlebars.registerHelper('slugify', slugify);
135
+ Handlebars.registerHelper('formatDate', formatDate);
136
+ Handlebars.registerHelper('eq', eq);
137
+ Handlebars.registerHelper('ne', ne);
138
+ Handlebars.registerHelper('and', and);
139
+ Handlebars.registerHelper('or', or);
140
+ Handlebars.registerHelper('defaults', defaults);
141
+ Handlebars.registerHelper('json', json);
142
+ Handlebars.registerHelper('keys', keys);
143
+ Handlebars.registerHelper('values', values);
144
+ }
145
+
146
+ /**
147
+ * Export helpers as an object for external use
148
+ */
149
+ export const helpers = {
150
+ join,
151
+ first,
152
+ truncate,
153
+ slugify,
154
+ formatDate,
155
+ eq,
156
+ ne,
157
+ and,
158
+ or,
159
+ defaults,
160
+ json,
161
+ keys,
162
+ values
163
+ };
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Template Engine Module
3
+ *
4
+ * Exports all template engine functionality.
5
+ */
6
+
7
+ export * from './types.js';
8
+ export * from './helpers.js';
9
+ export * from './data-transformer.js';
10
+ export * from './engine.js';
@@ -0,0 +1,158 @@
1
+ /**
2
+ * Template Engine Types
3
+ *
4
+ * Type definitions for template data and rendering.
5
+ */
6
+
7
+ /**
8
+ * Project metadata for templates
9
+ */
10
+ export interface ProjectTemplateData {
11
+ name: string;
12
+ description?: string;
13
+ type?: string;
14
+ tech_stack: string[];
15
+ primary_language?: string;
16
+ version?: string;
17
+ }
18
+
19
+ /**
20
+ * Architecture information
21
+ */
22
+ export interface ArchitectureTemplateData {
23
+ pattern?: string;
24
+ layers?: LayerInfo[];
25
+ key_modules?: string[];
26
+ integrations?: string[];
27
+ }
28
+
29
+ /**
30
+ * Layer information
31
+ */
32
+ export interface LayerInfo {
33
+ name: string;
34
+ path: string;
35
+ purpose?: string;
36
+ }
37
+
38
+ /**
39
+ * Key files information
40
+ */
41
+ export interface KeyFilesTemplateData {
42
+ entry_points?: string[];
43
+ api_routes?: string[];
44
+ config?: string[];
45
+ tests?: string[];
46
+ }
47
+
48
+ /**
49
+ * Commands information
50
+ */
51
+ export interface CommandsTemplateData {
52
+ install?: string;
53
+ dev?: string;
54
+ test?: string;
55
+ build?: string;
56
+ lint?: string;
57
+ clean?: string;
58
+ [key: string]: string | undefined;
59
+ }
60
+
61
+ /**
62
+ * Workflow information for templates
63
+ */
64
+ export interface WorkflowTemplateData {
65
+ name: string;
66
+ category?: string;
67
+ complexity?: string;
68
+ description?: string;
69
+ entry_points?: Array<{
70
+ endpoint: string;
71
+ file: string;
72
+ line?: number;
73
+ method?: string;
74
+ }>;
75
+ files?: string[];
76
+ steps?: string[];
77
+ }
78
+
79
+ /**
80
+ * Gotcha information
81
+ */
82
+ export interface GotchaTemplateData {
83
+ title?: string;
84
+ description: string;
85
+ severity?: 'low' | 'medium' | 'high' | 'critical';
86
+ location?: string;
87
+ }
88
+
89
+ /**
90
+ * Environment variables information
91
+ */
92
+ export interface EnvironmentTemplateData {
93
+ required?: string[];
94
+ optional?: string[];
95
+ }
96
+
97
+ /**
98
+ * Coordination/footer information
99
+ */
100
+ export interface CoordinationTemplateData {
101
+ footer?: string;
102
+ version?: string;
103
+ timestamp?: string;
104
+ }
105
+
106
+ /**
107
+ * Complete template data model
108
+ */
109
+ export interface TemplateData {
110
+ /** Project metadata */
111
+ project: ProjectTemplateData;
112
+ /** Architecture information */
113
+ architecture: ArchitectureTemplateData;
114
+ /** Key files */
115
+ key_files: KeyFilesTemplateData;
116
+ /** Development commands */
117
+ commands: CommandsTemplateData;
118
+ /** Workflows */
119
+ workflows: WorkflowTemplateData[];
120
+ /** Gotchas / critical gotchas */
121
+ gotchas?: GotchaTemplateData[];
122
+ /** Critical constraints */
123
+ critical_constraints?: string[];
124
+ /** Environment variables */
125
+ environment?: EnvironmentTemplateData;
126
+ /** Metadata */
127
+ metadata: {
128
+ generator_version: string;
129
+ timestamp: string;
130
+ header?: string;
131
+ };
132
+ /** Coordination/footer */
133
+ coordination?: CoordinationTemplateData;
134
+ }
135
+
136
+ /**
137
+ * Template rendering options
138
+ */
139
+ export interface TemplateRenderOptions {
140
+ /** Template name (e.g., 'claude', 'copilot') */
141
+ template: string;
142
+ /** Whether to use partials */
143
+ usePartials?: boolean;
144
+ /** Custom data to merge */
145
+ customData?: Partial<TemplateData>;
146
+ }
147
+
148
+ /**
149
+ * Template render result
150
+ */
151
+ export interface TemplateRenderResult {
152
+ /** Rendered content */
153
+ content: string;
154
+ /** Template used */
155
+ template: string;
156
+ /** Bytes written */
157
+ bytes: number;
158
+ }