@mytechtoday/augment-extensions 0.1.0 → 0.1.2

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 (102) hide show
  1. package/AGENTS.md +83 -3
  2. package/README.md +6 -5
  3. package/augment-extensions/coding-standards/python/README.md +44 -0
  4. package/augment-extensions/coding-standards/python/module.json +26 -0
  5. package/augment-extensions/coding-standards/python/rules/best-practices.md +232 -0
  6. package/augment-extensions/coding-standards/python/rules/code-organization.md +220 -0
  7. package/augment-extensions/coding-standards/python/rules/error-handling.md +221 -0
  8. package/augment-extensions/coding-standards/python/rules/naming-conventions.md +172 -0
  9. package/augment-extensions/coding-standards/python/rules/type-hints.md +188 -0
  10. package/augment-extensions/coding-standards/react/README.md +45 -0
  11. package/augment-extensions/coding-standards/react/module.json +27 -0
  12. package/augment-extensions/coding-standards/react/rules/component-patterns.md +214 -0
  13. package/augment-extensions/coding-standards/react/rules/hooks-best-practices.md +235 -0
  14. package/augment-extensions/coding-standards/react/rules/performance.md +300 -0
  15. package/augment-extensions/coding-standards/react/rules/state-management.md +265 -0
  16. package/augment-extensions/coding-standards/react/rules/typescript-react.md +271 -0
  17. package/augment-extensions/domain-rules/api-design/README.md +41 -0
  18. package/augment-extensions/domain-rules/api-design/module.json +27 -0
  19. package/augment-extensions/domain-rules/api-design/rules/authentication.md +263 -0
  20. package/augment-extensions/domain-rules/api-design/rules/documentation.md +395 -0
  21. package/augment-extensions/domain-rules/api-design/rules/error-handling.md +290 -0
  22. package/augment-extensions/domain-rules/api-design/rules/graphql-api.md +313 -0
  23. package/augment-extensions/domain-rules/api-design/rules/rest-api.md +214 -0
  24. package/augment-extensions/domain-rules/api-design/rules/versioning.md +268 -0
  25. package/augment-extensions/domain-rules/security/README.md +41 -0
  26. package/augment-extensions/domain-rules/security/module.json +28 -0
  27. package/augment-extensions/domain-rules/security/rules/authentication-security.md +361 -0
  28. package/augment-extensions/domain-rules/security/rules/encryption.md +208 -0
  29. package/augment-extensions/domain-rules/security/rules/input-validation.md +294 -0
  30. package/augment-extensions/domain-rules/security/rules/owasp-top-10.md +339 -0
  31. package/augment-extensions/domain-rules/security/rules/secure-coding.md +293 -0
  32. package/augment-extensions/domain-rules/security/rules/web-security.md +268 -0
  33. package/augment-extensions/examples/design-patterns/README.md +37 -0
  34. package/augment-extensions/examples/design-patterns/examples/behavioral-patterns.md +370 -0
  35. package/augment-extensions/examples/design-patterns/examples/creational-patterns.md +250 -0
  36. package/augment-extensions/examples/design-patterns/examples/structural-patterns.md +264 -0
  37. package/augment-extensions/examples/design-patterns/module.json +27 -0
  38. package/{modules → augment-extensions}/workflows/beads/examples/complete-workflow-example.md +5 -5
  39. package/{modules → augment-extensions}/workflows/beads/rules/file-format.md +45 -1
  40. package/{modules → augment-extensions}/workflows/beads/rules/workflow.md +41 -0
  41. package/{modules → augment-extensions}/workflows/openspec/examples/complete-change-example.md +14 -0
  42. package/{modules → augment-extensions}/workflows/openspec/rules/spec-format.md +44 -1
  43. package/{modules → augment-extensions}/workflows/openspec/rules/workflow.md +25 -0
  44. package/cli/dist/cli.js +69 -1
  45. package/cli/dist/cli.js.map +1 -1
  46. package/cli/dist/commands/coord.d.ts +30 -0
  47. package/cli/dist/commands/coord.d.ts.map +1 -0
  48. package/cli/dist/commands/coord.js +150 -0
  49. package/cli/dist/commands/coord.js.map +1 -0
  50. package/cli/dist/commands/link.js +1 -1
  51. package/cli/dist/commands/link.js.map +1 -1
  52. package/cli/dist/commands/list.js +1 -1
  53. package/cli/dist/commands/list.js.map +1 -1
  54. package/cli/dist/commands/search.d.ts.map +1 -1
  55. package/cli/dist/commands/search.js +107 -5
  56. package/cli/dist/commands/search.js.map +1 -1
  57. package/cli/dist/commands/show.js +1 -1
  58. package/cli/dist/commands/show.js.map +1 -1
  59. package/cli/dist/commands/sync.d.ts +26 -0
  60. package/cli/dist/commands/sync.d.ts.map +1 -0
  61. package/cli/dist/commands/sync.js +106 -0
  62. package/cli/dist/commands/sync.js.map +1 -0
  63. package/cli/dist/commands/update.d.ts.map +1 -1
  64. package/cli/dist/commands/update.js +132 -7
  65. package/cli/dist/commands/update.js.map +1 -1
  66. package/cli/dist/utils/auto-sync.d.ts +34 -0
  67. package/cli/dist/utils/auto-sync.d.ts.map +1 -0
  68. package/cli/dist/utils/auto-sync.js +172 -0
  69. package/cli/dist/utils/auto-sync.js.map +1 -0
  70. package/cli/dist/utils/beads-sync.d.ts +51 -0
  71. package/cli/dist/utils/beads-sync.d.ts.map +1 -0
  72. package/cli/dist/utils/beads-sync.js +171 -0
  73. package/cli/dist/utils/beads-sync.js.map +1 -0
  74. package/cli/dist/utils/coordination-queries.d.ts +79 -0
  75. package/cli/dist/utils/coordination-queries.d.ts.map +1 -0
  76. package/cli/dist/utils/coordination-queries.js +155 -0
  77. package/cli/dist/utils/coordination-queries.js.map +1 -0
  78. package/cli/dist/utils/file-tracking.d.ts +42 -0
  79. package/cli/dist/utils/file-tracking.d.ts.map +1 -0
  80. package/cli/dist/utils/file-tracking.js +155 -0
  81. package/cli/dist/utils/file-tracking.js.map +1 -0
  82. package/cli/dist/utils/migrate.d.ts +25 -0
  83. package/cli/dist/utils/migrate.d.ts.map +1 -0
  84. package/cli/dist/utils/migrate.js +204 -0
  85. package/cli/dist/utils/migrate.js.map +1 -0
  86. package/cli/dist/utils/openspec-sync.d.ts +48 -0
  87. package/cli/dist/utils/openspec-sync.d.ts.map +1 -0
  88. package/cli/dist/utils/openspec-sync.js +167 -0
  89. package/cli/dist/utils/openspec-sync.js.map +1 -0
  90. package/{MODULES.md → modules.md} +1 -1
  91. package/package.json +9 -7
  92. /package/{modules → augment-extensions}/coding-standards/typescript/README.md +0 -0
  93. /package/{modules → augment-extensions}/coding-standards/typescript/module.json +0 -0
  94. /package/{modules → augment-extensions}/coding-standards/typescript/rules/naming-conventions.md +0 -0
  95. /package/{modules → augment-extensions}/workflows/beads/README.md +0 -0
  96. /package/{modules → augment-extensions}/workflows/beads/module.json +0 -0
  97. /package/{modules → augment-extensions}/workflows/beads/rules/best-practices.md +0 -0
  98. /package/{modules → augment-extensions}/workflows/beads/rules/manual-setup.md +0 -0
  99. /package/{modules → augment-extensions}/workflows/openspec/README.md +0 -0
  100. /package/{modules → augment-extensions}/workflows/openspec/module.json +0 -0
  101. /package/{modules → augment-extensions}/workflows/openspec/rules/best-practices.md +0 -0
  102. /package/{modules → augment-extensions}/workflows/openspec/rules/manual-setup.md +0 -0
@@ -0,0 +1,171 @@
1
+ "use strict";
2
+ /**
3
+ * Beads ↔ Coordination Sync Utility
4
+ *
5
+ * Syncs Beads tasks with the coordination manifest.
6
+ * Handles task status changes, creation, and deletion.
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
21
+ }) : function(o, v) {
22
+ o["default"] = v;
23
+ });
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.readBeadsTasks = readBeadsTasks;
43
+ exports.readCoordinationManifest = readCoordinationManifest;
44
+ exports.writeCoordinationManifest = writeCoordinationManifest;
45
+ exports.syncBeadsToCoordination = syncBeadsToCoordination;
46
+ const fs = __importStar(require("fs"));
47
+ /**
48
+ * Read all tasks from .beads/issues.jsonl
49
+ */
50
+ function readBeadsTasks(beadsPath = '.beads/issues.jsonl') {
51
+ if (!fs.existsSync(beadsPath)) {
52
+ return [];
53
+ }
54
+ const content = fs.readFileSync(beadsPath, 'utf-8');
55
+ const lines = content.split('\n').filter(line => line.trim());
56
+ const tasksMap = new Map();
57
+ for (const line of lines) {
58
+ try {
59
+ const entry = JSON.parse(line);
60
+ if (entry.id) {
61
+ // Merge updates into existing task
62
+ if (tasksMap.has(entry.id)) {
63
+ const existing = tasksMap.get(entry.id);
64
+ tasksMap.set(entry.id, { ...existing, ...entry });
65
+ }
66
+ else {
67
+ tasksMap.set(entry.id, entry);
68
+ }
69
+ }
70
+ }
71
+ catch (error) {
72
+ console.error(`Failed to parse line: ${line}`, error);
73
+ }
74
+ }
75
+ return Array.from(tasksMap.values());
76
+ }
77
+ /**
78
+ * Read coordination manifest
79
+ */
80
+ function readCoordinationManifest(manifestPath = '.augment/coordination.json') {
81
+ if (!fs.existsSync(manifestPath)) {
82
+ throw new Error(`Coordination manifest not found at ${manifestPath}`);
83
+ }
84
+ return JSON.parse(fs.readFileSync(manifestPath, 'utf-8'));
85
+ }
86
+ /**
87
+ * Write coordination manifest
88
+ */
89
+ function writeCoordinationManifest(manifest, manifestPath = '.augment/coordination.json') {
90
+ fs.writeFileSync(manifestPath, JSON.stringify(manifest, null, 2) + '\n');
91
+ }
92
+ /**
93
+ * Validate task ID format
94
+ */
95
+ function validateTaskId(taskId) {
96
+ const pattern = /^bd-[a-z0-9]+([.-][a-z0-9]+)*$/;
97
+ return pattern.test(taskId);
98
+ }
99
+ /**
100
+ * Sync Beads tasks to coordination manifest
101
+ */
102
+ function syncBeadsToCoordination(beadsPath = '.beads/issues.jsonl', manifestPath = '.augment/coordination.json') {
103
+ const beadsTasks = readBeadsTasks(beadsPath);
104
+ const manifest = readCoordinationManifest(manifestPath);
105
+ let added = 0;
106
+ let updated = 0;
107
+ let removed = 0;
108
+ // Validate all task IDs
109
+ const invalidTaskIds = [];
110
+ for (const task of beadsTasks) {
111
+ if (!validateTaskId(task.id)) {
112
+ invalidTaskIds.push(task.id);
113
+ }
114
+ }
115
+ if (invalidTaskIds.length > 0) {
116
+ console.error('Error: Invalid task IDs found in Beads (must use "bd-" prefix):');
117
+ for (const taskId of invalidTaskIds) {
118
+ console.error(` - ${taskId}`);
119
+ }
120
+ console.error('');
121
+ console.error('Valid formats:');
122
+ console.error(' - bd-<hash> (e.g., bd-a1b2)');
123
+ console.error(' - bd-<name> (e.g., bd-init, bd-rename1)');
124
+ console.error(' - bd-<hash>.<num> (e.g., bd-a1b2.1)');
125
+ console.error(' - bd-<name>-<num> (e.g., bd-prefix1-1)');
126
+ console.error('');
127
+ console.error('See openspec/specs/beads/naming-convention.md for details');
128
+ throw new Error('Invalid task IDs found in Beads');
129
+ }
130
+ // Track which task IDs exist in Beads
131
+ const beadsTaskIds = new Set(beadsTasks.map(t => t.id));
132
+ // Update or add tasks from Beads
133
+ for (const task of beadsTasks) {
134
+ const existingTask = manifest.tasks[task.id];
135
+ if (!existingTask) {
136
+ // Add new task
137
+ manifest.tasks[task.id] = {
138
+ title: task.title,
139
+ status: task.status,
140
+ relatedSpecs: task.spec ? [task.spec] : [],
141
+ relatedRules: task.rules || [],
142
+ outputFiles: [],
143
+ dependencies: task.blocked_by || []
144
+ };
145
+ added++;
146
+ }
147
+ else if (existingTask.status !== task.status) {
148
+ // Update task status
149
+ existingTask.status = task.status;
150
+ updated++;
151
+ }
152
+ // Update spec's relatedTasks if spec field exists
153
+ if (task.spec && manifest.specs[task.spec]) {
154
+ if (!manifest.specs[task.spec].relatedTasks.includes(task.id)) {
155
+ manifest.specs[task.spec].relatedTasks.push(task.id);
156
+ }
157
+ }
158
+ }
159
+ // Remove tasks that no longer exist in Beads
160
+ for (const taskId of Object.keys(manifest.tasks)) {
161
+ if (!beadsTaskIds.has(taskId)) {
162
+ delete manifest.tasks[taskId];
163
+ removed++;
164
+ }
165
+ }
166
+ // Update lastUpdated timestamp
167
+ manifest.lastUpdated = new Date().toISOString();
168
+ writeCoordinationManifest(manifest, manifestPath);
169
+ return { added, updated, removed };
170
+ }
171
+ //# sourceMappingURL=beads-sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"beads-sync.js","sourceRoot":"","sources":["../../src/utils/beads-sync.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCH,wCA4BC;AAKD,4DAMC;AAKD,8DAEC;AAaD,0DAiFC;AA3KD,uCAAyB;AA4BzB;;GAEG;AACH,SAAgB,cAAc,CAAC,YAAoB,qBAAqB;IACtE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAE9D,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAqB,CAAC;IAE9C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC;gBACb,mCAAmC;gBACnC,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;oBAC3B,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAE,CAAC;oBACzC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,GAAG,QAAQ,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;gBACpD,CAAC;qBAAM,CAAC;oBACN,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,yBAAyB,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,SAAgB,wBAAwB,CAAC,eAAuB,4BAA4B;IAC1F,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,sCAAsC,YAAY,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED;;GAEG;AACH,SAAgB,yBAAyB,CAAC,QAA8B,EAAE,eAAuB,4BAA4B;IAC3H,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAC3E,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,MAAc;IACpC,MAAM,OAAO,GAAG,gCAAgC,CAAC;IACjD,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,SAAgB,uBAAuB,CACrC,YAAoB,qBAAqB,EACzC,eAAuB,4BAA4B;IAEnD,MAAM,UAAU,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,wBAAwB,CAAC,YAAY,CAAC,CAAC;IAExD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,wBAAwB;IACxB,MAAM,cAAc,GAAa,EAAE,CAAC;IACpC,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YAC7B,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAC;QACjF,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;YACpC,OAAO,CAAC,KAAK,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;QACtD,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;QAClE,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;QACxD,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC3D,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC3E,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IAED,sCAAsC;IACtC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAExD,iCAAiC;IACjC,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAE7C,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,eAAe;YACf,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG;gBACxB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC1C,YAAY,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;gBAC9B,WAAW,EAAE,EAAE;gBACf,YAAY,EAAE,IAAI,CAAC,UAAU,IAAI,EAAE;aACpC,CAAC;YACF,KAAK,EAAE,CAAC;QACV,CAAC;aAAM,IAAI,YAAY,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;YAC/C,qBAAqB;YACrB,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YAClC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,kDAAkD;QAClD,IAAI,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC9D,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;IACH,CAAC;IAED,6CAA6C;IAC7C,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9B,OAAO,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC9B,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,+BAA+B;IAC/B,QAAQ,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAEhD,yBAAyB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAElD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AACrC,CAAC"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Coordination Query Functions
3
+ *
4
+ * AI agent discovery functions for querying the coordination manifest.
5
+ * All queries must complete in < 100ms.
6
+ */
7
+ interface CoordinationManifest {
8
+ version: string;
9
+ lastUpdated: string;
10
+ specs: Record<string, SpecEntry>;
11
+ tasks: Record<string, TaskEntry>;
12
+ rules: Record<string, RuleEntry>;
13
+ files: Record<string, FileEntry>;
14
+ }
15
+ interface SpecEntry {
16
+ path: string;
17
+ status: string;
18
+ relatedTasks: string[];
19
+ relatedRules: string[];
20
+ affectedFiles: string[];
21
+ dependencies: string[];
22
+ }
23
+ interface TaskEntry {
24
+ title: string;
25
+ status: string;
26
+ relatedSpecs: string[];
27
+ relatedRules: string[];
28
+ outputFiles: string[];
29
+ dependencies?: string[];
30
+ }
31
+ interface RuleEntry {
32
+ path: string;
33
+ appliesTo: {
34
+ filePatterns: string[];
35
+ specs: string[];
36
+ tasks: string[];
37
+ };
38
+ priority: string;
39
+ }
40
+ interface FileEntry {
41
+ createdBy: string | null;
42
+ modifiedBy: string[];
43
+ governedBy: string[];
44
+ rulesApplied: string[];
45
+ }
46
+ export declare function readCoordinationManifest(manifestPath?: string): CoordinationManifest;
47
+ /**
48
+ * Get all active specs
49
+ */
50
+ export declare function getActiveSpecs(manifestPath?: string): Array<{
51
+ id: string;
52
+ } & SpecEntry>;
53
+ /**
54
+ * Get tasks for a specific spec
55
+ */
56
+ export declare function getTasksForSpec(specId: string, manifestPath?: string): Array<{
57
+ id: string;
58
+ } & TaskEntry>;
59
+ /**
60
+ * Get rules for a specific task
61
+ */
62
+ export declare function getRulesForTask(taskId: string, manifestPath?: string): Array<{
63
+ name: string;
64
+ } & RuleEntry>;
65
+ /**
66
+ * Get specs that govern a specific file
67
+ */
68
+ export declare function getSpecForFile(filePath: string, manifestPath?: string): Array<{
69
+ id: string;
70
+ } & SpecEntry>;
71
+ /**
72
+ * Get tasks that created or modified a specific file
73
+ */
74
+ export declare function getTasksForFile(filePath: string, manifestPath?: string): Array<{
75
+ id: string;
76
+ relationship: string;
77
+ } & TaskEntry>;
78
+ export {};
79
+ //# sourceMappingURL=coordination-queries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coordination-queries.d.ts","sourceRoot":"","sources":["../../src/utils/coordination-queries.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,UAAU,oBAAoB;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CAClC;AAED,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,UAAU,SAAS;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE;QACT,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,KAAK,EAAE,MAAM,EAAE,CAAC;KACjB,CAAC;IACF,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,SAAS;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AASD,wBAAgB,wBAAwB,CAAC,YAAY,GAAE,MAAqC,GAAG,oBAAoB,CAoBlH;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAC,CAMvF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAC,CAcxG;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAC,CAc1G;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAC,CAQzG;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAC,CA+BhI"}
@@ -0,0 +1,155 @@
1
+ "use strict";
2
+ /**
3
+ * Coordination Query Functions
4
+ *
5
+ * AI agent discovery functions for querying the coordination manifest.
6
+ * All queries must complete in < 100ms.
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
21
+ }) : function(o, v) {
22
+ o["default"] = v;
23
+ });
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.readCoordinationManifest = readCoordinationManifest;
43
+ exports.getActiveSpecs = getActiveSpecs;
44
+ exports.getTasksForSpec = getTasksForSpec;
45
+ exports.getRulesForTask = getRulesForTask;
46
+ exports.getSpecForFile = getSpecForFile;
47
+ exports.getTasksForFile = getTasksForFile;
48
+ const fs = __importStar(require("fs"));
49
+ const minimatch_1 = require("minimatch");
50
+ /**
51
+ * Read coordination manifest with caching
52
+ */
53
+ let cachedManifest = null;
54
+ let cachedManifestPath = null;
55
+ let cachedManifestMtime = null;
56
+ function readCoordinationManifest(manifestPath = '.augment/coordination.json') {
57
+ if (!fs.existsSync(manifestPath)) {
58
+ throw new Error(`Coordination manifest not found at ${manifestPath}`);
59
+ }
60
+ const stats = fs.statSync(manifestPath);
61
+ const mtime = stats.mtimeMs;
62
+ // Use cache if available and file hasn't changed
63
+ if (cachedManifest && cachedManifestPath === manifestPath && cachedManifestMtime === mtime) {
64
+ return cachedManifest;
65
+ }
66
+ // Read and cache
67
+ const manifest = JSON.parse(fs.readFileSync(manifestPath, 'utf-8'));
68
+ cachedManifest = manifest;
69
+ cachedManifestPath = manifestPath;
70
+ cachedManifestMtime = mtime;
71
+ return manifest;
72
+ }
73
+ /**
74
+ * Get all active specs
75
+ */
76
+ function getActiveSpecs(manifestPath) {
77
+ const manifest = readCoordinationManifest(manifestPath);
78
+ return Object.entries(manifest.specs)
79
+ .filter(([id, spec]) => spec.status === 'active')
80
+ .map(([id, spec]) => ({ id, ...spec }));
81
+ }
82
+ /**
83
+ * Get tasks for a specific spec
84
+ */
85
+ function getTasksForSpec(specId, manifestPath) {
86
+ const manifest = readCoordinationManifest(manifestPath);
87
+ const spec = manifest.specs[specId];
88
+ if (!spec) {
89
+ return [];
90
+ }
91
+ return spec.relatedTasks
92
+ .filter(taskId => manifest.tasks[taskId])
93
+ .map(taskId => ({
94
+ id: taskId,
95
+ ...manifest.tasks[taskId]
96
+ }));
97
+ }
98
+ /**
99
+ * Get rules for a specific task
100
+ */
101
+ function getRulesForTask(taskId, manifestPath) {
102
+ const manifest = readCoordinationManifest(manifestPath);
103
+ const task = manifest.tasks[taskId];
104
+ if (!task) {
105
+ return [];
106
+ }
107
+ return task.relatedRules
108
+ .filter(ruleName => manifest.rules[ruleName])
109
+ .map(ruleName => ({
110
+ name: ruleName,
111
+ ...manifest.rules[ruleName]
112
+ }));
113
+ }
114
+ /**
115
+ * Get specs that govern a specific file
116
+ */
117
+ function getSpecForFile(filePath, manifestPath) {
118
+ const manifest = readCoordinationManifest(manifestPath);
119
+ return Object.entries(manifest.specs)
120
+ .filter(([id, spec]) => {
121
+ return spec.affectedFiles.some(pattern => (0, minimatch_1.minimatch)(filePath, pattern));
122
+ })
123
+ .map(([id, spec]) => ({ id, ...spec }));
124
+ }
125
+ /**
126
+ * Get tasks that created or modified a specific file
127
+ */
128
+ function getTasksForFile(filePath, manifestPath) {
129
+ const manifest = readCoordinationManifest(manifestPath);
130
+ const fileEntry = manifest.files[filePath];
131
+ if (!fileEntry) {
132
+ return [];
133
+ }
134
+ const tasks = [];
135
+ // Add creator task
136
+ if (fileEntry.createdBy && manifest.tasks[fileEntry.createdBy]) {
137
+ tasks.push({
138
+ id: fileEntry.createdBy,
139
+ relationship: 'created',
140
+ ...manifest.tasks[fileEntry.createdBy]
141
+ });
142
+ }
143
+ // Add modifier tasks
144
+ for (const taskId of fileEntry.modifiedBy) {
145
+ if (manifest.tasks[taskId]) {
146
+ tasks.push({
147
+ id: taskId,
148
+ relationship: 'modified',
149
+ ...manifest.tasks[taskId]
150
+ });
151
+ }
152
+ }
153
+ return tasks;
154
+ }
155
+ //# sourceMappingURL=coordination-queries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coordination-queries.js","sourceRoot":"","sources":["../../src/utils/coordination-queries.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * File Association Tracking
3
+ *
4
+ * Tracks which files are created/modified by which tasks.
5
+ * Auto-updates coordination manifest on file changes.
6
+ */
7
+ interface CoordinationManifest {
8
+ version: string;
9
+ lastUpdated: string;
10
+ specs: Record<string, any>;
11
+ tasks: Record<string, any>;
12
+ rules: Record<string, any>;
13
+ files: Record<string, FileEntry>;
14
+ }
15
+ interface FileEntry {
16
+ createdBy: string | null;
17
+ modifiedBy: string[];
18
+ governedBy: string[];
19
+ rulesApplied: string[];
20
+ }
21
+ /**
22
+ * Read coordination manifest
23
+ */
24
+ export declare function readCoordinationManifest(manifestPath?: string): CoordinationManifest;
25
+ /**
26
+ * Write coordination manifest
27
+ */
28
+ export declare function writeCoordinationManifest(manifest: CoordinationManifest, manifestPath?: string): void;
29
+ /**
30
+ * Track file creation or modification
31
+ */
32
+ export declare function trackFileChange(filePath: string, taskId: string, isNew?: boolean, manifestPath?: string): void;
33
+ /**
34
+ * Track multiple file changes (batch operation)
35
+ */
36
+ export declare function trackFileChanges(changes: Array<{
37
+ filePath: string;
38
+ taskId: string;
39
+ isNew: boolean;
40
+ }>, manifestPath?: string): void;
41
+ export {};
42
+ //# sourceMappingURL=file-tracking.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-tracking.d.ts","sourceRoot":"","sources":["../../src/utils/file-tracking.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,UAAU,oBAAoB;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CAClC;AAED,UAAU,SAAS;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,YAAY,GAAE,MAAqC,GAAG,oBAAoB,CAMlH;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,oBAAoB,EAAE,YAAY,GAAE,MAAqC,GAAG,IAAI,CAEnI;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,OAAe,EACtB,YAAY,GAAE,MAAqC,GAClD,IAAI,CAsDN;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC,EACpE,YAAY,GAAE,MAAqC,GAClD,IAAI,CAyDN"}
@@ -0,0 +1,155 @@
1
+ "use strict";
2
+ /**
3
+ * File Association Tracking
4
+ *
5
+ * Tracks which files are created/modified by which tasks.
6
+ * Auto-updates coordination manifest on file changes.
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
21
+ }) : function(o, v) {
22
+ o["default"] = v;
23
+ });
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.readCoordinationManifest = readCoordinationManifest;
43
+ exports.writeCoordinationManifest = writeCoordinationManifest;
44
+ exports.trackFileChange = trackFileChange;
45
+ exports.trackFileChanges = trackFileChanges;
46
+ const fs = __importStar(require("fs"));
47
+ const minimatch_1 = require("minimatch");
48
+ /**
49
+ * Read coordination manifest
50
+ */
51
+ function readCoordinationManifest(manifestPath = '.augment/coordination.json') {
52
+ if (!fs.existsSync(manifestPath)) {
53
+ throw new Error(`Coordination manifest not found at ${manifestPath}`);
54
+ }
55
+ return JSON.parse(fs.readFileSync(manifestPath, 'utf-8'));
56
+ }
57
+ /**
58
+ * Write coordination manifest
59
+ */
60
+ function writeCoordinationManifest(manifest, manifestPath = '.augment/coordination.json') {
61
+ fs.writeFileSync(manifestPath, JSON.stringify(manifest, null, 2) + '\n');
62
+ }
63
+ /**
64
+ * Track file creation or modification
65
+ */
66
+ function trackFileChange(filePath, taskId, isNew = false, manifestPath = '.augment/coordination.json') {
67
+ const manifest = readCoordinationManifest(manifestPath);
68
+ // Initialize file entry if it doesn't exist
69
+ if (!manifest.files[filePath]) {
70
+ manifest.files[filePath] = {
71
+ createdBy: null,
72
+ modifiedBy: [],
73
+ governedBy: [],
74
+ rulesApplied: []
75
+ };
76
+ }
77
+ const fileEntry = manifest.files[filePath];
78
+ // Track creation
79
+ if (isNew) {
80
+ fileEntry.createdBy = taskId;
81
+ }
82
+ else {
83
+ // Track modification
84
+ if (!fileEntry.modifiedBy.includes(taskId)) {
85
+ fileEntry.modifiedBy.push(taskId);
86
+ }
87
+ }
88
+ // Add to task's output files
89
+ if (manifest.tasks[taskId]) {
90
+ if (!manifest.tasks[taskId].outputFiles.includes(filePath)) {
91
+ manifest.tasks[taskId].outputFiles.push(filePath);
92
+ }
93
+ }
94
+ // Find governing specs
95
+ const governingSpecs = Object.entries(manifest.specs)
96
+ .filter(([id, spec]) => spec.affectedFiles.some((pattern) => (0, minimatch_1.minimatch)(filePath, pattern)))
97
+ .map(([id]) => id);
98
+ fileEntry.governedBy = governingSpecs;
99
+ // Find applicable rules
100
+ const applicableRules = Object.entries(manifest.rules)
101
+ .filter(([name, rule]) => rule.appliesTo.filePatterns.some((pattern) => (0, minimatch_1.minimatch)(filePath, pattern)))
102
+ .map(([name]) => name);
103
+ fileEntry.rulesApplied = applicableRules;
104
+ // Update timestamp
105
+ manifest.lastUpdated = new Date().toISOString();
106
+ writeCoordinationManifest(manifest, manifestPath);
107
+ }
108
+ /**
109
+ * Track multiple file changes (batch operation)
110
+ */
111
+ function trackFileChanges(changes, manifestPath = '.augment/coordination.json') {
112
+ const manifest = readCoordinationManifest(manifestPath);
113
+ for (const change of changes) {
114
+ const { filePath, taskId, isNew } = change;
115
+ // Initialize file entry if it doesn't exist
116
+ if (!manifest.files[filePath]) {
117
+ manifest.files[filePath] = {
118
+ createdBy: null,
119
+ modifiedBy: [],
120
+ governedBy: [],
121
+ rulesApplied: []
122
+ };
123
+ }
124
+ const fileEntry = manifest.files[filePath];
125
+ // Track creation or modification
126
+ if (isNew) {
127
+ fileEntry.createdBy = taskId;
128
+ }
129
+ else {
130
+ if (!fileEntry.modifiedBy.includes(taskId)) {
131
+ fileEntry.modifiedBy.push(taskId);
132
+ }
133
+ }
134
+ // Add to task's output files
135
+ if (manifest.tasks[taskId]) {
136
+ if (!manifest.tasks[taskId].outputFiles.includes(filePath)) {
137
+ manifest.tasks[taskId].outputFiles.push(filePath);
138
+ }
139
+ }
140
+ // Find governing specs
141
+ const governingSpecs = Object.entries(manifest.specs)
142
+ .filter(([id, spec]) => spec.affectedFiles.some((pattern) => (0, minimatch_1.minimatch)(filePath, pattern)))
143
+ .map(([id]) => id);
144
+ fileEntry.governedBy = governingSpecs;
145
+ // Find applicable rules
146
+ const applicableRules = Object.entries(manifest.rules)
147
+ .filter(([name, rule]) => rule.appliesTo.filePatterns.some((pattern) => (0, minimatch_1.minimatch)(filePath, pattern)))
148
+ .map(([name]) => name);
149
+ fileEntry.rulesApplied = applicableRules;
150
+ }
151
+ // Update timestamp
152
+ manifest.lastUpdated = new Date().toISOString();
153
+ writeCoordinationManifest(manifest, manifestPath);
154
+ }
155
+ //# sourceMappingURL=file-tracking.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-tracking.js","sourceRoot":"","sources":["../../src/utils/file-tracking.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Migration Utility
3
+ *
4
+ * Migrates existing Beads tasks and OpenSpec specs to coordination system.
5
+ * Ensures no data loss during migration.
6
+ */
7
+ interface MigrationResult {
8
+ beads: {
9
+ added: number;
10
+ updated: number;
11
+ removed: number;
12
+ };
13
+ openspec: {
14
+ added: number;
15
+ updated: number;
16
+ removed: number;
17
+ };
18
+ backup: string;
19
+ }
20
+ /**
21
+ * Migrate existing data to coordination system
22
+ */
23
+ export declare function migrateExistingData(beadsPath?: string, openspecDir?: string, manifestPath?: string): MigrationResult;
24
+ export {};
25
+ //# sourceMappingURL=migrate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/utils/migrate.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,UAAU,eAAe;IACvB,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,QAAQ,EAAE;QACR,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,MAAM,EAAE,MAAM,CAAC;CAChB;AAuGD;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,GAAE,MAA8B,EACzC,WAAW,GAAE,MAAmB,EAChC,YAAY,GAAE,MAAqC,GAClD,eAAe,CAoEjB"}