synarcx 0.1.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/README.md +240 -34
  2. package/dist/commands/config.js +7 -6
  3. package/dist/core/command-generation/adapters/bob.js +7 -20
  4. package/dist/core/command-generation/adapters/claude.js +9 -29
  5. package/dist/core/command-generation/adapters/cursor.js +9 -22
  6. package/dist/core/command-generation/adapters/pi.js +6 -19
  7. package/dist/core/command-generation/adapters/windsurf.js +9 -29
  8. package/dist/core/command-generation/yaml-utils.d.ts +3 -0
  9. package/dist/core/command-generation/yaml-utils.js +12 -0
  10. package/dist/core/completions/installers/bash-installer.d.ts +1 -0
  11. package/dist/core/completions/installers/bash-installer.js +14 -3
  12. package/dist/core/completions/installers/powershell-installer.d.ts +1 -0
  13. package/dist/core/completions/installers/powershell-installer.js +18 -10
  14. package/dist/core/config.js +0 -3
  15. package/dist/core/index.js +1 -1
  16. package/dist/core/init.d.ts +0 -2
  17. package/dist/core/init.js +27 -75
  18. package/dist/core/migration.js +1 -2
  19. package/dist/core/profile-sync-drift.d.ts +0 -7
  20. package/dist/core/profile-sync-drift.js +2 -15
  21. package/dist/core/profiles.d.ts +0 -11
  22. package/dist/core/profiles.js +1 -18
  23. package/dist/core/shared/artifact-cleanup.d.ts +5 -0
  24. package/dist/core/shared/artifact-cleanup.js +89 -0
  25. package/dist/core/shared/skill-generation.js +5 -1
  26. package/dist/core/shared/tool-detection.d.ts +4 -10
  27. package/dist/core/shared/tool-detection.js +3 -27
  28. package/dist/core/shared/workflow-registry.d.ts +40 -0
  29. package/dist/core/shared/workflow-registry.js +19 -0
  30. package/dist/core/templates/skill-templates.d.ts +2 -0
  31. package/dist/core/templates/skill-templates.js +2 -0
  32. package/dist/core/templates/types.d.ts +7 -0
  33. package/dist/core/templates/types.js +9 -1
  34. package/dist/core/templates/workflows/analyze.js +84 -84
  35. package/dist/core/templates/workflows/apply-change.js +291 -291
  36. package/dist/core/templates/workflows/archive-change.js +254 -254
  37. package/dist/core/templates/workflows/clarify.js +91 -91
  38. package/dist/core/templates/workflows/debug.js +104 -104
  39. package/dist/core/templates/workflows/explore.js +462 -462
  40. package/dist/core/templates/workflows/propose.js +199 -199
  41. package/dist/core/templates/workflows/quick.d.ts +4 -0
  42. package/dist/core/templates/workflows/quick.js +129 -0
  43. package/dist/core/templates/workflows/refactor.d.ts +4 -0
  44. package/dist/core/templates/workflows/refactor.js +126 -0
  45. package/dist/core/templates/workflows/sync.js +152 -95
  46. package/dist/core/update.d.ts +1 -21
  47. package/dist/core/update.js +18 -117
  48. package/dist/core/view.js +8 -8
  49. package/dist/core/workspace/open-surface.d.ts +2 -2
  50. package/dist/core/workspace/open-surface.js +13 -13
  51. package/package.json +84 -76
package/dist/core/view.js CHANGED
@@ -6,16 +6,16 @@ import { MarkdownParser } from './parsers/markdown-parser.js';
6
6
  import { SYNSPEC_DIR_NAME } from './config.js';
7
7
  export class ViewCommand {
8
8
  async execute(targetPath = '.') {
9
- const openspecDir = path.join(targetPath, SYNSPEC_DIR_NAME);
10
- if (!fs.existsSync(openspecDir)) {
9
+ const synspecDir = path.join(targetPath, SYNSPEC_DIR_NAME);
10
+ if (!fs.existsSync(synspecDir)) {
11
11
  console.error(chalk.red('No synspec directory found'));
12
12
  process.exit(1);
13
13
  }
14
14
  console.log(chalk.bold('\nsynarcx Dashboard\n'));
15
15
  console.log('═'.repeat(60));
16
16
  // Get changes and specs data
17
- const changesData = await this.getChangesData(openspecDir);
18
- const specsData = await this.getSpecsData(openspecDir);
17
+ const changesData = await this.getChangesData(synspecDir);
18
+ const specsData = await this.getSpecsData(synspecDir);
19
19
  // Display summary metrics
20
20
  this.displaySummary(changesData, specsData);
21
21
  // Display draft changes
@@ -60,8 +60,8 @@ export class ViewCommand {
60
60
  console.log('\n' + '═'.repeat(60));
61
61
  console.log(chalk.dim(`\nUse ${chalk.white('synarcx list --changes')} or ${chalk.white('synarcx list --specs')} for detailed views`));
62
62
  }
63
- async getChangesData(openspecDir) {
64
- const changesDir = path.join(openspecDir, 'changes');
63
+ async getChangesData(synspecDir) {
64
+ const changesDir = path.join(synspecDir, 'changes');
65
65
  if (!fs.existsSync(changesDir)) {
66
66
  return { draft: [], active: [], completed: [] };
67
67
  }
@@ -101,8 +101,8 @@ export class ViewCommand {
101
101
  completed.sort((a, b) => a.name.localeCompare(b.name));
102
102
  return { draft, active, completed };
103
103
  }
104
- async getSpecsData(openspecDir) {
105
- const specsDir = path.join(openspecDir, 'specs');
104
+ async getSpecsData(synspecDir) {
105
+ const specsDir = path.join(synspecDir, 'specs');
106
106
  if (!fs.existsSync(specsDir)) {
107
107
  return [];
108
108
  }
@@ -1,6 +1,6 @@
1
1
  import { WorkspaceLocalState, WorkspaceSharedState } from './foundation.js';
2
- export declare const WORKSPACE_GUIDANCE_START_MARKER = "<!-- OPENSPEC:WORKSPACE-GUIDANCE:START -->";
3
- export declare const WORKSPACE_GUIDANCE_END_MARKER = "<!-- OPENSPEC:WORKSPACE-GUIDANCE:END -->";
2
+ export declare const WORKSPACE_GUIDANCE_START_MARKER = "<!-- SYNARCX:WORKSPACE-GUIDANCE:START -->";
3
+ export declare const WORKSPACE_GUIDANCE_END_MARKER = "<!-- SYNARCX:WORKSPACE-GUIDANCE:END -->";
4
4
  export declare const WORKSPACE_GUIDANCE_BODY = "# synarcx Workspace Guidance\n\nThis directory is a synarcx workspace for planning across linked repos or folders.\n\n- Use `changes/` for workspace-level planning.\n- Linked repos and folders are available for exploration and planning.\n- Repo or folder visibility supports exploration and planning.\n- Make implementation edits after the user explicitly asks for implementation work.\n- Treat linked repos and folders as the implementation homes for their owned code.\n- Use synarcx workspace commands instead of hand-editing `.synarcx-workspace/*.yaml`.";
5
5
  export interface WorkspaceOpenLink {
6
6
  name: string;
@@ -3,17 +3,17 @@ import * as path from 'node:path';
3
3
  import { FileSystemUtils } from '../../utils/file-system.js';
4
4
  import { getWorkspaceCodeWorkspacePath, getWorkspacePortableIgnorePatterns, } from './foundation.js';
5
5
  const fs = nodeFs.promises;
6
- export const WORKSPACE_GUIDANCE_START_MARKER = '<!-- OPENSPEC:WORKSPACE-GUIDANCE:START -->';
7
- export const WORKSPACE_GUIDANCE_END_MARKER = '<!-- OPENSPEC:WORKSPACE-GUIDANCE:END -->';
8
- export const WORKSPACE_GUIDANCE_BODY = `# synarcx Workspace Guidance
9
-
10
- This directory is a synarcx workspace for planning across linked repos or folders.
11
-
12
- - Use \`changes/\` for workspace-level planning.
13
- - Linked repos and folders are available for exploration and planning.
14
- - Repo or folder visibility supports exploration and planning.
15
- - Make implementation edits after the user explicitly asks for implementation work.
16
- - Treat linked repos and folders as the implementation homes for their owned code.
6
+ export const WORKSPACE_GUIDANCE_START_MARKER = '<!-- SYNARCX:WORKSPACE-GUIDANCE:START -->';
7
+ export const WORKSPACE_GUIDANCE_END_MARKER = '<!-- SYNARCX:WORKSPACE-GUIDANCE:END -->';
8
+ export const WORKSPACE_GUIDANCE_BODY = `# synarcx Workspace Guidance
9
+
10
+ This directory is a synarcx workspace for planning across linked repos or folders.
11
+
12
+ - Use \`changes/\` for workspace-level planning.
13
+ - Linked repos and folders are available for exploration and planning.
14
+ - Repo or folder visibility supports exploration and planning.
15
+ - Make implementation edits after the user explicitly asks for implementation work.
16
+ - Treat linked repos and folders as the implementation homes for their owned code.
17
17
  - Use synarcx workspace commands instead of hand-editing \`.synarcx-workspace/*.yaml\`.`;
18
18
  async function fileExists(filePath) {
19
19
  try {
@@ -32,8 +32,8 @@ async function directoryExists(dirPath) {
32
32
  }
33
33
  }
34
34
  export function buildWorkspaceGuidanceBlock() {
35
- return `${WORKSPACE_GUIDANCE_START_MARKER}
36
- ${WORKSPACE_GUIDANCE_BODY}
35
+ return `${WORKSPACE_GUIDANCE_START_MARKER}
36
+ ${WORKSPACE_GUIDANCE_BODY}
37
37
  ${WORKSPACE_GUIDANCE_END_MARKER}`;
38
38
  }
39
39
  export function applyWorkspaceGuidanceBlock(existingContent) {
package/package.json CHANGED
@@ -1,76 +1,84 @@
1
- {
2
- "name": "synarcx",
3
- "version": "0.1.0",
4
- "description": "SynArcXSynapse Architecture Code Extension. Spec-driven development workflow for AI coding agents.",
5
- "keywords": [
6
- "synarcx",
7
- "specs",
8
- "cli",
9
- "ai",
10
- "development"
11
- ],
12
- "homepage": "https://github.com/funara/synarcx",
13
- "repository": {
14
- "type": "git",
15
- "url": "git+https://github.com/funara/synarcx.git"
16
- },
17
- "license": "MIT",
18
- "author": "Adhi Rahmadian",
19
- "type": "module",
20
- "publishConfig": {
21
- "access": "public"
22
- },
23
- "exports": {
24
- ".": {
25
- "types": "./dist/index.d.ts",
26
- "default": "./dist/index.js"
27
- }
28
- },
29
- "bin": {
30
- "synarcx": "bin/synarcx.js"
31
- },
32
- "files": [
33
- "dist",
34
- "bin",
35
- "schemas",
36
- "scripts/postinstall.js",
37
- "!dist/**/*.test.js",
38
- "!dist/**/__tests__",
39
- "!dist/**/*.map"
40
- ],
41
- "scripts": {
42
- "lint": "eslint src/",
43
- "build": "node build.js",
44
- "dev": "tsc --watch",
45
- "dev:cli": "pnpm build && node bin/synarcx.js",
46
- "test": "vitest run",
47
- "test:watch": "vitest",
48
- "test:ui": "vitest --ui",
49
- "test:coverage": "vitest --coverage",
50
- "test:postinstall": "node scripts/postinstall.js",
51
- "prepare": "pnpm run build",
52
- "postinstall": "node scripts/postinstall.js"
53
- },
54
- "engines": {
55
- "node": ">=20.19.0"
56
- },
57
- "devDependencies": {
58
- "@types/node": "^24.2.0",
59
- "@vitest/ui": "^3.2.4",
60
- "eslint": "^9.39.2",
61
- "typescript": "^5.9.3",
62
- "typescript-eslint": "^8.50.1",
63
- "vitest": "^3.2.4"
64
- },
65
- "dependencies": {
66
- "@inquirer/core": "^10.2.2",
67
- "@inquirer/prompts": "^7.8.0",
68
- "chalk": "^5.5.0",
69
- "commander": "^14.0.0",
70
- "cross-spawn": "7.0.6",
71
- "fast-glob": "^3.3.3",
72
- "ora": "^8.2.0",
73
- "yaml": "^2.8.2",
74
- "zod": "^4.0.17"
75
- }
76
- }
1
+ {
2
+ "name": "synarcx",
3
+ "version": "0.2.1",
4
+ "description": "Structured engineering workflows for AI coding assistants persistent project memory, spec-driven development, and architecture drift prevention across every session.",
5
+ "keywords": [
6
+ "ai-workflow",
7
+ "claude-code",
8
+ "cursor",
9
+ "spec-driven-development",
10
+ "ai-coding-assistant",
11
+ "architecture-drift",
12
+ "persistent-context",
13
+ "engineering-workflow",
14
+ "ai-coding-workflow",
15
+ "specification",
16
+ "claude-code-workflow",
17
+ "ai-context-management"
18
+ ],
19
+ "homepage": "https://github.com/funara/synarcx",
20
+ "repository": {
21
+ "type": "git",
22
+ "url": "git+https://github.com/funara/synarcx.git"
23
+ },
24
+ "license": "MIT",
25
+ "author": "Adhi Rahmadian",
26
+ "type": "module",
27
+ "publishConfig": {
28
+ "access": "public"
29
+ },
30
+ "exports": {
31
+ ".": {
32
+ "types": "./dist/index.d.ts",
33
+ "default": "./dist/index.js"
34
+ }
35
+ },
36
+ "bin": {
37
+ "synarcx": "bin/synarcx.js"
38
+ },
39
+ "files": [
40
+ "dist",
41
+ "bin",
42
+ "schemas",
43
+ "scripts/postinstall.js",
44
+ "!dist/**/*.test.js",
45
+ "!dist/**/__tests__",
46
+ "!dist/**/*.map"
47
+ ],
48
+ "scripts": {
49
+ "lint": "eslint src/",
50
+ "build": "node build.js",
51
+ "dev": "tsc --watch",
52
+ "dev:cli": "pnpm build && node bin/synarcx.js",
53
+ "test": "vitest run",
54
+ "test:watch": "vitest",
55
+ "test:ui": "vitest --ui",
56
+ "test:coverage": "vitest --coverage",
57
+ "test:postinstall": "node scripts/postinstall.js",
58
+ "prepare": "pnpm run build",
59
+ "postinstall": "node scripts/postinstall.js"
60
+ },
61
+ "engines": {
62
+ "node": ">=20.19.0"
63
+ },
64
+ "devDependencies": {
65
+ "@types/node": "^24.2.0",
66
+ "@vitest/ui": "^3.2.4",
67
+ "eslint": "^9.39.2",
68
+ "typescript": "^5.9.3",
69
+ "typescript-eslint": "^8.50.1",
70
+ "vitest": "^3.2.4"
71
+ },
72
+ "dependencies": {
73
+ "@inquirer/core": "^10.2.2",
74
+ "@inquirer/prompts": "^7.8.0",
75
+ "chalk": "^5.5.0",
76
+ "commander": "^14.0.0",
77
+ "cross-spawn": "7.0.6",
78
+ "fast-glob": "^3.3.3",
79
+ "ora": "^8.2.0",
80
+ "synarcx": "link:",
81
+ "yaml": "^2.8.2",
82
+ "zod": "^4.0.17"
83
+ }
84
+ }