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.
- package/README.md +240 -34
- package/dist/commands/config.js +7 -6
- package/dist/core/command-generation/adapters/bob.js +7 -20
- package/dist/core/command-generation/adapters/claude.js +9 -29
- package/dist/core/command-generation/adapters/cursor.js +9 -22
- package/dist/core/command-generation/adapters/pi.js +6 -19
- package/dist/core/command-generation/adapters/windsurf.js +9 -29
- package/dist/core/command-generation/yaml-utils.d.ts +3 -0
- package/dist/core/command-generation/yaml-utils.js +12 -0
- package/dist/core/completions/installers/bash-installer.d.ts +1 -0
- package/dist/core/completions/installers/bash-installer.js +14 -3
- package/dist/core/completions/installers/powershell-installer.d.ts +1 -0
- package/dist/core/completions/installers/powershell-installer.js +18 -10
- package/dist/core/config.js +0 -3
- package/dist/core/index.js +1 -1
- package/dist/core/init.d.ts +0 -2
- package/dist/core/init.js +27 -75
- package/dist/core/migration.js +1 -2
- package/dist/core/profile-sync-drift.d.ts +0 -7
- package/dist/core/profile-sync-drift.js +2 -15
- package/dist/core/profiles.d.ts +0 -11
- package/dist/core/profiles.js +1 -18
- package/dist/core/shared/artifact-cleanup.d.ts +5 -0
- package/dist/core/shared/artifact-cleanup.js +89 -0
- package/dist/core/shared/skill-generation.js +5 -1
- package/dist/core/shared/tool-detection.d.ts +4 -10
- package/dist/core/shared/tool-detection.js +3 -27
- package/dist/core/shared/workflow-registry.d.ts +40 -0
- package/dist/core/shared/workflow-registry.js +19 -0
- package/dist/core/templates/skill-templates.d.ts +2 -0
- package/dist/core/templates/skill-templates.js +2 -0
- package/dist/core/templates/types.d.ts +7 -0
- package/dist/core/templates/types.js +9 -1
- package/dist/core/templates/workflows/analyze.js +84 -84
- package/dist/core/templates/workflows/apply-change.js +291 -291
- package/dist/core/templates/workflows/archive-change.js +254 -254
- package/dist/core/templates/workflows/clarify.js +91 -91
- package/dist/core/templates/workflows/debug.js +104 -104
- package/dist/core/templates/workflows/explore.js +462 -462
- package/dist/core/templates/workflows/propose.js +199 -199
- package/dist/core/templates/workflows/quick.d.ts +4 -0
- package/dist/core/templates/workflows/quick.js +129 -0
- package/dist/core/templates/workflows/refactor.d.ts +4 -0
- package/dist/core/templates/workflows/refactor.js +126 -0
- package/dist/core/templates/workflows/sync.js +152 -95
- package/dist/core/update.d.ts +1 -21
- package/dist/core/update.js +18 -117
- package/dist/core/view.js +8 -8
- package/dist/core/workspace/open-surface.d.ts +2 -2
- package/dist/core/workspace/open-surface.js +13 -13
- 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
|
|
10
|
-
if (!fs.existsSync(
|
|
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(
|
|
18
|
-
const specsData = await this.getSpecsData(
|
|
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(
|
|
64
|
-
const changesDir = path.join(
|
|
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(
|
|
105
|
-
const specsDir = path.join(
|
|
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 = "<!--
|
|
3
|
-
export declare const WORKSPACE_GUIDANCE_END_MARKER = "<!--
|
|
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 = '<!--
|
|
7
|
-
export const WORKSPACE_GUIDANCE_END_MARKER = '<!--
|
|
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
|
|
4
|
-
"description": "
|
|
5
|
-
"keywords": [
|
|
6
|
-
"
|
|
7
|
-
"
|
|
8
|
-
"
|
|
9
|
-
"
|
|
10
|
-
"
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
"
|
|
15
|
-
"
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
"
|
|
20
|
-
"
|
|
21
|
-
"
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
"
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
"
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
"
|
|
50
|
-
"
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
"
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
"
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
"@
|
|
67
|
-
"
|
|
68
|
-
"
|
|
69
|
-
"
|
|
70
|
-
"
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
"
|
|
74
|
-
"
|
|
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
|
+
}
|