@schnick371/devsteps-shared 1.1.0-next.2 → 1.1.0-next.4
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.
- package/README.md +29 -0
- package/dist/agents.test.d.ts +18 -0
- package/dist/agents.test.d.ts.map +1 -0
- package/dist/agents.test.js +96 -0
- package/dist/agents.test.js.map +1 -0
- package/dist/constants/index.d.ts +2 -2
- package/dist/constants/index.d.ts.map +1 -1
- package/dist/constants/index.js +2 -2
- package/dist/constants/index.js.map +1 -1
- package/dist/core/add.d.ts.map +1 -1
- package/dist/core/add.js +4 -3
- package/dist/core/add.js.map +1 -1
- package/dist/core/context.d.ts +44 -0
- package/dist/core/context.d.ts.map +1 -1
- package/dist/core/context.js +326 -1
- package/dist/core/context.js.map +1 -1
- package/dist/core/context.test.d.ts +10 -0
- package/dist/core/context.test.d.ts.map +1 -0
- package/dist/core/context.test.js +239 -0
- package/dist/core/context.test.js.map +1 -0
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/update.js +4 -4
- package/dist/core/update.js.map +1 -1
- package/dist/schemas/cbp-mandate.d.ts +141 -6
- package/dist/schemas/cbp-mandate.d.ts.map +1 -1
- package/dist/schemas/cbp-mandate.js +121 -18
- package/dist/schemas/cbp-mandate.js.map +1 -1
- package/dist/schemas/cbp-mandate.test.d.ts +2 -1
- package/dist/schemas/cbp-mandate.test.d.ts.map +1 -1
- package/dist/schemas/cbp-mandate.test.js +130 -6
- package/dist/schemas/cbp-mandate.test.js.map +1 -1
- package/dist/utils/backup-github-files.d.ts +34 -0
- package/dist/utils/backup-github-files.d.ts.map +1 -0
- package/dist/utils/backup-github-files.js +137 -0
- package/dist/utils/backup-github-files.js.map +1 -0
- package/dist/utils/index.d.ts +25 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +36 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/init-helpers.d.ts +14 -1
- package/dist/utils/init-helpers.d.ts.map +1 -1
- package/dist/utils/init-helpers.js +37 -2
- package/dist/utils/init-helpers.js.map +1 -1
- package/dist/utils/normalize.test.d.ts +15 -0
- package/dist/utils/normalize.test.d.ts.map +1 -0
- package/dist/utils/normalize.test.js +101 -0
- package/dist/utils/normalize.test.js.map +1 -0
- package/dist/utils/update-copilot-files.d.ts +59 -0
- package/dist/utils/update-copilot-files.d.ts.map +1 -0
- package/dist/utils/update-copilot-files.js +183 -0
- package/dist/utils/update-copilot-files.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -68,6 +68,35 @@ const items = await listItems('/path/to/.devsteps');
|
|
|
68
68
|
- `updateItemSchema` - Validation for updates
|
|
69
69
|
- `linkItemSchema` - Validation for relationships
|
|
70
70
|
|
|
71
|
+
### CBP Schemas (Context Budget Protocol)
|
|
72
|
+
|
|
73
|
+
The `MandateResult` schema is split into two variants to support both backward-compatible reads and strict writes:
|
|
74
|
+
|
|
75
|
+
| Schema | Purpose | Strictness |
|
|
76
|
+
|--------|---------|------------|
|
|
77
|
+
| `ReadMandateResultSchema` | Reading historical and current `.result.json` files | Lenient — tolerates `item_ids:[]`, short analyst names |
|
|
78
|
+
| `WriteMandateResultSchema` | Validating new writes via `write_mandate_result` tool | Strict — requires `item_ids` ≥ 1, `analyst` matching `devsteps-R{N}-{name}` |
|
|
79
|
+
| `MandateResultSchema` | Backward-compat alias → `ReadMandateResultSchema` | Lenient (same as read) |
|
|
80
|
+
|
|
81
|
+
**Write-path constraints (`WriteMandateResultSchema`):**
|
|
82
|
+
- `item_ids`: must contain at least 1 item ID
|
|
83
|
+
- `analyst`: must match regex `/^devsteps-R\d+-/` (e.g., `devsteps-R2-aspect-impact`)
|
|
84
|
+
|
|
85
|
+
**Example:**
|
|
86
|
+
```typescript
|
|
87
|
+
import {
|
|
88
|
+
ReadMandateResultSchema,
|
|
89
|
+
WriteMandateResultSchema,
|
|
90
|
+
type MandateResult,
|
|
91
|
+
} from '@schnick371/devsteps-shared';
|
|
92
|
+
|
|
93
|
+
// For reading files from disk:
|
|
94
|
+
const parsed = ReadMandateResultSchema.safeParse(rawJson);
|
|
95
|
+
|
|
96
|
+
// For validating new writes:
|
|
97
|
+
const validated = WriteMandateResultSchema.safeParse(newResult);
|
|
98
|
+
```
|
|
99
|
+
|
|
71
100
|
## Documentation
|
|
72
101
|
|
|
73
102
|
- [DevSteps Documentation](https://devsteps.dev)
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright © 2025 Thomas Hertel (the@devsteps.dev)
|
|
3
|
+
* Licensed under the Apache License, Version 2.0
|
|
4
|
+
*
|
|
5
|
+
* CI Validation Suite: .github/agents/ frontmatter integrity
|
|
6
|
+
*
|
|
7
|
+
* Validates that all devsteps-*.agent.md files satisfy the Spider Web Dispatch
|
|
8
|
+
* protocol requirements:
|
|
9
|
+
* - Required YAML frontmatter fields present (description, model, tools)
|
|
10
|
+
* - user-invokable / user-invocable field present on every file
|
|
11
|
+
* - R0 coordinator files are user-invokable: true; all others are false
|
|
12
|
+
* - No file exceeds 150 lines (Copilot-Files-Standards-Specification limit)
|
|
13
|
+
*
|
|
14
|
+
* @see .github/instructions/Copilot-Files-Standards-Specification.instructions.md
|
|
15
|
+
* @see TASK-350
|
|
16
|
+
*/
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=agents.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents.test.d.ts","sourceRoot":"","sources":["../src/agents.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright © 2025 Thomas Hertel (the@devsteps.dev)
|
|
3
|
+
* Licensed under the Apache License, Version 2.0
|
|
4
|
+
*
|
|
5
|
+
* CI Validation Suite: .github/agents/ frontmatter integrity
|
|
6
|
+
*
|
|
7
|
+
* Validates that all devsteps-*.agent.md files satisfy the Spider Web Dispatch
|
|
8
|
+
* protocol requirements:
|
|
9
|
+
* - Required YAML frontmatter fields present (description, model, tools)
|
|
10
|
+
* - user-invokable / user-invocable field present on every file
|
|
11
|
+
* - R0 coordinator files are user-invokable: true; all others are false
|
|
12
|
+
* - No file exceeds 150 lines (Copilot-Files-Standards-Specification limit)
|
|
13
|
+
*
|
|
14
|
+
* @see .github/instructions/Copilot-Files-Standards-Specification.instructions.md
|
|
15
|
+
* @see TASK-350
|
|
16
|
+
*/
|
|
17
|
+
import { describe, expect, it } from 'vitest';
|
|
18
|
+
import { readdirSync, readFileSync } from 'node:fs';
|
|
19
|
+
import { dirname, join, resolve } from 'node:path';
|
|
20
|
+
import { fileURLToPath } from 'node:url';
|
|
21
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
22
|
+
const workspaceRoot = resolve(__dirname, '../../..');
|
|
23
|
+
const agentsDir = join(workspaceRoot, '.github', 'agents');
|
|
24
|
+
/**
|
|
25
|
+
* Agents that are user-invokable (true).
|
|
26
|
+
* Includes R0 coordinators and special entry-point agents.
|
|
27
|
+
*/
|
|
28
|
+
const USER_INVOKABLE_AGENTS = new Set([
|
|
29
|
+
'devsteps-R0-coord.agent.md',
|
|
30
|
+
'devsteps-R0-coord-sprint.agent.md',
|
|
31
|
+
'devsteps-R0-coord-ishikawa.agent.md',
|
|
32
|
+
'devsteps-R0-coord-solo.agent.md',
|
|
33
|
+
'devsteps-backlog-curator.agent.md',
|
|
34
|
+
]);
|
|
35
|
+
/**
|
|
36
|
+
* Parse YAML frontmatter from a markdown file.
|
|
37
|
+
* Only extracts scalar string values — sufficient for agent file validation.
|
|
38
|
+
*/
|
|
39
|
+
function parseFrontmatter(content) {
|
|
40
|
+
const match = content.match(/^---\n([\s\S]*?)\n---/);
|
|
41
|
+
if (!match)
|
|
42
|
+
return {};
|
|
43
|
+
const yaml = match[1];
|
|
44
|
+
const result = {};
|
|
45
|
+
// Extract simple key: value pairs (handles quoted and unquoted values)
|
|
46
|
+
const scalarRe = /^([\w-]+):\s*(.+)$/gm;
|
|
47
|
+
let m;
|
|
48
|
+
while ((m = scalarRe.exec(yaml)) !== null) {
|
|
49
|
+
const key = m[1];
|
|
50
|
+
const value = m[2].replace(/^["']|["']$/g, '').trim();
|
|
51
|
+
result[key] = value;
|
|
52
|
+
}
|
|
53
|
+
return result;
|
|
54
|
+
}
|
|
55
|
+
function getAgentFiles() {
|
|
56
|
+
return readdirSync(agentsDir)
|
|
57
|
+
.filter((f) => f.startsWith('devsteps-') && f.endsWith('.agent.md'))
|
|
58
|
+
.sort();
|
|
59
|
+
}
|
|
60
|
+
describe('agent file frontmatter', () => {
|
|
61
|
+
const files = getAgentFiles();
|
|
62
|
+
it('finds at least 30 agent files', () => {
|
|
63
|
+
expect(files.length).toBeGreaterThanOrEqual(30);
|
|
64
|
+
});
|
|
65
|
+
for (const filename of files) {
|
|
66
|
+
const filePath = join(agentsDir, filename);
|
|
67
|
+
const content = readFileSync(filePath, 'utf-8');
|
|
68
|
+
const lines = content.split('\n');
|
|
69
|
+
const fm = parseFrontmatter(content);
|
|
70
|
+
const isCoord = USER_INVOKABLE_AGENTS.has(filename);
|
|
71
|
+
describe(filename, () => {
|
|
72
|
+
it('has description field', () => {
|
|
73
|
+
expect(fm.description, 'description required').toBeTruthy();
|
|
74
|
+
});
|
|
75
|
+
it('has model field', () => {
|
|
76
|
+
expect(fm.model, 'model required').toBeTruthy();
|
|
77
|
+
});
|
|
78
|
+
it('has tools field', () => {
|
|
79
|
+
expect(fm.tools, 'tools required').toBeTruthy();
|
|
80
|
+
});
|
|
81
|
+
it('has user-invokable or user-invocable field', () => {
|
|
82
|
+
const hasField = 'user-invokable' in fm || 'user-invocable' in fm;
|
|
83
|
+
expect(hasField, 'user-invokable/user-invocable required').toBe(true);
|
|
84
|
+
});
|
|
85
|
+
it(`user-invokable/invocable = ${isCoord ? 'true' : 'false'} for ${isCoord ? 'coordinator' : 'leaf'} agent`, () => {
|
|
86
|
+
const value = fm['user-invokable'] ?? fm['user-invocable'];
|
|
87
|
+
const expectedBool = isCoord;
|
|
88
|
+
expect(value === 'true', `expected ${expectedBool} for ${filename}`).toBe(expectedBool);
|
|
89
|
+
});
|
|
90
|
+
it('does not exceed 150 lines', () => {
|
|
91
|
+
expect(lines.length, `${filename} exceeds 150 lines (${lines.length})`).toBeLessThanOrEqual(150);
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
//# sourceMappingURL=agents.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents.test.js","sourceRoot":"","sources":["../src/agents.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -95,8 +95,8 @@ export declare const CBP_LOOP: {
|
|
|
95
95
|
readonly MAX_CONFLICT_RESOLUTION_ROUNDS: 2;
|
|
96
96
|
/** Max Tier-2 parallel T3 dispatches per turn */
|
|
97
97
|
readonly MAX_PARALLEL_T3_DISPATCHES: 10;
|
|
98
|
-
/** Max tokens for MandateResult findings field (~
|
|
99
|
-
readonly MAX_MANDATE_FINDINGS_CHARS:
|
|
98
|
+
/** Max tokens for MandateResult findings field (~1600 tokens) */
|
|
99
|
+
readonly MAX_MANDATE_FINDINGS_CHARS: 12000;
|
|
100
100
|
};
|
|
101
101
|
export type RelationshipTypeValue = (typeof RELATIONSHIP_TYPE)[keyof typeof RELATIONSHIP_TYPE];
|
|
102
102
|
export type MethodologyValue = (typeof METHODOLOGY)[keyof typeof METHODOLOGY];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH;;GAEG;AACH,eAAO,MAAM,SAAS;;;;;;;;;CASZ,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,MAAM;;;;;;;;;CAST,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;CAYpB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,WAAW;;;;CAId,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,cAAc;;;;CAIjB,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC;AACvE,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,MAAM,CAAC,CAAC,MAAM,OAAO,MAAM,CAAC,CAAC;AAE/D;;;;;;;;GAQG;AACH,eAAO,MAAM,QAAQ;IACnB,wEAAwE;;IAExE,wDAAwD;;IAExD,0DAA0D;;IAE1D,kEAAkE;;IAElE,iDAAiD;;IAEjD,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH;;GAEG;AACH,eAAO,MAAM,SAAS;;;;;;;;;CASZ,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,MAAM;;;;;;;;;CAST,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;CAYpB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,WAAW;;;;CAId,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,cAAc;;;;CAIjB,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC;AACvE,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,MAAM,CAAC,CAAC,MAAM,OAAO,MAAM,CAAC,CAAC;AAE/D;;;;;;;;GAQG;AACH,eAAO,MAAM,QAAQ;IACnB,wEAAwE;;IAExE,wDAAwD;;IAExD,0DAA0D;;IAE1D,kEAAkE;;IAElE,iDAAiD;;IAEjD,iEAAiE;;CAEzD,CAAC;AACX,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,CAAC;AAC/F,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC;AAC9E,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,OAAO,cAAc,CAAC,CAAC"}
|
package/dist/constants/index.js
CHANGED
|
@@ -90,7 +90,7 @@ export const CBP_LOOP = {
|
|
|
90
90
|
MAX_CONFLICT_RESOLUTION_ROUNDS: 2,
|
|
91
91
|
/** Max Tier-2 parallel T3 dispatches per turn */
|
|
92
92
|
MAX_PARALLEL_T3_DISPATCHES: 10,
|
|
93
|
-
/** Max tokens for MandateResult findings field (~
|
|
94
|
-
MAX_MANDATE_FINDINGS_CHARS:
|
|
93
|
+
/** Max tokens for MandateResult findings field (~1600 tokens) */
|
|
94
|
+
MAX_MANDATE_FINDINGS_CHARS: 12000,
|
|
95
95
|
};
|
|
96
96
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,aAAa;IAC1B,OAAO,EAAE,SAAS;IAClB,GAAG,EAAE,KAAK;IACV,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;CACJ,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;IAClB,WAAW,EAAE,aAAa;IAC1B,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,WAAW;IACtB,QAAQ,EAAE,UAAU;CACZ,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,UAAU,EAAE,YAAY;IACxB,cAAc,EAAE,gBAAgB;IAChC,MAAM,EAAE,QAAQ;IAChB,UAAU,EAAE,YAAY;IACxB,SAAS,EAAE,WAAW;IACtB,KAAK,EAAE,OAAO;IACd,UAAU,EAAE,YAAY;IACxB,UAAU,EAAE,YAAY;IACxB,WAAW,EAAE,aAAa;IAC1B,UAAU,EAAE,YAAY;IACxB,aAAa,EAAE,eAAe;CACtB,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,KAAK,EAAE,OAAO;IACd,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,QAAQ;CACR,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,KAAK,EAAE,OAAO;IACd,SAAS,EAAE,WAAW;IACtB,IAAI,EAAE,MAAM;CACJ,CAAC;AAQX;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,wEAAwE;IACxE,yBAAyB,EAAE,CAAC;IAC5B,wDAAwD;IACxD,kBAAkB,EAAE,CAAC;IACrB,0DAA0D;IAC1D,wBAAwB,EAAE,CAAC;IAC3B,kEAAkE;IAClE,8BAA8B,EAAE,CAAC;IACjC,iDAAiD;IACjD,0BAA0B,EAAE,EAAE;IAC9B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,aAAa;IAC1B,OAAO,EAAE,SAAS;IAClB,GAAG,EAAE,KAAK;IACV,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;CACJ,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;IAClB,WAAW,EAAE,aAAa;IAC1B,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,WAAW;IACtB,QAAQ,EAAE,UAAU;CACZ,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,UAAU,EAAE,YAAY;IACxB,cAAc,EAAE,gBAAgB;IAChC,MAAM,EAAE,QAAQ;IAChB,UAAU,EAAE,YAAY;IACxB,SAAS,EAAE,WAAW;IACtB,KAAK,EAAE,OAAO;IACd,UAAU,EAAE,YAAY;IACxB,UAAU,EAAE,YAAY;IACxB,WAAW,EAAE,aAAa;IAC1B,UAAU,EAAE,YAAY;IACxB,aAAa,EAAE,eAAe;CACtB,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,KAAK,EAAE,OAAO;IACd,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,QAAQ;CACR,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,KAAK,EAAE,OAAO;IACd,SAAS,EAAE,WAAW;IACtB,IAAI,EAAE,MAAM;CACJ,CAAC;AAQX;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,wEAAwE;IACxE,yBAAyB,EAAE,CAAC;IAC5B,wDAAwD;IACxD,kBAAkB,EAAE,CAAC;IACrB,0DAA0D;IAC1D,wBAAwB,EAAE,CAAC;IAC3B,kEAAkE;IAClE,8BAA8B,EAAE,CAAC;IACjC,iDAAiD;IACjD,0BAA0B,EAAE,EAAE;IAC9B,iEAAiE;IACjE,0BAA0B,EAAE,KAAK;CACzB,CAAC"}
|
package/dist/core/add.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/core/add.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,YAAY,EACZ,QAAQ,EACT,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/core/add.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,YAAY,EACZ,QAAQ,EACT,MAAM,qBAAqB,CAAC;AAW7B,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,YAAY,CAAC;IACvB,MAAM,EAAE,cAAc,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAsB,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CA6E5F"}
|
package/dist/core/add.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { existsSync, writeFileSync } from 'node:fs';
|
|
9
9
|
import { join } from 'node:path';
|
|
10
|
-
import { generateItemId, getCurrentTimestamp, getTypePrefix, TYPE_TO_DIRECTORY, } from '../utils/index.js';
|
|
10
|
+
import { generateItemId, getCurrentTimestamp, getTypePrefix, normalizeMarkdown, TYPE_TO_DIRECTORY, } from '../utils/index.js';
|
|
11
11
|
import { getConfig } from './config.js';
|
|
12
12
|
import { addItemToIndex, loadCounters, updateCounters } from './index-refs.js';
|
|
13
13
|
/**
|
|
@@ -64,8 +64,9 @@ export async function addItem(devstepsDir, args) {
|
|
|
64
64
|
const metadataPath = join(itemDir, `${itemId}.json`);
|
|
65
65
|
const descriptionPath = join(itemDir, `${itemId}.md`);
|
|
66
66
|
writeFileSync(metadataPath, JSON.stringify(metadata, null, 2));
|
|
67
|
-
// Save description
|
|
68
|
-
|
|
67
|
+
// Save description — normalizeMarkdown converts literal \n sequences from MCP clients
|
|
68
|
+
// to real newlines (BUG-056: GitHub Copilot ≥ v1.0.0 sends escape sequences, not real newlines)
|
|
69
|
+
const description = normalizeMarkdown(args.description || `# ${args.title}\n\n<!-- Add detailed description here -->\n`);
|
|
69
70
|
writeFileSync(descriptionPath, description);
|
|
70
71
|
// Update index (auto-migration ensures refs-style always available)
|
|
71
72
|
const currentCounters = loadCounters(devstepsDir);
|
package/dist/core/add.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/core/add.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAOjC,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAmB/E;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,WAAmB,EAAE,IAAiB;IAClE,uBAAuB;IACvB,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IAED,wBAAwB;IACxB,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,CAAC;IAE5C,4EAA4E;IAC5E,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,uCAAuC;IACpF,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAEhD,mCAAmC;IACnC,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAElD,kBAAkB;IAClB,MAAM,GAAG,GAAG,mBAAmB,EAAE,CAAC;IAClC,MAAM,QAAQ,GAAiB;QAC7B,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,SAAS;QACpC,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,MAAM,EAAE,OAAO;QACf,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,sBAAsB;QACrD,OAAO,EAAE,GAAG;QACZ,OAAO,EAAE,GAAG;QACZ,MAAM,EAAE,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,cAAc;QACvD,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,cAAc,EAAE,IAAI,CAAC,cAAc,IAAI,EAAE;QACzC,YAAY,EAAE;YACZ,UAAU,EAAE,EAAE;YACd,gBAAgB,EAAE,EAAE;YACpB,WAAW,EAAE,EAAE;YACf,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,EAAE;YACV,YAAY,EAAE,EAAE;YAChB,YAAY,EAAE,EAAE;YAChB,YAAY,EAAE,EAAE;YAChB,aAAa,EAAE,EAAE;YACjB,UAAU,EAAE,EAAE;YACd,eAAe,EAAE,EAAE;SACpB;QACD,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;QACrB,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,EAAE;KACb,CAAC;IAEF,gBAAgB;IAChB,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,MAAM,OAAO,CAAC,CAAC;IACrD,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,MAAM,KAAK,CAAC,CAAC;IAEtD,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAE/D,
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/core/add.ts"],"names":[],"mappings":"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"}
|
package/dist/core/context.d.ts
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* Builds structured project context at quick/standard/deep levels.
|
|
7
7
|
*
|
|
8
8
|
* @see STORY-085 Context Command
|
|
9
|
+
* @see STORY-121 Layered AI Context Auto-Delivery
|
|
9
10
|
*/
|
|
10
11
|
import type { ContextLevel, QuickContext } from '../schemas/project.js';
|
|
11
12
|
interface PackageInfo {
|
|
@@ -24,6 +25,23 @@ interface RecentUpdate {
|
|
|
24
25
|
title: string;
|
|
25
26
|
updated: string;
|
|
26
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* Metadata about the freshness and origin of a context response.
|
|
30
|
+
* Included in all context responses (quick, standard, deep).
|
|
31
|
+
* @see STORY-121 TASK-276
|
|
32
|
+
*/
|
|
33
|
+
export interface ContextMeta {
|
|
34
|
+
/** ISO 8601 timestamp when this context was generated */
|
|
35
|
+
generated_at: string;
|
|
36
|
+
/** Age of .devsteps/PROJECT.md in decimal hours; Infinity if file absent */
|
|
37
|
+
project_md_age_hours: number;
|
|
38
|
+
/** True when project_md_age_hours > 24 (or PROJECT.md missing) */
|
|
39
|
+
is_stale: boolean;
|
|
40
|
+
/** Context depth level returned */
|
|
41
|
+
level: ContextLevel;
|
|
42
|
+
/** Whether this response was served from in-memory cache */
|
|
43
|
+
cache_hit: boolean;
|
|
44
|
+
}
|
|
27
45
|
interface ContextResponse {
|
|
28
46
|
context_level: ContextLevel;
|
|
29
47
|
tokens_used: number;
|
|
@@ -34,6 +52,7 @@ interface ContextResponse {
|
|
|
34
52
|
recent_updates: RecentUpdate[];
|
|
35
53
|
};
|
|
36
54
|
suggestions?: string[];
|
|
55
|
+
context_meta?: ContextMeta;
|
|
37
56
|
}
|
|
38
57
|
/**
|
|
39
58
|
* Analyze packages from workspace (with caching)
|
|
@@ -59,5 +78,30 @@ export declare function estimateTokens(obj: unknown): number;
|
|
|
59
78
|
* Get quick context
|
|
60
79
|
*/
|
|
61
80
|
export declare function getQuickContext(projectDir: string, devstepsDir: string): Promise<ContextResponse>;
|
|
81
|
+
/**
|
|
82
|
+
* Build context_meta block for any context response.
|
|
83
|
+
* Computes PROJECT.md age from filesystem mtime.
|
|
84
|
+
* @see STORY-121 TASK-276
|
|
85
|
+
*/
|
|
86
|
+
export declare function buildContextMeta(devstepsDir: string, level: ContextLevel, cacheHit: boolean): Promise<ContextMeta>;
|
|
87
|
+
/**
|
|
88
|
+
* Get standard context — extended project context for AI (< 20K tokens).
|
|
89
|
+
* Includes all quick fields plus open items, blocked items, in-progress summary,
|
|
90
|
+
* recent changes (7 days), key affected paths, and context_meta.
|
|
91
|
+
* @see STORY-121 TASK-273
|
|
92
|
+
*/
|
|
93
|
+
export declare function getStandardContext(projectDir: string, devstepsDir: string): Promise<ContextResponse>;
|
|
94
|
+
/**
|
|
95
|
+
* Format a ContextResponse as readable plain text for embedding in AI prompts
|
|
96
|
+
* (used by MCP resource devsteps://project-context).
|
|
97
|
+
* @see STORY-121 TASK-275
|
|
98
|
+
*/
|
|
99
|
+
export declare function formatContextAsText(ctx: ContextResponse): string;
|
|
100
|
+
/**
|
|
101
|
+
* Generate PROJECT.md content from live project state.
|
|
102
|
+
* Used by `devsteps context generate` CLI command.
|
|
103
|
+
* @see STORY-121 TASK-272
|
|
104
|
+
*/
|
|
105
|
+
export declare function generateProjectMd(projectDir: string, devstepsDir: string): Promise<string>;
|
|
62
106
|
export {};
|
|
63
107
|
//# sourceMappingURL=context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/core/context.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/core/context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGxE,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAED,UAAU,YAAY;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,yDAAyD;IACzD,YAAY,EAAE,MAAM,CAAC;IACrB,4EAA4E;IAC5E,oBAAoB,EAAE,MAAM,CAAC;IAC7B,kEAAkE;IAClE,QAAQ,EAAE,OAAO,CAAC;IAClB,mCAAmC;IACnC,KAAK,EAAE,YAAY,CAAC;IACpB,4DAA4D;IAC5D,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,UAAU,eAAe;IACvB,aAAa,EAAE,YAAY,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE;QACf,QAAQ,EAAE,WAAW,EAAE,CAAC;QACxB,YAAY,EAAE,UAAU,CAAC;QACzB,cAAc,EAAE,YAAY,EAAE,CAAC;KAChC,CAAC;IACF,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,WAAW,CAAC;CAC5B;AAcD;;GAEG;AACH,wBAAsB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAyChF;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAmC5E;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAwCjG;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAkDrF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAGnD;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,eAAe,CAAC,CAuC1B;AACD;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,WAAW,CAAC,CAkBtB;AAmDD;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,eAAe,CAAC,CAwD1B;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CAoEhE;AACD;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAwIjB"}
|