agentic-workflow-manager 3.11.0 → 3.13.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 (43) hide show
  1. package/dist/src/commands/doctor.js +1 -1
  2. package/dist/src/commands/preflight/checks.js +63 -5
  3. package/dist/src/commands/preflight/index.js +6 -1
  4. package/dist/src/commands/sensors/baseline.js +4 -3
  5. package/dist/src/core/context/materializer.js +7 -0
  6. package/dist/src/core/context/orchestrator.js +26 -6
  7. package/dist/src/core/context/strategies/codex-agents.js +69 -15
  8. package/dist/src/core/diagnostics/context.js +11 -6
  9. package/dist/src/core/diagnostics/provider-checks.js +92 -11
  10. package/dist/src/core/init/mutation-targets.js +18 -2
  11. package/dist/src/core/init/provider-facts.js +5 -4
  12. package/dist/src/core/init/steps.js +16 -2
  13. package/dist/src/core/install-planner.js +56 -6
  14. package/dist/src/core/install-transaction.js +55 -6
  15. package/dist/src/core/provider-artifacts.js +1 -1
  16. package/dist/src/core/renderers/copilot-instructions.js +28 -0
  17. package/dist/src/core/renderers/cursor-mdc.js +49 -0
  18. package/dist/src/core/renderers/skill-source.js +50 -0
  19. package/dist/src/core/skill-integrity.js +1 -1
  20. package/dist/src/index.js +8 -0
  21. package/dist/src/providers/index.js +69 -2
  22. package/dist/tests/commands/add.test.js +96 -0
  23. package/dist/tests/commands/doctor.test.js +25 -0
  24. package/dist/tests/commands/init.test.js +56 -0
  25. package/dist/tests/commands/preflight/preflight.test.js +95 -0
  26. package/dist/tests/core/bundle-install.test.js +63 -0
  27. package/dist/tests/core/context/materializer.test.js +8 -0
  28. package/dist/tests/core/context/orchestrator.test.js +51 -0
  29. package/dist/tests/core/context/strategies/codex-agents.test.js +157 -20
  30. package/dist/tests/core/diagnostics/checks.test.js +1 -0
  31. package/dist/tests/core/diagnostics/provider-tier.test.js +292 -0
  32. package/dist/tests/core/init/mutation-targets.test.js +63 -0
  33. package/dist/tests/core/init/provider-facts.test.js +16 -0
  34. package/dist/tests/core/init/steps.test.js +37 -0
  35. package/dist/tests/core/install-planner.test.js +118 -0
  36. package/dist/tests/core/install-transaction.test.js +109 -0
  37. package/dist/tests/core/provider-artifacts.test.js +11 -0
  38. package/dist/tests/core/renderers/copilot-instructions.test.js +47 -0
  39. package/dist/tests/core/renderers/cursor-mdc.test.js +137 -0
  40. package/dist/tests/core/skill-integrity.test.js +18 -0
  41. package/dist/tests/providers/index.test.js +45 -1
  42. package/dist/tests/providers/injection-config.test.js +16 -0
  43. package/package.json +1 -1
@@ -147,7 +147,7 @@ describe('Providers Routing', () => {
147
147
  .toBe(path_1.default.join(process.env.HOME, '.agents/skills'));
148
148
  });
149
149
  it('uses AGENT_TARGETS as the single iterable target catalog', () => {
150
- expect(providers_1.AGENT_TARGETS).toEqual(['antigravity', 'opencode', 'claude-code', 'codex']);
150
+ expect(providers_1.AGENT_TARGETS).toEqual(['antigravity', 'opencode', 'claude-code', 'codex', 'cursor', 'copilot']);
151
151
  expect(Object.keys((0, providers_1.providers)())).toEqual([...providers_1.AGENT_TARGETS]);
152
152
  });
153
153
  it('throws on unsupported artifacts', () => {
@@ -160,4 +160,48 @@ describe('Providers Routing', () => {
160
160
  expect(() => (0, providers_1.getTargetPath)('skill', 'unknown-agent', 'global'))
161
161
  .toThrow('Unknown agent target');
162
162
  });
163
+ describe('Cursor and Copilot (D4)', () => {
164
+ it('recognizes cursor and copilot as valid agent targets', () => {
165
+ expect((0, providers_1.isAgentTarget)('cursor')).toBe(true);
166
+ expect((0, providers_1.isAgentTarget)('copilot')).toBe(true);
167
+ });
168
+ it('resolves Cursor skill paths for both scopes', () => {
169
+ expect((0, providers_1.getTargetPath)('skill', 'cursor', 'local')).toBe('.cursor/rules');
170
+ expect((0, providers_1.getTargetPath)('skill', 'cursor', 'global'))
171
+ .toBe(path_1.default.join(process.env.HOME, '.cursor/rules'));
172
+ });
173
+ it('resolves the Copilot local skill path', () => {
174
+ expect((0, providers_1.getTargetPath)('skill', 'copilot', 'local')).toBe('.github/instructions');
175
+ });
176
+ it('throws a specific, non-generic reason when Copilot global skills are requested', () => {
177
+ expect(() => (0, providers_1.getTargetPath)('skill', 'copilot', 'global')).toThrow('skill global scope is not supported by Copilot: GitHub Copilot has no user-level skill discovery mechanism — skills must be installed per-project.');
178
+ });
179
+ it('keeps workflow/agent unsupported (null) for both, via the existing generic message', () => {
180
+ expect(() => (0, providers_1.getTargetPath)('workflow', 'cursor', 'local')).toThrow('workflows are not supported by Cursor.');
181
+ expect(() => (0, providers_1.getTargetPath)('agent', 'copilot', 'local')).toThrow('agents are not supported by Copilot.');
182
+ });
183
+ it('declares no hooks config for cursor or copilot', () => {
184
+ expect((0, providers_1.providerFor)('cursor').hooks).toBeUndefined();
185
+ expect((0, providers_1.providerFor)('copilot').hooks).toBeUndefined();
186
+ });
187
+ it('assigns the Cursor .mdc and Copilot instructions renderers to their skill artifact config (Task 4.3)', () => {
188
+ expect((0, providers_1.providerFor)('cursor').skill.renderer).toBe('cursor-mdc');
189
+ expect((0, providers_1.providerFor)('copilot').skill.renderer).toBe('copilot-instructions');
190
+ });
191
+ it('assertLinkRenderer still refuses the Cursor/Copilot skill renderers (Task 4.3 code-quality-review fix)', () => {
192
+ // Regression: an earlier version of this task widened assertLinkRenderer to
193
+ // allow these two through, on the theory that a raw unrendered copy is "at
194
+ // least a plausible degraded install" — wrong. assertLinkRenderer's only
195
+ // callers (core/provider-artifacts.ts's legacy preflight, src/index.ts's
196
+ // legacy interactive `awm add`) can only symlink/copy verbatim; they never
197
+ // render. A raw SKILL.md copy at `.cursor/rules/<name>` or
198
+ // `.github/instructions/<name>` has no `.mdc`/`.instructions.md` extension
199
+ // and no frontmatter (`alwaysApply`/`applyTo`) — neither Cursor nor Copilot
200
+ // would ever read it. This must keep throwing, same as codex-agent-toml
201
+ // always has, directing users to commands/add.ts's real render pipeline
202
+ // instead (which never calls assertLinkRenderer at all).
203
+ expect(() => (0, providers_1.assertLinkRenderer)('skill', 'cursor')).toThrow(/not implemented yet/);
204
+ expect(() => (0, providers_1.assertLinkRenderer)('skill', 'copilot')).toThrow(/not implemented yet/);
205
+ });
206
+ });
163
207
  });
@@ -22,4 +22,20 @@ describe('getInjection', () => {
22
22
  it('returns undefined for antigravity (no injection mechanism wired yet)', () => {
23
23
  expect((0, providers_1.getInjection)('antigravity')).toBeUndefined();
24
24
  });
25
+ it('returns managed-agents-md for cursor, with no confirmed global path (D4)', () => {
26
+ const inj = (0, providers_1.getInjection)('cursor');
27
+ expect(inj).toEqual({
28
+ type: 'managed-agents-md',
29
+ globalPath: null,
30
+ localFile: 'AGENTS.md',
31
+ });
32
+ });
33
+ it('returns managed-agents-md for copilot, project-root only (D4: no global equivalent)', () => {
34
+ const inj = (0, providers_1.getInjection)('copilot');
35
+ expect(inj).toEqual({
36
+ type: 'managed-agents-md',
37
+ globalPath: null,
38
+ localFile: 'AGENTS.md',
39
+ });
40
+ });
25
41
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentic-workflow-manager",
3
- "version": "3.11.0",
3
+ "version": "3.13.0",
4
4
  "main": "dist/src/index.js",
5
5
  "bin": {
6
6
  "awm": "./dist/src/index.js"