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.
- package/CHANGELOG.md +116 -0
- package/LICENSE +21 -0
- package/README.md +555 -0
- package/dist/cli/commands/deploy/agents.d.ts +14 -0
- package/dist/cli/commands/deploy/agents.js +59 -0
- package/dist/cli/commands/deploy/ci-cd.d.ts +13 -0
- package/dist/cli/commands/deploy/ci-cd.js +50 -0
- package/dist/cli/commands/deploy/claude-setup.d.ts +17 -0
- package/dist/cli/commands/deploy/claude-setup.js +91 -0
- package/dist/cli/commands/deploy/configuration.d.ts +13 -0
- package/dist/cli/commands/deploy/configuration.js +215 -0
- package/dist/cli/commands/deploy/directories.d.ts +12 -0
- package/dist/cli/commands/deploy/directories.js +38 -0
- package/dist/cli/commands/deploy/gitignore.d.ts +12 -0
- package/dist/cli/commands/deploy/gitignore.js +53 -0
- package/dist/cli/commands/deploy/index.d.ts +38 -0
- package/dist/cli/commands/deploy/index.js +156 -0
- package/dist/cli/commands/deploy/knowledge-base.d.ts +16 -0
- package/dist/cli/commands/deploy/knowledge-base.js +75 -0
- package/dist/cli/commands/deploy/linting.d.ts +18 -0
- package/dist/cli/commands/deploy/linting.js +51 -0
- package/dist/cli/commands/deploy/metrics.d.ts +13 -0
- package/dist/cli/commands/deploy/metrics.js +34 -0
- package/dist/cli/commands/deploy/pre-flight.d.ts +13 -0
- package/dist/cli/commands/deploy/pre-flight.js +29 -0
- package/dist/cli/commands/deploy/root-files.d.ts +16 -0
- package/dist/cli/commands/deploy/root-files.js +178 -0
- package/dist/cli/commands/deploy/sdk-install.d.ts +12 -0
- package/dist/cli/commands/deploy/sdk-install.js +57 -0
- package/dist/cli/commands/deploy/summary.d.ts +14 -0
- package/dist/cli/commands/deploy/summary.js +130 -0
- package/dist/cli/commands/deploy/templates.d.ts +14 -0
- package/dist/cli/commands/deploy/templates.js +84 -0
- package/dist/cli/commands/deploy/types.d.ts +39 -0
- package/dist/cli/commands/deploy/types.js +5 -0
- package/dist/cli/commands/update/agents.d.ts +14 -0
- package/dist/cli/commands/update/agents.js +31 -0
- package/dist/cli/commands/update/backup.d.ts +31 -0
- package/dist/cli/commands/update/backup.js +97 -0
- package/dist/cli/commands/update/commands.d.ts +14 -0
- package/dist/cli/commands/update/commands.js +75 -0
- package/dist/cli/commands/update/index.d.ts +15 -0
- package/dist/cli/commands/update/index.js +118 -0
- package/dist/cli/commands/update/knowledge-base.d.ts +14 -0
- package/dist/cli/commands/update/knowledge-base.js +38 -0
- package/dist/cli/commands/update/pre-flight.d.ts +13 -0
- package/dist/cli/commands/update/pre-flight.js +37 -0
- package/dist/cli/commands/update/summary.d.ts +20 -0
- package/dist/cli/commands/update/summary.js +47 -0
- package/dist/cli/commands/update/templates.d.ts +14 -0
- package/dist/cli/commands/update/templates.js +25 -0
- package/dist/cli/commands/update/types.d.ts +13 -0
- package/dist/cli/commands/update/types.js +7 -0
- package/dist/cli/commands/update/utils.d.ts +11 -0
- package/dist/cli/commands/update/utils.js +19 -0
- package/dist/cli/commands/update/verification.d.ts +20 -0
- package/dist/cli/commands/update/verification.js +54 -0
- package/dist/cli/commands/update/version.d.ts +18 -0
- package/dist/cli/commands/update/version.js +36 -0
- package/dist/cli/commands/update.d.ts +7 -0
- package/dist/cli/commands/update.js +7 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.js +36 -0
- package/dist/cli/types.d.ts +77 -0
- package/dist/cli/types.js +5 -0
- package/dist/cli/utils/deploy-ci.d.ts +22 -0
- package/dist/cli/utils/deploy-ci.js +138 -0
- package/dist/cli/utils/deploy-linting.d.ts +3 -0
- package/dist/cli/utils/deploy-linting.js +136 -0
- package/dist/cli/utils/detect-stack.d.ts +3 -0
- package/dist/cli/utils/detect-stack.js +270 -0
- package/dist/cli/utils/error-classes.d.ts +63 -0
- package/dist/cli/utils/error-classes.js +84 -0
- package/dist/cli/utils/error-handler.d.ts +59 -0
- package/dist/cli/utils/error-handler.js +127 -0
- package/dist/cli/utils/errors.d.ts +52 -0
- package/dist/cli/utils/errors.js +102 -0
- package/dist/cli/utils/get-sdk-path.d.ts +18 -0
- package/dist/cli/utils/get-sdk-path.js +31 -0
- package/dist/cli/utils/inject-dependencies.d.ts +2 -0
- package/dist/cli/utils/inject-dependencies.js +55 -0
- package/dist/cli/utils/linting-tools.d.ts +8 -0
- package/dist/cli/utils/linting-tools.js +206 -0
- package/dist/cli/utils/metrics/code-quality.d.ts +32 -0
- package/dist/cli/utils/metrics/code-quality.js +122 -0
- package/dist/cli/utils/metrics/dependency-parser.d.ts +21 -0
- package/dist/cli/utils/metrics/dependency-parser.js +153 -0
- package/dist/cli/utils/metrics/file-complexity.d.ts +26 -0
- package/dist/cli/utils/metrics/file-complexity.js +77 -0
- package/dist/cli/utils/metrics/framework-detector.d.ts +17 -0
- package/dist/cli/utils/metrics/framework-detector.js +120 -0
- package/dist/cli/utils/metrics/git-metrics.d.ts +30 -0
- package/dist/cli/utils/metrics/git-metrics.js +83 -0
- package/dist/cli/utils/metrics/index.d.ts +28 -0
- package/dist/cli/utils/metrics/index.js +100 -0
- package/dist/cli/utils/template-processor.d.ts +10 -0
- package/dist/cli/utils/template-processor.js +188 -0
- package/dist/cli/utils/validate-path.d.ts +80 -0
- package/dist/cli/utils/validate-path.js +180 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +8 -0
- package/dist/templates/agents/aj-team/apo-documentation-specialist.md.template +572 -0
- package/dist/templates/agents/aj-team/bas-quality-gate.md.template +906 -0
- package/dist/templates/agents/aj-team/bon-dependency-manager.md.template +636 -0
- package/dist/templates/agents/aj-team/cap-configuration-specialist.md.template +670 -0
- package/dist/templates/agents/aj-team/dra-code-reviewer.md.template +768 -0
- package/dist/templates/agents/aj-team/kil-task-executor.md.template +764 -0
- package/dist/templates/agents/aj-team/uro-refactoring-specialist.md.template +759 -0
- package/dist/templates/agents/audit/juno-auditor.md.template +447 -0
- package/dist/templates/agents/deployment/ein-cicd.md.template +694 -0
- package/dist/templates/agents/deployment/ino-context.md.template +733 -0
- package/dist/templates/agents/deployment/tan-structure.md.template +661 -0
- package/dist/templates/agents/deployment/zen-knowledge.md.template +451 -0
- package/dist/templates/agents/leadership/aj-cc.md.template +462 -0
- package/dist/templates/agents/leadership/aj-maestro.md.template +943 -0
- package/dist/templates/agents/leadership/aly-cto.md.template +407 -0
- package/dist/templates/agents/planning/eus-decomposer.md.template +496 -0
- package/dist/templates/agents/planning/mon-requirements.md.template +323 -0
- package/dist/templates/agents/planning/ror-design.md.template +465 -0
- package/dist/templates/agents/planning/tra-planner.md.template +432 -0
- package/dist/templates/ci/cd.yml.template +175 -0
- package/dist/templates/ci/ci.yml.template +196 -0
- package/dist/templates/ci/generic-ci.yml +115 -0
- package/dist/templates/ci/github-actions.yml +86 -0
- package/dist/templates/ci/gitlab-ci.yml +103 -0
- package/dist/templates/claude/EMPLOYEE-DIRECTORY.md.template +545 -0
- package/dist/templates/documentation/ROOT-README.md.template +307 -0
- package/dist/templates/documentation/SUBDIRECTORY-README.md.template +261 -0
- package/dist/templates/investigations/bug.md.template +484 -0
- package/dist/templates/investigations/feature.md.template +564 -0
- package/dist/templates/investigations/performance.md.template +625 -0
- package/dist/templates/investigations/security.md.template +714 -0
- package/dist/templates/investigations/technical.md.template +433 -0
- package/dist/templates/knowledge-base/AI-DEVELOPMENT-GUIDE.md.template +957 -0
- package/dist/templates/knowledge-base/ARCHITECTURE.md.template +452 -0
- package/dist/templates/knowledge-base/CODING-PRINCIPLES.md.template +750 -0
- package/dist/templates/knowledge-base/DOCUMENTATION-CRITERIA.md.template +1118 -0
- package/dist/templates/knowledge-base/ISSUES.md.template +539 -0
- package/dist/templates/knowledge-base/TESTING-PRINCIPLES.md.template +894 -0
- package/dist/templates/knowledge-base/Technical-Debt.md.template +640 -0
- package/dist/templates/knowledge-base/To-do.md.template +407 -0
- package/dist/templates/knowledge-base/Trinity.md.template +464 -0
- package/dist/templates/linting/flutter/.pre-commit-config.yaml.template +27 -0
- package/dist/templates/linting/flutter/analysis_options.yaml.template +26 -0
- package/dist/templates/linting/nodejs/.eslintrc-commonjs.json.template +19 -0
- package/dist/templates/linting/nodejs/.eslintrc-esm.json.template +19 -0
- package/dist/templates/linting/nodejs/.eslintrc-typescript.json.template +22 -0
- package/dist/templates/linting/nodejs/.pre-commit-config.yaml.template +51 -0
- package/dist/templates/linting/nodejs/.prettierrc.json.template +10 -0
- package/dist/templates/linting/python/.flake8.template +16 -0
- package/dist/templates/linting/python/.pre-commit-config.yaml.template +30 -0
- package/dist/templates/linting/python/pyproject.toml.template +38 -0
- package/dist/templates/linting/rust/.pre-commit-config.yaml.template +28 -0
- package/dist/templates/linting/rust/clippy.toml.template +14 -0
- package/dist/templates/linting/rust/rustfmt.toml.template +12 -0
- package/dist/templates/root/CLAUDE.md.template +65 -0
- package/dist/templates/root/TRINITY.md.template +52 -0
- package/dist/templates/shared/claude-commands/trinity-agents.md.template +168 -0
- package/dist/templates/shared/claude-commands/trinity-audit.md.template +646 -0
- package/dist/templates/shared/claude-commands/trinity-changelog.md.template +624 -0
- package/dist/templates/shared/claude-commands/trinity-continue.md.template +549 -0
- package/dist/templates/shared/claude-commands/trinity-create-investigation.md.template +232 -0
- package/dist/templates/shared/claude-commands/trinity-decompose.md.template +181 -0
- package/dist/templates/shared/claude-commands/trinity-design.md.template +347 -0
- package/dist/templates/shared/claude-commands/trinity-docs.md.template +2093 -0
- package/dist/templates/shared/claude-commands/trinity-end.md.template +397 -0
- package/dist/templates/shared/claude-commands/trinity-init.md.template +606 -0
- package/dist/templates/shared/claude-commands/trinity-investigate-templates.md.template +725 -0
- package/dist/templates/shared/claude-commands/trinity-orchestrate.md.template +1061 -0
- package/dist/templates/shared/claude-commands/trinity-plan-investigation.md.template +135 -0
- package/dist/templates/shared/claude-commands/trinity-plan.md.template +201 -0
- package/dist/templates/shared/claude-commands/trinity-readme.md.template +1971 -0
- package/dist/templates/shared/claude-commands/trinity-requirements.md.template +148 -0
- package/dist/templates/shared/claude-commands/trinity-start.md.template +268 -0
- package/dist/templates/shared/claude-commands/trinity-verify.md.template +453 -0
- package/dist/templates/shared/claude-commands/trinity-workorder.md.template +249 -0
- package/dist/templates/source/base-CLAUDE.md.template +310 -0
- package/dist/templates/source/flutter-CLAUDE.md.template +593 -0
- package/dist/templates/source/nodejs-CLAUDE.md.template +531 -0
- package/dist/templates/source/python-CLAUDE.md.template +510 -0
- package/dist/templates/source/react-CLAUDE.md.template +513 -0
- package/dist/templates/source/rust-CLAUDE.md.template +653 -0
- package/dist/templates/source/tests-CLAUDE.md.template +432 -0
- package/dist/templates/trinity/CLAUDE.md.template +372 -0
- package/dist/templates/work-orders/ANALYSIS-TEMPLATE.md.template +276 -0
- package/dist/templates/work-orders/AUDIT-TEMPLATE.md.template +262 -0
- package/dist/templates/work-orders/IMPLEMENTATION-TEMPLATE.md.template +260 -0
- package/dist/templates/work-orders/INVESTIGATION-TEMPLATE.md.template +206 -0
- package/dist/templates/work-orders/PATTERN-TEMPLATE.md.template +320 -0
- package/dist/templates/work-orders/VERIFICATION-TEMPLATE.md.template +273 -0
- 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
|