@millstone/synapse-site 0.1.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.
- package/README.md +194 -0
- package/decap/build-config.ts +435 -0
- package/decap/build-vault-index.ts +178 -0
- package/decap/validate-browser.ts +638 -0
- package/package.json +67 -0
- package/plugins/CustomHeaderFooter.ts +387 -0
- package/quartz.config.ts +107 -0
- package/quartz.layout.ts +124 -0
- package/setup-quartz.ts +151 -0
- package/static/edit/body-grammars/index.json +1532 -0
- package/static/edit/config.yml +1393 -0
- package/static/edit/index.html +402 -0
- package/static/edit/schemas/index.json +1477 -0
- package/static/edit/validate.bundle.js +22720 -0
- package/static/edit/vault-index.json +78 -0
- package/sync-plugins.ts +126 -0
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
{
|
|
2
|
+
"generatedAt": "2026-02-15T19:10:16.922Z",
|
|
3
|
+
"fileCount": 35,
|
|
4
|
+
"targets": [
|
|
5
|
+
"ai-tooling-reference-hardware",
|
|
6
|
+
"claude-code-claude-agent-sdk-migration",
|
|
7
|
+
"claude-code-github-actions",
|
|
8
|
+
"claude-code-gitlab-ci-cd",
|
|
9
|
+
"claude-code-headless",
|
|
10
|
+
"claude-code-hooks",
|
|
11
|
+
"claude-code-mcp",
|
|
12
|
+
"claude-code-output-styles",
|
|
13
|
+
"claude-code-overview",
|
|
14
|
+
"claude-code-plugins",
|
|
15
|
+
"claude-code-security",
|
|
16
|
+
"claude-code-settings",
|
|
17
|
+
"claude-code-skills",
|
|
18
|
+
"claude-code-slash-commands",
|
|
19
|
+
"claude-code-sub-agents",
|
|
20
|
+
"deepwiki-integration-technical-design",
|
|
21
|
+
"example-change-control-standard",
|
|
22
|
+
"example-change-management-capability",
|
|
23
|
+
"example-change-management-policy",
|
|
24
|
+
"example-change-management-process",
|
|
25
|
+
"example-choose-quartz-4-adr",
|
|
26
|
+
"example-engineering-evaluation-scorecard",
|
|
27
|
+
"example-investment-committee-meeting",
|
|
28
|
+
"example-observability-initiative-prd",
|
|
29
|
+
"example-payments-api-prd",
|
|
30
|
+
"example-payments-api-tdd",
|
|
31
|
+
"example-production-deployment-sop",
|
|
32
|
+
"example-service-outage-runbook",
|
|
33
|
+
"example-tech-dd-scorecard",
|
|
34
|
+
"fork-to-npm-migration-process",
|
|
35
|
+
"npm-package-release-process",
|
|
36
|
+
"payments-api-system",
|
|
37
|
+
"synapse-docs-index",
|
|
38
|
+
"synapse-docs-reference-guidelines",
|
|
39
|
+
"synapse-documentation-framework-prd"
|
|
40
|
+
],
|
|
41
|
+
"paths": [
|
|
42
|
+
"100_Products/PRDs/examples/example-observability-initiative-prd.md",
|
|
43
|
+
"100_Products/PRDs/examples/example-payments-api-prd.md",
|
|
44
|
+
"100_Products/PRDs/synapse-documentation-framework-prd.md",
|
|
45
|
+
"10_Policies/examples/example-change-management-policy.md",
|
|
46
|
+
"110_Capabilities/examples/example-change-management-capability.md",
|
|
47
|
+
"200_References/claude-code-claude-agent-sdk-migration.md",
|
|
48
|
+
"200_References/claude-code-github-actions.md",
|
|
49
|
+
"200_References/claude-code-gitlab-ci-cd.md",
|
|
50
|
+
"200_References/claude-code-headless.md",
|
|
51
|
+
"200_References/claude-code-hooks.md",
|
|
52
|
+
"200_References/claude-code-mcp.md",
|
|
53
|
+
"200_References/claude-code-output-styles.md",
|
|
54
|
+
"200_References/claude-code-overview.md",
|
|
55
|
+
"200_References/claude-code-plugins.md",
|
|
56
|
+
"200_References/claude-code-security.md",
|
|
57
|
+
"200_References/claude-code-settings.md",
|
|
58
|
+
"200_References/claude-code-skills.md",
|
|
59
|
+
"200_References/claude-code-slash-commands.md",
|
|
60
|
+
"200_References/claude-code-sub-agents.md",
|
|
61
|
+
"200_References/synapse-docs-index.md",
|
|
62
|
+
"200_References/synapse-docs-reference-guidelines.md",
|
|
63
|
+
"20_Standards/ai-tooling-reference-hardware.md",
|
|
64
|
+
"20_Standards/examples/example-change-control-standard.md",
|
|
65
|
+
"30_Processes/examples/example-change-management-process.md",
|
|
66
|
+
"30_Processes/fork-to-npm-migration-process.md",
|
|
67
|
+
"30_Processes/npm-package-release-process.md",
|
|
68
|
+
"40_SOPs/examples/example-production-deployment-sop.md",
|
|
69
|
+
"50_Runbooks/examples/example-service-outage-runbook.md",
|
|
70
|
+
"60_Meetings/examples/example-investment-committee-meeting.md",
|
|
71
|
+
"70_Systems/examples/payments-api-system.md",
|
|
72
|
+
"80_Scorecards/examples/example-engineering-evaluation-scorecard.md",
|
|
73
|
+
"80_Scorecards/examples/example-tech-dd-scorecard.md",
|
|
74
|
+
"90_Architecture/ADRs/examples/example-choose-quartz-4-adr.md",
|
|
75
|
+
"90_Architecture/TDDs/deepwiki-integration-technical-design.md",
|
|
76
|
+
"90_Architecture/TDDs/examples/example-payments-api-tdd.md"
|
|
77
|
+
]
|
|
78
|
+
}
|
package/sync-plugins.ts
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
#!/usr/bin/env tsx
|
|
2
|
+
|
|
3
|
+
import { execSync } from 'child_process';
|
|
4
|
+
import { existsSync, copyFileSync, lstatSync, unlinkSync, rmSync } from 'fs';
|
|
5
|
+
import { join, resolve } from 'path';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Lightweight sync script for plugins, config, and content
|
|
9
|
+
* Ensures all assets are up-to-date before each build
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
const SITE_DIR = resolve(import.meta.dirname);
|
|
13
|
+
const PROJECT_ROOT = resolve(SITE_DIR, '../..');
|
|
14
|
+
const PLUGINS_DIR = join(SITE_DIR, 'plugins');
|
|
15
|
+
const QUARTZ_DIR = join(SITE_DIR, 'quartz');
|
|
16
|
+
const QUARTZ_PLUGINS_DIR = join(QUARTZ_DIR, 'plugins');
|
|
17
|
+
const QUARTZ_CONTENT_DIR = join(QUARTZ_DIR, 'content');
|
|
18
|
+
const QUARTZ_PUBLIC_DIR = join(QUARTZ_DIR, 'public');
|
|
19
|
+
const CONTENT_DIR = join(PROJECT_ROOT, 'content');
|
|
20
|
+
const STATIC_EDIT_DIR = join(SITE_DIR, 'static/edit');
|
|
21
|
+
const CONFIG_FILE = 'quartz.config.ts';
|
|
22
|
+
|
|
23
|
+
// Only sync if quartz directory exists
|
|
24
|
+
if (existsSync(QUARTZ_DIR)) {
|
|
25
|
+
let synced = [];
|
|
26
|
+
|
|
27
|
+
// Sync plugins directory
|
|
28
|
+
if (existsSync(PLUGINS_DIR)) {
|
|
29
|
+
try {
|
|
30
|
+
// Use rsync for efficient syncing (only copies changed files)
|
|
31
|
+
execSync(`rsync -a --delete "${PLUGINS_DIR}/" "${QUARTZ_PLUGINS_DIR}/"`, {
|
|
32
|
+
stdio: 'pipe'
|
|
33
|
+
});
|
|
34
|
+
synced.push('plugins');
|
|
35
|
+
} catch (error) {
|
|
36
|
+
// Fallback to cp if rsync isn't available
|
|
37
|
+
try {
|
|
38
|
+
execSync(`rm -rf "${QUARTZ_PLUGINS_DIR}" && cp -r "${PLUGINS_DIR}" "${QUARTZ_PLUGINS_DIR}"`, {
|
|
39
|
+
stdio: 'pipe'
|
|
40
|
+
});
|
|
41
|
+
synced.push('plugins');
|
|
42
|
+
} catch (cpError) {
|
|
43
|
+
console.error('Warning: Could not sync plugins directory');
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// Sync config file
|
|
49
|
+
const sourceConfig = join(SITE_DIR, CONFIG_FILE);
|
|
50
|
+
const destConfig = join(QUARTZ_DIR, CONFIG_FILE);
|
|
51
|
+
|
|
52
|
+
if (existsSync(sourceConfig)) {
|
|
53
|
+
try {
|
|
54
|
+
copyFileSync(sourceConfig, destConfig);
|
|
55
|
+
synced.push('config');
|
|
56
|
+
} catch (error) {
|
|
57
|
+
console.error('Warning: Could not sync config file');
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// Sync content directory (remove symlink if exists, then rsync)
|
|
62
|
+
if (existsSync(CONTENT_DIR)) {
|
|
63
|
+
try {
|
|
64
|
+
// Remove symlink if it exists
|
|
65
|
+
if (existsSync(QUARTZ_CONTENT_DIR)) {
|
|
66
|
+
const stats = lstatSync(QUARTZ_CONTENT_DIR);
|
|
67
|
+
if (stats.isSymbolicLink()) {
|
|
68
|
+
unlinkSync(QUARTZ_CONTENT_DIR);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// Use rsync for efficient syncing
|
|
73
|
+
execSync(`rsync -a --delete "${CONTENT_DIR}/" "${QUARTZ_CONTENT_DIR}/"`, {
|
|
74
|
+
stdio: 'pipe'
|
|
75
|
+
});
|
|
76
|
+
synced.push('content');
|
|
77
|
+
} catch (error) {
|
|
78
|
+
// Fallback to cp if rsync isn't available
|
|
79
|
+
try {
|
|
80
|
+
if (existsSync(QUARTZ_CONTENT_DIR)) {
|
|
81
|
+
rmSync(QUARTZ_CONTENT_DIR, { recursive: true, force: true });
|
|
82
|
+
}
|
|
83
|
+
execSync(`cp -r "${CONTENT_DIR}" "${QUARTZ_CONTENT_DIR}"`, {
|
|
84
|
+
stdio: 'pipe'
|
|
85
|
+
});
|
|
86
|
+
synced.push('content');
|
|
87
|
+
} catch (cpError) {
|
|
88
|
+
console.error('Warning: Could not sync content directory');
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// Sync edit directory to public (for Decap CMS)
|
|
94
|
+
if (existsSync(STATIC_EDIT_DIR)) {
|
|
95
|
+
const editOutputDir = join(QUARTZ_PUBLIC_DIR, 'edit');
|
|
96
|
+
try {
|
|
97
|
+
// Ensure public directory exists
|
|
98
|
+
if (!existsSync(QUARTZ_PUBLIC_DIR)) {
|
|
99
|
+
execSync(`mkdir -p "${QUARTZ_PUBLIC_DIR}"`, { stdio: 'pipe' });
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// Use rsync for efficient syncing
|
|
103
|
+
execSync(`rsync -a --delete "${STATIC_EDIT_DIR}/" "${editOutputDir}/"`, {
|
|
104
|
+
stdio: 'pipe'
|
|
105
|
+
});
|
|
106
|
+
synced.push('edit');
|
|
107
|
+
} catch (error) {
|
|
108
|
+
// Fallback to cp if rsync isn't available
|
|
109
|
+
try {
|
|
110
|
+
if (existsSync(editOutputDir)) {
|
|
111
|
+
rmSync(editOutputDir, { recursive: true, force: true });
|
|
112
|
+
}
|
|
113
|
+
execSync(`cp -r "${STATIC_EDIT_DIR}" "${editOutputDir}"`, {
|
|
114
|
+
stdio: 'pipe'
|
|
115
|
+
});
|
|
116
|
+
synced.push('edit');
|
|
117
|
+
} catch (cpError) {
|
|
118
|
+
console.error('Warning: Could not sync edit directory');
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
if (synced.length > 0) {
|
|
124
|
+
console.log(`✓ Synced: ${synced.join(', ')}`);
|
|
125
|
+
}
|
|
126
|
+
}
|