trinity-method-sdk 2.0.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 (191) hide show
  1. package/CHANGELOG.md +116 -0
  2. package/LICENSE +21 -0
  3. package/README.md +555 -0
  4. package/dist/cli/commands/deploy/agents.d.ts +14 -0
  5. package/dist/cli/commands/deploy/agents.js +59 -0
  6. package/dist/cli/commands/deploy/ci-cd.d.ts +13 -0
  7. package/dist/cli/commands/deploy/ci-cd.js +50 -0
  8. package/dist/cli/commands/deploy/claude-setup.d.ts +17 -0
  9. package/dist/cli/commands/deploy/claude-setup.js +91 -0
  10. package/dist/cli/commands/deploy/configuration.d.ts +13 -0
  11. package/dist/cli/commands/deploy/configuration.js +215 -0
  12. package/dist/cli/commands/deploy/directories.d.ts +12 -0
  13. package/dist/cli/commands/deploy/directories.js +38 -0
  14. package/dist/cli/commands/deploy/gitignore.d.ts +12 -0
  15. package/dist/cli/commands/deploy/gitignore.js +53 -0
  16. package/dist/cli/commands/deploy/index.d.ts +38 -0
  17. package/dist/cli/commands/deploy/index.js +156 -0
  18. package/dist/cli/commands/deploy/knowledge-base.d.ts +16 -0
  19. package/dist/cli/commands/deploy/knowledge-base.js +75 -0
  20. package/dist/cli/commands/deploy/linting.d.ts +18 -0
  21. package/dist/cli/commands/deploy/linting.js +51 -0
  22. package/dist/cli/commands/deploy/metrics.d.ts +13 -0
  23. package/dist/cli/commands/deploy/metrics.js +34 -0
  24. package/dist/cli/commands/deploy/pre-flight.d.ts +13 -0
  25. package/dist/cli/commands/deploy/pre-flight.js +29 -0
  26. package/dist/cli/commands/deploy/root-files.d.ts +16 -0
  27. package/dist/cli/commands/deploy/root-files.js +178 -0
  28. package/dist/cli/commands/deploy/sdk-install.d.ts +12 -0
  29. package/dist/cli/commands/deploy/sdk-install.js +57 -0
  30. package/dist/cli/commands/deploy/summary.d.ts +14 -0
  31. package/dist/cli/commands/deploy/summary.js +130 -0
  32. package/dist/cli/commands/deploy/templates.d.ts +14 -0
  33. package/dist/cli/commands/deploy/templates.js +84 -0
  34. package/dist/cli/commands/deploy/types.d.ts +39 -0
  35. package/dist/cli/commands/deploy/types.js +5 -0
  36. package/dist/cli/commands/update/agents.d.ts +14 -0
  37. package/dist/cli/commands/update/agents.js +31 -0
  38. package/dist/cli/commands/update/backup.d.ts +31 -0
  39. package/dist/cli/commands/update/backup.js +97 -0
  40. package/dist/cli/commands/update/commands.d.ts +14 -0
  41. package/dist/cli/commands/update/commands.js +75 -0
  42. package/dist/cli/commands/update/index.d.ts +15 -0
  43. package/dist/cli/commands/update/index.js +118 -0
  44. package/dist/cli/commands/update/knowledge-base.d.ts +14 -0
  45. package/dist/cli/commands/update/knowledge-base.js +38 -0
  46. package/dist/cli/commands/update/pre-flight.d.ts +13 -0
  47. package/dist/cli/commands/update/pre-flight.js +37 -0
  48. package/dist/cli/commands/update/summary.d.ts +20 -0
  49. package/dist/cli/commands/update/summary.js +47 -0
  50. package/dist/cli/commands/update/templates.d.ts +14 -0
  51. package/dist/cli/commands/update/templates.js +25 -0
  52. package/dist/cli/commands/update/types.d.ts +13 -0
  53. package/dist/cli/commands/update/types.js +7 -0
  54. package/dist/cli/commands/update/utils.d.ts +11 -0
  55. package/dist/cli/commands/update/utils.js +19 -0
  56. package/dist/cli/commands/update/verification.d.ts +20 -0
  57. package/dist/cli/commands/update/verification.js +54 -0
  58. package/dist/cli/commands/update/version.d.ts +18 -0
  59. package/dist/cli/commands/update/version.js +36 -0
  60. package/dist/cli/commands/update.d.ts +7 -0
  61. package/dist/cli/commands/update.js +7 -0
  62. package/dist/cli/index.d.ts +3 -0
  63. package/dist/cli/index.js +36 -0
  64. package/dist/cli/types.d.ts +77 -0
  65. package/dist/cli/types.js +5 -0
  66. package/dist/cli/utils/deploy-ci.d.ts +22 -0
  67. package/dist/cli/utils/deploy-ci.js +138 -0
  68. package/dist/cli/utils/deploy-linting.d.ts +3 -0
  69. package/dist/cli/utils/deploy-linting.js +136 -0
  70. package/dist/cli/utils/detect-stack.d.ts +3 -0
  71. package/dist/cli/utils/detect-stack.js +270 -0
  72. package/dist/cli/utils/error-classes.d.ts +63 -0
  73. package/dist/cli/utils/error-classes.js +84 -0
  74. package/dist/cli/utils/error-handler.d.ts +59 -0
  75. package/dist/cli/utils/error-handler.js +127 -0
  76. package/dist/cli/utils/errors.d.ts +52 -0
  77. package/dist/cli/utils/errors.js +102 -0
  78. package/dist/cli/utils/get-sdk-path.d.ts +18 -0
  79. package/dist/cli/utils/get-sdk-path.js +31 -0
  80. package/dist/cli/utils/inject-dependencies.d.ts +2 -0
  81. package/dist/cli/utils/inject-dependencies.js +55 -0
  82. package/dist/cli/utils/linting-tools.d.ts +8 -0
  83. package/dist/cli/utils/linting-tools.js +206 -0
  84. package/dist/cli/utils/metrics/code-quality.d.ts +32 -0
  85. package/dist/cli/utils/metrics/code-quality.js +122 -0
  86. package/dist/cli/utils/metrics/dependency-parser.d.ts +21 -0
  87. package/dist/cli/utils/metrics/dependency-parser.js +153 -0
  88. package/dist/cli/utils/metrics/file-complexity.d.ts +26 -0
  89. package/dist/cli/utils/metrics/file-complexity.js +77 -0
  90. package/dist/cli/utils/metrics/framework-detector.d.ts +17 -0
  91. package/dist/cli/utils/metrics/framework-detector.js +120 -0
  92. package/dist/cli/utils/metrics/git-metrics.d.ts +30 -0
  93. package/dist/cli/utils/metrics/git-metrics.js +83 -0
  94. package/dist/cli/utils/metrics/index.d.ts +28 -0
  95. package/dist/cli/utils/metrics/index.js +100 -0
  96. package/dist/cli/utils/template-processor.d.ts +10 -0
  97. package/dist/cli/utils/template-processor.js +188 -0
  98. package/dist/cli/utils/validate-path.d.ts +80 -0
  99. package/dist/cli/utils/validate-path.js +180 -0
  100. package/dist/index.d.ts +6 -0
  101. package/dist/index.js +8 -0
  102. package/dist/templates/agents/aj-team/apo-documentation-specialist.md.template +572 -0
  103. package/dist/templates/agents/aj-team/bas-quality-gate.md.template +906 -0
  104. package/dist/templates/agents/aj-team/bon-dependency-manager.md.template +636 -0
  105. package/dist/templates/agents/aj-team/cap-configuration-specialist.md.template +670 -0
  106. package/dist/templates/agents/aj-team/dra-code-reviewer.md.template +768 -0
  107. package/dist/templates/agents/aj-team/kil-task-executor.md.template +764 -0
  108. package/dist/templates/agents/aj-team/uro-refactoring-specialist.md.template +759 -0
  109. package/dist/templates/agents/audit/juno-auditor.md.template +447 -0
  110. package/dist/templates/agents/deployment/ein-cicd.md.template +694 -0
  111. package/dist/templates/agents/deployment/ino-context.md.template +733 -0
  112. package/dist/templates/agents/deployment/tan-structure.md.template +661 -0
  113. package/dist/templates/agents/deployment/zen-knowledge.md.template +451 -0
  114. package/dist/templates/agents/leadership/aj-cc.md.template +462 -0
  115. package/dist/templates/agents/leadership/aj-maestro.md.template +943 -0
  116. package/dist/templates/agents/leadership/aly-cto.md.template +407 -0
  117. package/dist/templates/agents/planning/eus-decomposer.md.template +496 -0
  118. package/dist/templates/agents/planning/mon-requirements.md.template +323 -0
  119. package/dist/templates/agents/planning/ror-design.md.template +465 -0
  120. package/dist/templates/agents/planning/tra-planner.md.template +432 -0
  121. package/dist/templates/ci/cd.yml.template +175 -0
  122. package/dist/templates/ci/ci.yml.template +196 -0
  123. package/dist/templates/ci/generic-ci.yml +115 -0
  124. package/dist/templates/ci/github-actions.yml +86 -0
  125. package/dist/templates/ci/gitlab-ci.yml +103 -0
  126. package/dist/templates/claude/EMPLOYEE-DIRECTORY.md.template +545 -0
  127. package/dist/templates/documentation/ROOT-README.md.template +307 -0
  128. package/dist/templates/documentation/SUBDIRECTORY-README.md.template +261 -0
  129. package/dist/templates/investigations/bug.md.template +484 -0
  130. package/dist/templates/investigations/feature.md.template +564 -0
  131. package/dist/templates/investigations/performance.md.template +625 -0
  132. package/dist/templates/investigations/security.md.template +714 -0
  133. package/dist/templates/investigations/technical.md.template +433 -0
  134. package/dist/templates/knowledge-base/AI-DEVELOPMENT-GUIDE.md.template +957 -0
  135. package/dist/templates/knowledge-base/ARCHITECTURE.md.template +452 -0
  136. package/dist/templates/knowledge-base/CODING-PRINCIPLES.md.template +750 -0
  137. package/dist/templates/knowledge-base/DOCUMENTATION-CRITERIA.md.template +1118 -0
  138. package/dist/templates/knowledge-base/ISSUES.md.template +539 -0
  139. package/dist/templates/knowledge-base/TESTING-PRINCIPLES.md.template +894 -0
  140. package/dist/templates/knowledge-base/Technical-Debt.md.template +640 -0
  141. package/dist/templates/knowledge-base/To-do.md.template +407 -0
  142. package/dist/templates/knowledge-base/Trinity.md.template +464 -0
  143. package/dist/templates/linting/flutter/.pre-commit-config.yaml.template +27 -0
  144. package/dist/templates/linting/flutter/analysis_options.yaml.template +26 -0
  145. package/dist/templates/linting/nodejs/.eslintrc-commonjs.json.template +19 -0
  146. package/dist/templates/linting/nodejs/.eslintrc-esm.json.template +19 -0
  147. package/dist/templates/linting/nodejs/.eslintrc-typescript.json.template +22 -0
  148. package/dist/templates/linting/nodejs/.pre-commit-config.yaml.template +51 -0
  149. package/dist/templates/linting/nodejs/.prettierrc.json.template +10 -0
  150. package/dist/templates/linting/python/.flake8.template +16 -0
  151. package/dist/templates/linting/python/.pre-commit-config.yaml.template +30 -0
  152. package/dist/templates/linting/python/pyproject.toml.template +38 -0
  153. package/dist/templates/linting/rust/.pre-commit-config.yaml.template +28 -0
  154. package/dist/templates/linting/rust/clippy.toml.template +14 -0
  155. package/dist/templates/linting/rust/rustfmt.toml.template +12 -0
  156. package/dist/templates/root/CLAUDE.md.template +65 -0
  157. package/dist/templates/root/TRINITY.md.template +52 -0
  158. package/dist/templates/shared/claude-commands/trinity-agents.md.template +168 -0
  159. package/dist/templates/shared/claude-commands/trinity-audit.md.template +646 -0
  160. package/dist/templates/shared/claude-commands/trinity-changelog.md.template +624 -0
  161. package/dist/templates/shared/claude-commands/trinity-continue.md.template +549 -0
  162. package/dist/templates/shared/claude-commands/trinity-create-investigation.md.template +232 -0
  163. package/dist/templates/shared/claude-commands/trinity-decompose.md.template +181 -0
  164. package/dist/templates/shared/claude-commands/trinity-design.md.template +347 -0
  165. package/dist/templates/shared/claude-commands/trinity-docs.md.template +2093 -0
  166. package/dist/templates/shared/claude-commands/trinity-end.md.template +397 -0
  167. package/dist/templates/shared/claude-commands/trinity-init.md.template +606 -0
  168. package/dist/templates/shared/claude-commands/trinity-investigate-templates.md.template +725 -0
  169. package/dist/templates/shared/claude-commands/trinity-orchestrate.md.template +1061 -0
  170. package/dist/templates/shared/claude-commands/trinity-plan-investigation.md.template +135 -0
  171. package/dist/templates/shared/claude-commands/trinity-plan.md.template +201 -0
  172. package/dist/templates/shared/claude-commands/trinity-readme.md.template +1971 -0
  173. package/dist/templates/shared/claude-commands/trinity-requirements.md.template +148 -0
  174. package/dist/templates/shared/claude-commands/trinity-start.md.template +268 -0
  175. package/dist/templates/shared/claude-commands/trinity-verify.md.template +453 -0
  176. package/dist/templates/shared/claude-commands/trinity-workorder.md.template +249 -0
  177. package/dist/templates/source/base-CLAUDE.md.template +310 -0
  178. package/dist/templates/source/flutter-CLAUDE.md.template +593 -0
  179. package/dist/templates/source/nodejs-CLAUDE.md.template +531 -0
  180. package/dist/templates/source/python-CLAUDE.md.template +510 -0
  181. package/dist/templates/source/react-CLAUDE.md.template +513 -0
  182. package/dist/templates/source/rust-CLAUDE.md.template +653 -0
  183. package/dist/templates/source/tests-CLAUDE.md.template +432 -0
  184. package/dist/templates/trinity/CLAUDE.md.template +372 -0
  185. package/dist/templates/work-orders/ANALYSIS-TEMPLATE.md.template +276 -0
  186. package/dist/templates/work-orders/AUDIT-TEMPLATE.md.template +262 -0
  187. package/dist/templates/work-orders/IMPLEMENTATION-TEMPLATE.md.template +260 -0
  188. package/dist/templates/work-orders/INVESTIGATION-TEMPLATE.md.template +206 -0
  189. package/dist/templates/work-orders/PATTERN-TEMPLATE.md.template +320 -0
  190. package/dist/templates/work-orders/VERIFICATION-TEMPLATE.md.template +273 -0
  191. package/package.json +94 -0
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Agent configuration deployment
3
+ */
4
+ import type { Spinner } from './types.js';
5
+ /**
6
+ * Deploy Claude Code agent configurations
7
+ *
8
+ * @param templatesPath - Path to templates directory
9
+ * @param variables - Template variables for substitution
10
+ * @param spinner - Spinner instance for status updates
11
+ * @returns Number of agents deployed
12
+ */
13
+ export declare function deployAgents(templatesPath: string, variables: Record<string, string>, spinner: Spinner): Promise<number>;
14
+ //# sourceMappingURL=agents.d.ts.map
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Agent configuration deployment
3
+ */
4
+ import fs from 'fs-extra';
5
+ import path from 'path';
6
+ import { processTemplate } from '../../utils/template-processor.js';
7
+ import { validatePath } from '../../utils/validate-path.js';
8
+ /**
9
+ * Deploy Claude Code agent configurations
10
+ *
11
+ * @param templatesPath - Path to templates directory
12
+ * @param variables - Template variables for substitution
13
+ * @param spinner - Spinner instance for status updates
14
+ * @returns Number of agents deployed
15
+ */
16
+ export async function deployAgents(templatesPath, variables, spinner) {
17
+ spinner.start('Deploying Claude Code agents...');
18
+ let agentsDeployed = 0;
19
+ const agentDirs = [
20
+ { dir: 'leadership', agents: ['aly-cto.md', 'aj-maestro.md'] },
21
+ {
22
+ dir: 'deployment',
23
+ agents: ['tan-structure.md', 'zen-knowledge.md', 'ino-context.md', 'ein-cicd.md'],
24
+ },
25
+ { dir: 'audit', agents: ['juno-auditor.md'] },
26
+ {
27
+ dir: 'planning',
28
+ agents: ['mon-requirements.md', 'ror-design.md', 'tra-planner.md', 'eus-decomposer.md'],
29
+ },
30
+ {
31
+ dir: 'aj-team',
32
+ agents: [
33
+ 'kil-task-executor.md',
34
+ 'bas-quality-gate.md',
35
+ 'dra-code-reviewer.md',
36
+ 'apo-documentation-specialist.md',
37
+ 'bon-dependency-manager.md',
38
+ 'cap-configuration-specialist.md',
39
+ 'uro-refactoring-specialist.md',
40
+ ],
41
+ },
42
+ ];
43
+ for (const { dir, agents } of agentDirs) {
44
+ for (const agent of agents) {
45
+ const templatePath = path.join(templatesPath, 'agents', dir, `${agent}.template`);
46
+ if (await fs.pathExists(templatePath)) {
47
+ const content = await fs.readFile(templatePath, 'utf8');
48
+ const processed = processTemplate(content, variables);
49
+ // Validate destination path for security
50
+ const destPath = validatePath(`.claude/agents/${dir}/${agent}`);
51
+ await fs.writeFile(destPath, processed);
52
+ agentsDeployed++;
53
+ }
54
+ }
55
+ }
56
+ spinner.succeed(`Agents deployed (${agentsDeployed} agents)`);
57
+ return agentsDeployed;
58
+ }
59
+ //# sourceMappingURL=agents.js.map
@@ -0,0 +1,13 @@
1
+ /**
2
+ * CI/CD workflow deployment
3
+ */
4
+ import type { DeployOptions, Spinner } from './types.js';
5
+ /**
6
+ * Deploy CI/CD workflow templates
7
+ *
8
+ * @param options - Deploy command options
9
+ * @param spinner - Spinner instance for status updates
10
+ * @returns Number of files deployed
11
+ */
12
+ export declare function deployCICD(options: DeployOptions, spinner: Spinner): Promise<number>;
13
+ //# sourceMappingURL=ci-cd.d.ts.map
@@ -0,0 +1,50 @@
1
+ /**
2
+ * CI/CD workflow deployment
3
+ */
4
+ import chalk from 'chalk';
5
+ import { deployCITemplates } from '../../utils/deploy-ci.js';
6
+ /**
7
+ * Deploy CI/CD workflow templates
8
+ *
9
+ * @param options - Deploy command options
10
+ * @param spinner - Spinner instance for status updates
11
+ * @returns Number of files deployed
12
+ */
13
+ export async function deployCICD(options, spinner) {
14
+ if (!options.ciDeploy) {
15
+ return 0;
16
+ }
17
+ spinner.start('Deploying CI/CD workflow templates...');
18
+ try {
19
+ const ciStats = await deployCITemplates(options);
20
+ if (ciStats.deployed.length > 0) {
21
+ spinner.succeed(`CI/CD templates deployed (${ciStats.deployed.length} files)`);
22
+ ciStats.deployed.forEach((file) => {
23
+ console.log(chalk.white(` ✓ ${file}`));
24
+ });
25
+ }
26
+ else {
27
+ spinner.info('No CI/CD templates deployed');
28
+ }
29
+ if (ciStats.skipped.length > 0) {
30
+ console.log(chalk.yellow(' Skipped:'));
31
+ ciStats.skipped.forEach((file) => {
32
+ console.log(chalk.yellow(` - ${file}`));
33
+ });
34
+ }
35
+ if (ciStats.errors.length > 0) {
36
+ spinner.warn('Some CI/CD templates failed to deploy');
37
+ ciStats.errors.forEach((err) => {
38
+ console.log(chalk.red(` ✗ ${err.file || 'Error'}: ${err.error}`));
39
+ });
40
+ }
41
+ return ciStats.deployed.length;
42
+ }
43
+ catch (error) {
44
+ spinner.fail('CI/CD template deployment failed');
45
+ const { displayWarning, getErrorMessage } = await import('../../utils/errors.js');
46
+ displayWarning(getErrorMessage(error));
47
+ return 0;
48
+ }
49
+ }
50
+ //# sourceMappingURL=ci-cd.js.map
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Claude Code setup (settings, employee directory, commands)
3
+ */
4
+ import type { Spinner } from './types.js';
5
+ /**
6
+ * Deploy Claude Code configuration files
7
+ *
8
+ * @param templatesPath - Path to templates directory
9
+ * @param variables - Template variables for substitution
10
+ * @param spinner - Spinner instance for status updates
11
+ * @returns Object with filesDeployed and commandsDeployed counts
12
+ */
13
+ export declare function deployClaudeSetup(templatesPath: string, variables: Record<string, string>, spinner: Spinner): Promise<{
14
+ filesDeployed: number;
15
+ commandsDeployed: number;
16
+ }>;
17
+ //# sourceMappingURL=claude-setup.d.ts.map
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Claude Code setup (settings, employee directory, commands)
3
+ */
4
+ import fs from 'fs-extra';
5
+ import path from 'path';
6
+ import { processTemplate } from '../../utils/template-processor.js';
7
+ import { validatePath } from '../../utils/validate-path.js';
8
+ /**
9
+ * Deploy Claude Code configuration files
10
+ *
11
+ * @param templatesPath - Path to templates directory
12
+ * @param variables - Template variables for substitution
13
+ * @param spinner - Spinner instance for status updates
14
+ * @returns Object with filesDeployed and commandsDeployed counts
15
+ */
16
+ export async function deployClaudeSetup(templatesPath, variables, spinner) {
17
+ let filesDeployed = 0;
18
+ let commandsDeployed = 0;
19
+ // Deploy settings.json (empty - users can configure manually)
20
+ spinner.start('Creating Claude Code settings...');
21
+ const settingsPath = '.claude/settings.json';
22
+ if (!(await fs.pathExists(settingsPath))) {
23
+ await fs.writeJson(settingsPath, {}, { spaces: 2 });
24
+ filesDeployed++;
25
+ }
26
+ spinner.succeed('Claude Code settings created (empty - customize as needed)');
27
+ // Deploy Employee Directory
28
+ spinner.start('Deploying Employee Directory...');
29
+ const employeeDirectoryTemplate = path.join(templatesPath, 'claude', 'EMPLOYEE-DIRECTORY.md.template');
30
+ if (await fs.pathExists(employeeDirectoryTemplate)) {
31
+ const content = await fs.readFile(employeeDirectoryTemplate, 'utf8');
32
+ const processed = processTemplate(content, variables);
33
+ // Validate destination path for security
34
+ const destPath = validatePath('.claude/EMPLOYEE-DIRECTORY.md');
35
+ await fs.writeFile(destPath, processed);
36
+ filesDeployed++;
37
+ spinner.succeed('Employee Directory deployed');
38
+ }
39
+ else {
40
+ spinner.warn('Employee Directory template not found');
41
+ }
42
+ // Deploy slash commands (categorized)
43
+ spinner.start('Deploying Trinity slash commands...');
44
+ const commandsDir = '.claude/commands';
45
+ // Create categorized subdirectories
46
+ await fs.ensureDir(`${commandsDir}/session`);
47
+ await fs.ensureDir(`${commandsDir}/planning`);
48
+ await fs.ensureDir(`${commandsDir}/execution`);
49
+ await fs.ensureDir(`${commandsDir}/investigation`);
50
+ await fs.ensureDir(`${commandsDir}/infrastructure`);
51
+ await fs.ensureDir(`${commandsDir}/utility`);
52
+ // Command categorization map
53
+ const commandCategories = {
54
+ 'trinity-start.md.template': 'session',
55
+ 'trinity-continue.md.template': 'session',
56
+ 'trinity-end.md.template': 'session',
57
+ 'trinity-requirements.md.template': 'planning',
58
+ 'trinity-design.md.template': 'planning',
59
+ 'trinity-decompose.md.template': 'planning',
60
+ 'trinity-plan.md.template': 'planning',
61
+ 'trinity-orchestrate.md.template': 'execution',
62
+ 'trinity-audit.md.template': 'execution',
63
+ 'trinity-readme.md.template': 'execution',
64
+ 'trinity-docs.md.template': 'execution',
65
+ 'trinity-changelog.md.template': 'execution',
66
+ 'trinity-create-investigation.md.template': 'investigation',
67
+ 'trinity-plan-investigation.md.template': 'investigation',
68
+ 'trinity-investigate-templates.md.template': 'investigation',
69
+ 'trinity-init.md.template': 'infrastructure',
70
+ 'trinity-agents.md.template': 'utility',
71
+ 'trinity-verify.md.template': 'utility',
72
+ 'trinity-workorder.md.template': 'utility',
73
+ };
74
+ const commandsTemplatePath = path.join(templatesPath, 'shared/claude-commands');
75
+ const commandFiles = await fs.readdir(commandsTemplatePath);
76
+ for (const file of commandFiles) {
77
+ if (file.endsWith('.md.template') && commandCategories[file]) {
78
+ const sourcePath = path.join(commandsTemplatePath, file);
79
+ const category = commandCategories[file];
80
+ // Remove .template extension for deployed files
81
+ const deployedName = file.replace('.template', '');
82
+ const destPath = path.join(commandsDir, category, deployedName);
83
+ await fs.copy(sourcePath, destPath);
84
+ commandsDeployed++;
85
+ filesDeployed++;
86
+ }
87
+ }
88
+ spinner.succeed(`Deployed ${commandsDeployed} Trinity slash commands (6 categories)`);
89
+ return { filesDeployed, commandsDeployed };
90
+ }
91
+ //# sourceMappingURL=claude-setup.js.map
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Interactive configuration for Trinity deployment
3
+ */
4
+ import type { DeployOptions, DeployConfig, Stack } from './types.js';
5
+ /**
6
+ * Prompt user for deployment configuration
7
+ *
8
+ * @param options - Deploy command options
9
+ * @param stack - Detected technology stack
10
+ * @returns Deployment configuration
11
+ */
12
+ export declare function promptConfiguration(options: DeployOptions, stack: Stack): Promise<Partial<DeployConfig>>;
13
+ //# sourceMappingURL=configuration.d.ts.map
@@ -0,0 +1,215 @@
1
+ /**
2
+ * Interactive configuration for Trinity deployment
3
+ */
4
+ import fs from 'fs-extra';
5
+ import path from 'path';
6
+ import chalk from 'chalk';
7
+ import inquirer from 'inquirer';
8
+ import { getRecommendedTools, getDependenciesForTools, getScriptsForTools, getPostInstallInstructions, } from '../../utils/linting-tools.js';
9
+ /**
10
+ * Get default configuration for --yes flag
11
+ */
12
+ function getDefaultConfig(options) {
13
+ return {
14
+ projectName: options.name || path.basename(process.cwd()),
15
+ enableLinting: false,
16
+ enableCICD: false,
17
+ lintingTools: [],
18
+ lintingDependencies: [],
19
+ lintingScripts: {},
20
+ postInstallInstructions: [],
21
+ };
22
+ }
23
+ /**
24
+ * Prompt for project name
25
+ */
26
+ async function promptProjectName(defaultName) {
27
+ const nameAnswer = await inquirer.prompt([
28
+ {
29
+ type: 'input',
30
+ name: 'projectName',
31
+ message: 'Project name:',
32
+ default: defaultName,
33
+ },
34
+ ]);
35
+ return nameAnswer.projectName;
36
+ }
37
+ /**
38
+ * Display linting configuration summary
39
+ */
40
+ function displayLintingConfig(tools, dependencies, scripts) {
41
+ console.log(chalk.cyan('\n📦 Will configure:'));
42
+ tools.forEach((tool) => {
43
+ console.log(chalk.white(` ✓ ${tool.name} (${tool.file})`));
44
+ if (tool.description) {
45
+ console.log(chalk.gray(` ${tool.description}`));
46
+ }
47
+ });
48
+ if (dependencies.length > 0) {
49
+ console.log(chalk.white('\n Dependencies to add (run npm install after deployment):'));
50
+ dependencies.forEach((dep) => console.log(chalk.white(` - ${dep}`)));
51
+ }
52
+ if (Object.keys(scripts).length > 0) {
53
+ console.log(chalk.white('\n Scripts to add to package.json:'));
54
+ Object.entries(scripts).forEach(([name, _cmd]) => {
55
+ console.log(chalk.white(` - npm run ${name}`));
56
+ });
57
+ }
58
+ }
59
+ /**
60
+ * Prompt for linting setup choice
61
+ */
62
+ async function promptLintingChoice(stack) {
63
+ console.log(chalk.cyan('\n📋 Optional: Code Quality Tools\n'));
64
+ console.log(chalk.white(`Trinity can setup linting and formatting tools for ${stack.framework} projects.\n`));
65
+ const lintingChoice = await inquirer.prompt([
66
+ {
67
+ type: 'confirm',
68
+ name: 'setupLinting',
69
+ message: 'Setup linting configuration? (y/n)',
70
+ default: true,
71
+ },
72
+ ]);
73
+ if (lintingChoice.setupLinting) {
74
+ return 'recommended';
75
+ }
76
+ else {
77
+ return 'skip';
78
+ }
79
+ }
80
+ /**
81
+ * Configure recommended linting tools
82
+ */
83
+ async function configureRecommendedLinting(stack) {
84
+ const tools = getRecommendedTools(stack.framework, stack.language);
85
+ console.log(chalk.green('\n✔ Setup linting configuration?'), 'Recommended\n');
86
+ const dependencies = getDependenciesForTools(tools);
87
+ const scripts = getScriptsForTools(tools);
88
+ displayLintingConfig(tools, dependencies, scripts);
89
+ return { tools, dependencies, scripts };
90
+ }
91
+ /**
92
+ * Detect Git platform from .git/config
93
+ */
94
+ async function detectGitPlatform() {
95
+ try {
96
+ const gitConfigPath = '.git/config';
97
+ if (await fs.pathExists(gitConfigPath)) {
98
+ const gitConfig = await fs.readFile(gitConfigPath, 'utf8');
99
+ if (gitConfig.includes('github.com'))
100
+ return 'GitHub Actions';
101
+ if (gitConfig.includes('gitlab.com') || gitConfig.includes('gitlab'))
102
+ return 'GitLab CI';
103
+ }
104
+ }
105
+ catch {
106
+ // Ignore detection errors
107
+ }
108
+ return 'unknown';
109
+ }
110
+ /**
111
+ * Display CI/CD configuration summary
112
+ */
113
+ function displayCICDConfig(platform) {
114
+ console.log(chalk.green('\n✔ Deploy CI/CD workflow templates?'), 'Yes');
115
+ if (platform !== 'unknown') {
116
+ console.log(chalk.cyan(`📦 Detected platform: ${platform}\n`));
117
+ console.log(chalk.white(' Will configure:'));
118
+ if (platform === 'GitHub Actions') {
119
+ console.log(chalk.white(' ✓ .github/workflows/trinity-ci.yml'));
120
+ }
121
+ else if (platform === 'GitLab CI') {
122
+ console.log(chalk.white(' ✓ .gitlab-ci.yml'));
123
+ }
124
+ console.log(chalk.white(' ✓ trinity/templates/ci/generic-ci.yml (reference)'));
125
+ }
126
+ else {
127
+ console.log(chalk.cyan('\n📦 Will configure:\n'));
128
+ console.log(chalk.white(' ✓ .github/workflows/trinity-ci.yml (GitHub Actions)'));
129
+ console.log(chalk.white(' ✓ trinity/templates/ci/generic-ci.yml (reference)'));
130
+ }
131
+ }
132
+ /**
133
+ * Prompt for CI/CD setup
134
+ */
135
+ async function promptCICDSetup() {
136
+ console.log(chalk.cyan('\n⚙️ Optional: CI/CD Automation\n'));
137
+ console.log(chalk.white('Trinity can setup automated testing workflows for your CI/CD platform.\n'));
138
+ const ciChoice = await inquirer.prompt([
139
+ {
140
+ type: 'confirm',
141
+ name: 'setupCI',
142
+ message: 'Deploy CI/CD workflow templates?',
143
+ default: true,
144
+ },
145
+ ]);
146
+ if (ciChoice.setupCI) {
147
+ const platform = await detectGitPlatform();
148
+ displayCICDConfig(platform);
149
+ return true;
150
+ }
151
+ else {
152
+ console.log(chalk.gray('\n✔ Deploy CI/CD workflow templates?'), 'Skip\n');
153
+ return false;
154
+ }
155
+ }
156
+ /**
157
+ * Confirm deployment
158
+ */
159
+ async function confirmDeployment() {
160
+ const confirmAnswer = await inquirer.prompt([
161
+ {
162
+ type: 'confirm',
163
+ name: 'confirmDeploy',
164
+ message: 'Proceed with deployment?',
165
+ default: true,
166
+ },
167
+ ]);
168
+ if (!confirmAnswer.confirmDeploy) {
169
+ console.log(chalk.yellow('\n🔸 Deployment cancelled\n'));
170
+ throw new Error('Deployment cancelled by user');
171
+ }
172
+ }
173
+ /**
174
+ * Prompt user for deployment configuration
175
+ *
176
+ * @param options - Deploy command options
177
+ * @param stack - Detected technology stack
178
+ * @returns Deployment configuration
179
+ */
180
+ export async function promptConfiguration(options, stack) {
181
+ if (options.yes) {
182
+ return getDefaultConfig(options);
183
+ }
184
+ const projectName = await promptProjectName(options.name || path.basename(process.cwd()));
185
+ const lintingChoice = await promptLintingChoice(stack);
186
+ let selectedLintingTools = [];
187
+ let lintingDependencies = [];
188
+ let lintingScripts = {};
189
+ let enableLinting = false;
190
+ if (lintingChoice === 'recommended') {
191
+ enableLinting = true;
192
+ const config = await configureRecommendedLinting(stack);
193
+ selectedLintingTools = config.tools;
194
+ lintingDependencies = config.dependencies;
195
+ lintingScripts = config.scripts;
196
+ }
197
+ else {
198
+ console.log(chalk.gray('\n✔ Setup linting configuration?'), 'Skip\n');
199
+ }
200
+ const postInstallInstructions = selectedLintingTools.length > 0
201
+ ? getPostInstallInstructions(selectedLintingTools, stack.framework)
202
+ : [];
203
+ const enableCICD = await promptCICDSetup();
204
+ await confirmDeployment();
205
+ return {
206
+ projectName,
207
+ enableLinting,
208
+ enableCICD,
209
+ lintingTools: selectedLintingTools,
210
+ lintingDependencies,
211
+ lintingScripts,
212
+ postInstallInstructions,
213
+ };
214
+ }
215
+ //# sourceMappingURL=configuration.js.map
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Trinity directory structure creation
3
+ */
4
+ import type { Spinner } from './types.js';
5
+ /**
6
+ * Create complete Trinity directory structure
7
+ *
8
+ * @param spinner - Spinner instance for status updates
9
+ * @returns Number of directories created
10
+ */
11
+ export declare function createDirectories(spinner: Spinner): Promise<number>;
12
+ //# sourceMappingURL=directories.d.ts.map
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Trinity directory structure creation
3
+ */
4
+ import fs from 'fs-extra';
5
+ /**
6
+ * Create complete Trinity directory structure
7
+ *
8
+ * @param spinner - Spinner instance for status updates
9
+ * @returns Number of directories created
10
+ */
11
+ export async function createDirectories(spinner) {
12
+ spinner.start('Creating Trinity Method structure...');
13
+ let directoriesCreated = 0;
14
+ // Trinity core directories
15
+ await fs.ensureDir('trinity/knowledge-base');
16
+ await fs.ensureDir('trinity/sessions');
17
+ await fs.ensureDir('trinity/investigations');
18
+ await fs.ensureDir('trinity/patterns');
19
+ await fs.ensureDir('trinity/work-orders');
20
+ await fs.ensureDir('trinity/templates');
21
+ await fs.ensureDir('trinity/reports');
22
+ await fs.ensureDir('trinity/investigations/plans');
23
+ await fs.ensureDir('trinity/archive/work-orders');
24
+ await fs.ensureDir('trinity/archive/investigations');
25
+ await fs.ensureDir('trinity/archive/reports');
26
+ await fs.ensureDir('trinity/archive/sessions');
27
+ directoriesCreated += 12;
28
+ // Claude Code directories
29
+ await fs.ensureDir('.claude/agents/leadership');
30
+ await fs.ensureDir('.claude/agents/deployment');
31
+ await fs.ensureDir('.claude/agents/audit');
32
+ await fs.ensureDir('.claude/agents/planning');
33
+ await fs.ensureDir('.claude/agents/aj-team');
34
+ directoriesCreated += 5;
35
+ spinner.succeed('Trinity Method structure created');
36
+ return directoriesCreated;
37
+ }
38
+ //# sourceMappingURL=directories.js.map
@@ -0,0 +1,12 @@
1
+ /**
2
+ * .gitignore update for Trinity exclusions
3
+ */
4
+ import type { Spinner } from './types.js';
5
+ /**
6
+ * Update .gitignore to exclude Trinity files
7
+ *
8
+ * @param spinner - Spinner instance for status updates
9
+ * @returns True if .gitignore was updated, false otherwise
10
+ */
11
+ export declare function updateGitignore(spinner: Spinner): Promise<boolean>;
12
+ //# sourceMappingURL=gitignore.d.ts.map
@@ -0,0 +1,53 @@
1
+ /**
2
+ * .gitignore update for Trinity exclusions
3
+ */
4
+ import fs from 'fs-extra';
5
+ import { validatePath } from '../../utils/validate-path.js';
6
+ /**
7
+ * Update .gitignore to exclude Trinity files
8
+ *
9
+ * @param spinner - Spinner instance for status updates
10
+ * @returns True if .gitignore was updated, false otherwise
11
+ */
12
+ export async function updateGitignore(spinner) {
13
+ spinner.start('Updating .gitignore...');
14
+ try {
15
+ const gitignorePath = '.gitignore';
16
+ let gitignoreContent = '';
17
+ // Read existing .gitignore if it exists
18
+ if (await fs.pathExists(gitignorePath)) {
19
+ gitignoreContent = await fs.readFile(gitignorePath, 'utf8');
20
+ }
21
+ // Trinity files to ignore
22
+ const trinityIgnores = [
23
+ '',
24
+ '# Trinity Method SDK',
25
+ 'node_modules/',
26
+ '.claude/',
27
+ 'trinity/',
28
+ '*CLAUDE.md',
29
+ 'TRINITY.md',
30
+ ];
31
+ // Check if Trinity section already exists
32
+ if (!gitignoreContent.includes('# Trinity Method SDK')) {
33
+ // Append Trinity ignores
34
+ const newContent = `${gitignoreContent.trim()}\n${trinityIgnores.join('\n')}\n`;
35
+ // Validate destination path for security
36
+ const validatedPath = validatePath(gitignorePath);
37
+ await fs.writeFile(validatedPath, newContent);
38
+ spinner.succeed('.gitignore updated with Trinity exclusions');
39
+ return true;
40
+ }
41
+ else {
42
+ spinner.info('.gitignore already contains Trinity exclusions');
43
+ return false;
44
+ }
45
+ }
46
+ catch (error) {
47
+ spinner.warn('.gitignore update failed');
48
+ const { displayWarning, getErrorMessage } = await import('../../utils/errors.js');
49
+ displayWarning(getErrorMessage(error));
50
+ return false;
51
+ }
52
+ }
53
+ //# sourceMappingURL=gitignore.js.map
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Deploy Command - Complete Trinity Method SDK deployment to user projects
3
+ *
4
+ * @see docs/workflows/deploy-workflow.md - Complete deployment process
5
+ * @see docs/deployment/best-practices.md - Deployment best practices
6
+ *
7
+ * **Trinity Principle:** "Systematic Quality Assurance"
8
+ * Deploys complete Trinity Method infrastructure with interactive wizard: creates folder structure,
9
+ * deploys 18 agent templates, installs slash commands, configures quality tools (ESLint, Prettier),
10
+ * and sets up CI/CD templates. Ensures every Trinity project starts with proven, consistent foundation.
11
+ *
12
+ * **Why This Exists:**
13
+ * Manual setup is error-prone and inconsistent. Developers forget folders, skip quality tools, or
14
+ * misconfigure agents. This command orchestrates TAN (structure), ZEN (documentation), INO (context),
15
+ * and EIN (CI/CD) to deploy battle-tested Trinity infrastructure in minutes. Every project gets same
16
+ * high-quality foundation: 19 agents, 20 commands, quality gates, and documentation architecture.
17
+ *
18
+ * @example
19
+ * ```bash
20
+ * # Interactive deployment
21
+ * npx trinity deploy
22
+ *
23
+ * # Non-interactive with defaults
24
+ * npx trinity deploy --yes
25
+ *
26
+ * # Force redeployment
27
+ * npx trinity deploy --force
28
+ * ```
29
+ *
30
+ * @module cli/commands/deploy
31
+ */
32
+ import type { DeployOptions } from './types.js';
33
+ /**
34
+ * Deploy Trinity Method SDK to project
35
+ * @param options - Deployment options
36
+ */
37
+ export declare function deploy(options: DeployOptions): Promise<void>;
38
+ //# sourceMappingURL=index.d.ts.map