@bradygaster/squad-sdk 0.7.0 → 0.8.2
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 +296 -296
- package/dist/adapter/client.d.ts +243 -0
- package/dist/adapter/client.d.ts.map +1 -0
- package/dist/adapter/client.js +567 -0
- package/dist/adapter/client.js.map +1 -0
- package/dist/adapter/errors.d.ts +260 -0
- package/dist/adapter/errors.d.ts.map +1 -0
- package/dist/adapter/errors.js +362 -0
- package/dist/adapter/errors.js.map +1 -0
- package/dist/adapter/types.d.ts +779 -0
- package/dist/adapter/types.d.ts.map +1 -0
- package/dist/adapter/types.js +11 -0
- package/dist/adapter/types.js.map +1 -0
- package/dist/agents/charter-compiler.d.ts +102 -0
- package/dist/agents/charter-compiler.d.ts.map +1 -0
- package/dist/agents/charter-compiler.js +157 -0
- package/dist/agents/charter-compiler.js.map +1 -0
- package/dist/agents/history-shadow.d.ts +80 -0
- package/dist/agents/history-shadow.d.ts.map +1 -0
- package/dist/agents/history-shadow.js +239 -0
- package/dist/agents/history-shadow.js.map +1 -0
- package/dist/agents/index.d.ts +71 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +183 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/lifecycle.d.ts +138 -0
- package/dist/agents/lifecycle.d.ts.map +1 -0
- package/dist/agents/lifecycle.js +284 -0
- package/dist/agents/lifecycle.js.map +1 -0
- package/dist/agents/model-selector.d.ts +80 -0
- package/dist/agents/model-selector.d.ts.map +1 -0
- package/dist/agents/model-selector.js +171 -0
- package/dist/agents/model-selector.js.map +1 -0
- package/dist/agents/onboarding.d.ts +65 -0
- package/dist/agents/onboarding.d.ts.map +1 -0
- package/dist/agents/onboarding.js +373 -0
- package/dist/agents/onboarding.js.map +1 -0
- package/dist/build/bundle.d.ts +32 -0
- package/dist/build/bundle.d.ts.map +1 -0
- package/dist/build/bundle.js +97 -0
- package/dist/build/bundle.js.map +1 -0
- package/dist/build/ci-pipeline.d.ts +51 -0
- package/dist/build/ci-pipeline.d.ts.map +1 -0
- package/dist/build/ci-pipeline.js +180 -0
- package/dist/build/ci-pipeline.js.map +1 -0
- package/dist/build/github-dist.d.ts +37 -0
- package/dist/build/github-dist.d.ts.map +1 -0
- package/dist/build/github-dist.js +117 -0
- package/dist/build/github-dist.js.map +1 -0
- package/dist/build/index.d.ts +11 -0
- package/dist/build/index.d.ts.map +1 -0
- package/dist/build/index.js +11 -0
- package/dist/build/index.js.map +1 -0
- package/dist/build/install-migration.d.ts +28 -0
- package/dist/build/install-migration.d.ts.map +1 -0
- package/dist/build/install-migration.js +103 -0
- package/dist/build/install-migration.js.map +1 -0
- package/dist/build/npm-package.d.ts +54 -0
- package/dist/build/npm-package.d.ts.map +1 -0
- package/dist/build/npm-package.js +128 -0
- package/dist/build/npm-package.js.map +1 -0
- package/dist/build/release.d.ts +108 -0
- package/dist/build/release.d.ts.map +1 -0
- package/dist/build/release.js +295 -0
- package/dist/build/release.js.map +1 -0
- package/dist/build/versioning.d.ts +38 -0
- package/dist/build/versioning.d.ts.map +1 -0
- package/dist/build/versioning.js +113 -0
- package/dist/build/versioning.js.map +1 -0
- package/dist/casting/casting-engine.d.ts +60 -0
- package/dist/casting/casting-engine.d.ts.map +1 -0
- package/dist/casting/casting-engine.js +223 -0
- package/dist/casting/casting-engine.js.map +1 -0
- package/dist/casting/casting-history.d.ts +54 -0
- package/dist/casting/casting-history.d.ts.map +1 -0
- package/dist/casting/casting-history.js +63 -0
- package/dist/casting/casting-history.js.map +1 -0
- package/dist/casting/index.d.ts +46 -0
- package/dist/casting/index.d.ts.map +1 -0
- package/dist/casting/index.js +45 -0
- package/dist/casting/index.js.map +1 -0
- package/dist/client/event-bus.d.ts +29 -0
- package/dist/client/event-bus.d.ts.map +1 -0
- package/dist/client/event-bus.js +52 -0
- package/dist/client/event-bus.js.map +1 -0
- package/dist/client/index.d.ts +100 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +170 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/session-pool.d.ts +66 -0
- package/dist/client/session-pool.d.ts.map +1 -0
- package/dist/client/session-pool.js +145 -0
- package/dist/client/session-pool.js.map +1 -0
- package/dist/config/agent-doc.d.ts +43 -0
- package/dist/config/agent-doc.d.ts.map +1 -0
- package/dist/config/agent-doc.js +158 -0
- package/dist/config/agent-doc.js.map +1 -0
- package/dist/config/agent-source.d.ts +95 -0
- package/dist/config/agent-source.d.ts.map +1 -0
- package/dist/config/agent-source.js +274 -0
- package/dist/config/agent-source.js.map +1 -0
- package/dist/config/doc-sync.d.ts +66 -0
- package/dist/config/doc-sync.d.ts.map +1 -0
- package/dist/config/doc-sync.js +270 -0
- package/dist/config/doc-sync.js.map +1 -0
- package/dist/config/feature-audit.d.ts +49 -0
- package/dist/config/feature-audit.d.ts.map +1 -0
- package/dist/config/feature-audit.js +148 -0
- package/dist/config/feature-audit.js.map +1 -0
- package/dist/config/index.d.ts +15 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +15 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/init.d.ts +61 -0
- package/dist/config/init.d.ts.map +1 -0
- package/dist/config/init.js +376 -0
- package/dist/config/init.js.map +1 -0
- package/dist/config/legacy-fallback.d.ts +83 -0
- package/dist/config/legacy-fallback.d.ts.map +1 -0
- package/dist/config/legacy-fallback.js +212 -0
- package/dist/config/legacy-fallback.js.map +1 -0
- package/dist/config/markdown-migration.d.ts +157 -0
- package/dist/config/markdown-migration.d.ts.map +1 -0
- package/dist/config/markdown-migration.js +434 -0
- package/dist/config/markdown-migration.js.map +1 -0
- package/dist/config/migration.d.ts +123 -0
- package/dist/config/migration.d.ts.map +1 -0
- package/dist/config/migration.js +273 -0
- package/dist/config/migration.js.map +1 -0
- package/dist/config/migrations/index.d.ts +36 -0
- package/dist/config/migrations/index.d.ts.map +1 -0
- package/dist/config/migrations/index.js +216 -0
- package/dist/config/migrations/index.js.map +1 -0
- package/dist/config/models.d.ts +134 -0
- package/dist/config/models.d.ts.map +1 -0
- package/dist/config/models.js +354 -0
- package/dist/config/models.js.map +1 -0
- package/dist/config/routing.d.ts +118 -0
- package/dist/config/routing.d.ts.map +1 -0
- package/dist/config/routing.js +247 -0
- package/dist/config/routing.js.map +1 -0
- package/dist/config/schema.d.ts +72 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +63 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/coordinator/coordinator.d.ts +82 -0
- package/dist/coordinator/coordinator.d.ts.map +1 -0
- package/dist/coordinator/coordinator.js +192 -0
- package/dist/coordinator/coordinator.js.map +1 -0
- package/dist/coordinator/direct-response.d.ts +83 -0
- package/dist/coordinator/direct-response.d.ts.map +1 -0
- package/dist/coordinator/direct-response.js +187 -0
- package/dist/coordinator/direct-response.js.map +1 -0
- package/dist/coordinator/fan-out.d.ts +83 -0
- package/dist/coordinator/fan-out.d.ts.map +1 -0
- package/dist/coordinator/fan-out.js +161 -0
- package/dist/coordinator/fan-out.js.map +1 -0
- package/dist/coordinator/index.d.ts +62 -0
- package/dist/coordinator/index.d.ts.map +1 -0
- package/dist/coordinator/index.js +171 -0
- package/dist/coordinator/index.js.map +1 -0
- package/dist/coordinator/response-tiers.d.ts +49 -0
- package/dist/coordinator/response-tiers.d.ts.map +1 -0
- package/dist/coordinator/response-tiers.js +149 -0
- package/dist/coordinator/response-tiers.js.map +1 -0
- package/dist/hooks/index.d.ts +103 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +279 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/index.d.ts +33 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +33 -3
- package/dist/index.js.map +1 -1
- package/dist/marketplace/backend.d.ts +35 -0
- package/dist/marketplace/backend.d.ts.map +1 -0
- package/dist/marketplace/backend.js +99 -0
- package/dist/marketplace/backend.js.map +1 -0
- package/dist/marketplace/browser.d.ts +33 -0
- package/dist/marketplace/browser.d.ts.map +1 -0
- package/dist/marketplace/browser.js +97 -0
- package/dist/marketplace/browser.js.map +1 -0
- package/dist/marketplace/extension-adapter.d.ts +51 -0
- package/dist/marketplace/extension-adapter.d.ts.map +1 -0
- package/dist/marketplace/extension-adapter.js +81 -0
- package/dist/marketplace/extension-adapter.js.map +1 -0
- package/dist/marketplace/index.d.ts +51 -0
- package/dist/marketplace/index.d.ts.map +1 -0
- package/dist/marketplace/index.js +108 -0
- package/dist/marketplace/index.js.map +1 -0
- package/dist/marketplace/packaging.d.ts +25 -0
- package/dist/marketplace/packaging.d.ts.map +1 -0
- package/dist/marketplace/packaging.js +117 -0
- package/dist/marketplace/packaging.js.map +1 -0
- package/dist/marketplace/schema.d.ts +50 -0
- package/dist/marketplace/schema.d.ts.map +1 -0
- package/dist/marketplace/schema.js +120 -0
- package/dist/marketplace/schema.js.map +1 -0
- package/dist/marketplace/security.d.ts +26 -0
- package/dist/marketplace/security.d.ts.map +1 -0
- package/dist/marketplace/security.js +199 -0
- package/dist/marketplace/security.js.map +1 -0
- package/dist/parsers.d.ts +15 -0
- package/dist/parsers.d.ts.map +1 -0
- package/dist/parsers.js +15 -0
- package/dist/parsers.js.map +1 -0
- package/dist/ralph/index.d.ts +58 -0
- package/dist/ralph/index.d.ts.map +1 -0
- package/dist/ralph/index.js +128 -0
- package/dist/ralph/index.js.map +1 -0
- package/dist/resolution.d.ts +47 -0
- package/dist/resolution.d.ts.map +1 -0
- package/dist/resolution.js +106 -0
- package/dist/resolution.js.map +1 -0
- package/dist/runtime/benchmarks.d.ts +121 -0
- package/dist/runtime/benchmarks.d.ts.map +1 -0
- package/dist/runtime/benchmarks.js +251 -0
- package/dist/runtime/benchmarks.js.map +1 -0
- package/dist/runtime/config.d.ts +314 -0
- package/dist/runtime/config.d.ts.map +1 -0
- package/dist/runtime/config.js +467 -0
- package/dist/runtime/config.js.map +1 -0
- package/dist/runtime/constants.d.ts +35 -0
- package/dist/runtime/constants.d.ts.map +1 -0
- package/dist/runtime/constants.js +58 -0
- package/dist/runtime/constants.js.map +1 -0
- package/dist/runtime/cost-tracker.d.ts +73 -0
- package/dist/runtime/cost-tracker.d.ts.map +1 -0
- package/dist/runtime/cost-tracker.js +157 -0
- package/dist/runtime/cost-tracker.js.map +1 -0
- package/dist/runtime/event-bus-otel-bridge.d.ts +19 -0
- package/dist/runtime/event-bus-otel-bridge.d.ts.map +1 -0
- package/dist/runtime/event-bus-otel-bridge.js +61 -0
- package/dist/runtime/event-bus-otel-bridge.js.map +1 -0
- package/dist/runtime/event-bus-ws-bridge.d.ts +35 -0
- package/dist/runtime/event-bus-ws-bridge.d.ts.map +1 -0
- package/dist/runtime/event-bus-ws-bridge.js +55 -0
- package/dist/runtime/event-bus-ws-bridge.js.map +1 -0
- package/dist/runtime/event-bus.d.ts +190 -0
- package/dist/runtime/event-bus.d.ts.map +1 -0
- package/dist/runtime/event-bus.js +218 -0
- package/dist/runtime/event-bus.js.map +1 -0
- package/dist/runtime/event-payloads.d.ts +108 -0
- package/dist/runtime/event-payloads.d.ts.map +1 -0
- package/dist/runtime/event-payloads.js +28 -0
- package/dist/runtime/event-payloads.js.map +1 -0
- package/dist/runtime/health.d.ts +66 -0
- package/dist/runtime/health.d.ts.map +1 -0
- package/dist/runtime/health.js +112 -0
- package/dist/runtime/health.js.map +1 -0
- package/dist/runtime/i18n.d.ts +54 -0
- package/dist/runtime/i18n.d.ts.map +1 -0
- package/dist/runtime/i18n.js +126 -0
- package/dist/runtime/i18n.js.map +1 -0
- package/dist/runtime/offline.d.ts +64 -0
- package/dist/runtime/offline.d.ts.map +1 -0
- package/dist/runtime/offline.js +108 -0
- package/dist/runtime/offline.js.map +1 -0
- package/dist/runtime/otel-bridge.d.ts +52 -0
- package/dist/runtime/otel-bridge.d.ts.map +1 -0
- package/dist/runtime/otel-bridge.js +132 -0
- package/dist/runtime/otel-bridge.js.map +1 -0
- package/dist/runtime/otel-init.d.ts +72 -0
- package/dist/runtime/otel-init.d.ts.map +1 -0
- package/dist/runtime/otel-init.js +68 -0
- package/dist/runtime/otel-init.js.map +1 -0
- package/dist/runtime/otel-metrics.d.ts +42 -0
- package/dist/runtime/otel-metrics.d.ts.map +1 -0
- package/dist/runtime/otel-metrics.js +196 -0
- package/dist/runtime/otel-metrics.js.map +1 -0
- package/dist/runtime/otel.d.ts +53 -0
- package/dist/runtime/otel.d.ts.map +1 -0
- package/dist/runtime/otel.js +127 -0
- package/dist/runtime/otel.js.map +1 -0
- package/dist/runtime/squad-observer.d.ts +75 -0
- package/dist/runtime/squad-observer.d.ts.map +1 -0
- package/dist/runtime/squad-observer.js +190 -0
- package/dist/runtime/squad-observer.js.map +1 -0
- package/dist/runtime/streaming.d.ts +106 -0
- package/dist/runtime/streaming.d.ts.map +1 -0
- package/dist/runtime/streaming.js +192 -0
- package/dist/runtime/streaming.js.map +1 -0
- package/dist/runtime/telemetry.d.ts +82 -0
- package/dist/runtime/telemetry.d.ts.map +1 -0
- package/dist/runtime/telemetry.js +120 -0
- package/dist/runtime/telemetry.js.map +1 -0
- package/dist/sharing/agent-repo.d.ts +33 -0
- package/dist/sharing/agent-repo.d.ts.map +1 -0
- package/dist/sharing/agent-repo.js +79 -0
- package/dist/sharing/agent-repo.js.map +1 -0
- package/dist/sharing/cache.d.ts +36 -0
- package/dist/sharing/cache.d.ts.map +1 -0
- package/dist/sharing/cache.js +85 -0
- package/dist/sharing/cache.js.map +1 -0
- package/dist/sharing/conflicts.d.ts +32 -0
- package/dist/sharing/conflicts.d.ts.map +1 -0
- package/dist/sharing/conflicts.js +121 -0
- package/dist/sharing/conflicts.js.map +1 -0
- package/dist/sharing/export.d.ts +50 -0
- package/dist/sharing/export.d.ts.map +1 -0
- package/dist/sharing/export.js +156 -0
- package/dist/sharing/export.js.map +1 -0
- package/dist/sharing/history-split.d.ts +34 -0
- package/dist/sharing/history-split.d.ts.map +1 -0
- package/dist/sharing/history-split.js +101 -0
- package/dist/sharing/history-split.js.map +1 -0
- package/dist/sharing/import.d.ts +37 -0
- package/dist/sharing/import.d.ts.map +1 -0
- package/dist/sharing/import.js +138 -0
- package/dist/sharing/import.js.map +1 -0
- package/dist/sharing/index.d.ts +11 -0
- package/dist/sharing/index.d.ts.map +1 -0
- package/dist/sharing/index.js +11 -0
- package/dist/sharing/index.js.map +1 -0
- package/dist/sharing/versioning.d.ts +32 -0
- package/dist/sharing/versioning.d.ts.map +1 -0
- package/dist/sharing/versioning.js +64 -0
- package/dist/sharing/versioning.js.map +1 -0
- package/dist/skills/index.d.ts +49 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +85 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/skill-loader.d.ts +56 -0
- package/dist/skills/skill-loader.d.ts.map +1 -0
- package/dist/skills/skill-loader.js +106 -0
- package/dist/skills/skill-loader.js.map +1 -0
- package/dist/skills/skill-source.d.ts +63 -0
- package/dist/skills/skill-source.d.ts.map +1 -0
- package/dist/skills/skill-source.js +199 -0
- package/dist/skills/skill-source.js.map +1 -0
- package/dist/tools/index.d.ts +95 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +475 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/types.d.ts +43 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/dist/upstream/index.d.ts +8 -0
- package/dist/upstream/index.d.ts.map +1 -0
- package/dist/upstream/index.js +7 -0
- package/dist/upstream/index.js.map +1 -0
- package/dist/upstream/resolver.d.ts +37 -0
- package/dist/upstream/resolver.d.ts.map +1 -0
- package/dist/upstream/resolver.js +234 -0
- package/dist/upstream/resolver.js.map +1 -0
- package/dist/upstream/types.d.ts +55 -0
- package/dist/upstream/types.d.ts.map +1 -0
- package/dist/upstream/types.js +11 -0
- package/dist/upstream/types.js.map +1 -0
- package/dist/utils/normalize-eol.d.ts +6 -0
- package/dist/utils/normalize-eol.d.ts.map +1 -0
- package/dist/utils/normalize-eol.js +8 -0
- package/dist/utils/normalize-eol.js.map +1 -0
- package/package.json +197 -63
|
@@ -0,0 +1,373 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Onboarding Module (M2-10, PRD #111)
|
|
3
|
+
*
|
|
4
|
+
* Handles runtime agent onboarding with context-aware charter generation.
|
|
5
|
+
* Creates agent directory, charter, and history with project context.
|
|
6
|
+
*
|
|
7
|
+
* @module agents/onboarding
|
|
8
|
+
*/
|
|
9
|
+
import { mkdir, writeFile, readFile } from 'fs/promises';
|
|
10
|
+
import { join } from 'path';
|
|
11
|
+
import { existsSync } from 'fs';
|
|
12
|
+
// ============================================================================
|
|
13
|
+
// Default Charter Templates
|
|
14
|
+
// ============================================================================
|
|
15
|
+
/**
|
|
16
|
+
* Default charter templates for standard roles.
|
|
17
|
+
*/
|
|
18
|
+
const CHARTER_TEMPLATES = {
|
|
19
|
+
'lead': (displayName, context) => `# ${displayName} — Technical Lead
|
|
20
|
+
|
|
21
|
+
Technical lead responsible for architecture, delegation, and project coordination.
|
|
22
|
+
|
|
23
|
+
## Project Context
|
|
24
|
+
|
|
25
|
+
${context || 'Context will be provided by the team.'}
|
|
26
|
+
|
|
27
|
+
## Responsibilities
|
|
28
|
+
|
|
29
|
+
- Define technical direction and architecture
|
|
30
|
+
- Coordinate work across team members
|
|
31
|
+
- Review proposals and make final decisions
|
|
32
|
+
- Maintain code quality standards
|
|
33
|
+
- Mentor team members
|
|
34
|
+
|
|
35
|
+
## Work Style
|
|
36
|
+
|
|
37
|
+
- Think strategically about long-term maintainability
|
|
38
|
+
- Delegate work effectively to specialists
|
|
39
|
+
- Balance technical excellence with pragmatic delivery
|
|
40
|
+
- Document architectural decisions
|
|
41
|
+
- Foster collaborative team environment
|
|
42
|
+
`,
|
|
43
|
+
'developer': (displayName, context) => `# ${displayName} — Software Developer
|
|
44
|
+
|
|
45
|
+
Software developer focused on feature implementation and code quality.
|
|
46
|
+
|
|
47
|
+
## Project Context
|
|
48
|
+
|
|
49
|
+
${context || 'Context will be provided by the team.'}
|
|
50
|
+
|
|
51
|
+
## Responsibilities
|
|
52
|
+
|
|
53
|
+
- Implement features according to specifications
|
|
54
|
+
- Write clean, maintainable code
|
|
55
|
+
- Create and maintain tests
|
|
56
|
+
- Review code from team members
|
|
57
|
+
- Document implementation decisions
|
|
58
|
+
|
|
59
|
+
## Work Style
|
|
60
|
+
|
|
61
|
+
- Follow established patterns and conventions
|
|
62
|
+
- Write tests alongside implementation
|
|
63
|
+
- Ask questions when requirements are unclear
|
|
64
|
+
- Collaborate with team members on complex problems
|
|
65
|
+
- Keep code simple and readable
|
|
66
|
+
`,
|
|
67
|
+
'tester': (displayName, context) => `# ${displayName} — Quality Assurance
|
|
68
|
+
|
|
69
|
+
Quality assurance specialist responsible for test coverage and validation.
|
|
70
|
+
|
|
71
|
+
## Project Context
|
|
72
|
+
|
|
73
|
+
${context || 'Context will be provided by the team.'}
|
|
74
|
+
|
|
75
|
+
## Responsibilities
|
|
76
|
+
|
|
77
|
+
- Design and implement test strategies
|
|
78
|
+
- Write comprehensive test suites
|
|
79
|
+
- Validate features against requirements
|
|
80
|
+
- Identify edge cases and failure modes
|
|
81
|
+
- Maintain test infrastructure
|
|
82
|
+
|
|
83
|
+
## Work Style
|
|
84
|
+
|
|
85
|
+
- Think adversarially about how things can break
|
|
86
|
+
- Automate testing wherever possible
|
|
87
|
+
- Document test scenarios and coverage
|
|
88
|
+
- Collaborate with developers on testability
|
|
89
|
+
- Balance thoroughness with pragmatism
|
|
90
|
+
`,
|
|
91
|
+
'scribe': (displayName, context) => `# ${displayName} — Documentation Specialist
|
|
92
|
+
|
|
93
|
+
Documentation specialist maintaining history, decisions, and technical records.
|
|
94
|
+
|
|
95
|
+
## Project Context
|
|
96
|
+
|
|
97
|
+
${context || 'Context will be provided by the team.'}
|
|
98
|
+
|
|
99
|
+
## Responsibilities
|
|
100
|
+
|
|
101
|
+
- Maintain agent history files
|
|
102
|
+
- Document team decisions
|
|
103
|
+
- Keep technical records organized
|
|
104
|
+
- Summarize work sessions
|
|
105
|
+
- Preserve institutional knowledge
|
|
106
|
+
|
|
107
|
+
## Work Style
|
|
108
|
+
|
|
109
|
+
- Write clear, concise documentation
|
|
110
|
+
- Organize information for easy retrieval
|
|
111
|
+
- Capture both what and why
|
|
112
|
+
- Update documentation proactively
|
|
113
|
+
- Maintain consistent formatting
|
|
114
|
+
`,
|
|
115
|
+
'ralph': (displayName, context) => `# ${displayName} — Persistent Memory Agent
|
|
116
|
+
|
|
117
|
+
Persistent memory agent that maintains context across sessions.
|
|
118
|
+
|
|
119
|
+
## Project Context
|
|
120
|
+
|
|
121
|
+
${context || 'Context will be provided by the team.'}
|
|
122
|
+
|
|
123
|
+
## Responsibilities
|
|
124
|
+
|
|
125
|
+
- Maintain session-to-session continuity
|
|
126
|
+
- Surface relevant historical context
|
|
127
|
+
- Track long-running initiatives
|
|
128
|
+
- Connect current work to past decisions
|
|
129
|
+
- Preserve institutional knowledge
|
|
130
|
+
|
|
131
|
+
## Work Style
|
|
132
|
+
|
|
133
|
+
- Read team history before responding
|
|
134
|
+
- Surface relevant past work without overwhelming
|
|
135
|
+
- Connect dots across sessions
|
|
136
|
+
- Maintain perspective on long-term goals
|
|
137
|
+
- Help team avoid repeating mistakes
|
|
138
|
+
`,
|
|
139
|
+
'designer': (displayName, context) => `# ${displayName} — User Experience Designer
|
|
140
|
+
|
|
141
|
+
User experience designer focused on interface design and user interactions.
|
|
142
|
+
|
|
143
|
+
## Project Context
|
|
144
|
+
|
|
145
|
+
${context || 'Context will be provided by the team.'}
|
|
146
|
+
|
|
147
|
+
## Responsibilities
|
|
148
|
+
|
|
149
|
+
- Design user interfaces and interactions
|
|
150
|
+
- Create prototypes and mockups
|
|
151
|
+
- Validate designs with users
|
|
152
|
+
- Maintain design consistency
|
|
153
|
+
- Document design decisions
|
|
154
|
+
|
|
155
|
+
## Work Style
|
|
156
|
+
|
|
157
|
+
- Think from the user's perspective
|
|
158
|
+
- Balance aesthetics with usability
|
|
159
|
+
- Iterate based on feedback
|
|
160
|
+
- Maintain design system consistency
|
|
161
|
+
- Collaborate with developers on implementation
|
|
162
|
+
`,
|
|
163
|
+
'architect': (displayName, context) => `# ${displayName} — Software Architect
|
|
164
|
+
|
|
165
|
+
Software architect responsible for system design and technical strategy.
|
|
166
|
+
|
|
167
|
+
## Project Context
|
|
168
|
+
|
|
169
|
+
${context || 'Context will be provided by the team.'}
|
|
170
|
+
|
|
171
|
+
## Responsibilities
|
|
172
|
+
|
|
173
|
+
- Design system architecture
|
|
174
|
+
- Define technical standards
|
|
175
|
+
- Evaluate technology choices
|
|
176
|
+
- Plan for scalability and maintainability
|
|
177
|
+
- Document architectural decisions
|
|
178
|
+
|
|
179
|
+
## Work Style
|
|
180
|
+
|
|
181
|
+
- Think holistically about the system
|
|
182
|
+
- Balance ideal design with practical constraints
|
|
183
|
+
- Consider long-term implications
|
|
184
|
+
- Document trade-offs clearly
|
|
185
|
+
- Mentor team on architectural patterns
|
|
186
|
+
`
|
|
187
|
+
};
|
|
188
|
+
/**
|
|
189
|
+
* Generate a generic charter when no template matches.
|
|
190
|
+
*/
|
|
191
|
+
function generateGenericCharter(displayName, role, context) {
|
|
192
|
+
return `# ${displayName} — ${titleCase(role)}
|
|
193
|
+
|
|
194
|
+
Team member focused on ${role} responsibilities.
|
|
195
|
+
|
|
196
|
+
## Project Context
|
|
197
|
+
|
|
198
|
+
${context || 'Context will be provided by the team.'}
|
|
199
|
+
|
|
200
|
+
## Responsibilities
|
|
201
|
+
|
|
202
|
+
- Collaborate with team members on assigned work
|
|
203
|
+
- Maintain code quality and project standards
|
|
204
|
+
- Document decisions and progress in history
|
|
205
|
+
- Follow team conventions and guidelines
|
|
206
|
+
|
|
207
|
+
## Work Style
|
|
208
|
+
|
|
209
|
+
- Read project context and team decisions before starting work
|
|
210
|
+
- Communicate clearly with team members
|
|
211
|
+
- Follow established patterns and conventions
|
|
212
|
+
- Ask questions when requirements are unclear
|
|
213
|
+
- Keep work focused and incremental
|
|
214
|
+
`;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Generate history.md content with project context.
|
|
218
|
+
*/
|
|
219
|
+
function generateHistory(displayName, role, projectContext, userName) {
|
|
220
|
+
const now = new Date().toISOString().split('T')[0];
|
|
221
|
+
return `# Project Context
|
|
222
|
+
|
|
223
|
+
${userName ? `- **Owner:** ${userName}\n` : ''}- **Agent:** ${displayName}
|
|
224
|
+
- **Role:** ${titleCase(role)}
|
|
225
|
+
- **Onboarded:** ${now}
|
|
226
|
+
|
|
227
|
+
## Core Context
|
|
228
|
+
|
|
229
|
+
${projectContext || 'Project context will be provided by the team.'}
|
|
230
|
+
|
|
231
|
+
## Recent Updates
|
|
232
|
+
|
|
233
|
+
📌 Agent ${displayName} onboarded on ${now}
|
|
234
|
+
|
|
235
|
+
## Learnings
|
|
236
|
+
|
|
237
|
+
Ready to contribute to the team.
|
|
238
|
+
`;
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Convert kebab-case or snake_case to Title Case.
|
|
242
|
+
*/
|
|
243
|
+
function titleCase(str) {
|
|
244
|
+
return str
|
|
245
|
+
.split(/[-_]/)
|
|
246
|
+
.map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
|
|
247
|
+
.join(' ');
|
|
248
|
+
}
|
|
249
|
+
// ============================================================================
|
|
250
|
+
// Onboarding Functions
|
|
251
|
+
// ============================================================================
|
|
252
|
+
/**
|
|
253
|
+
* Onboard a new agent to the Squad.
|
|
254
|
+
*
|
|
255
|
+
* Creates:
|
|
256
|
+
* - Agent directory at .squad/agents/{name}/
|
|
257
|
+
* - charter.md from role template + project context
|
|
258
|
+
* - history.md with project description and tech stack
|
|
259
|
+
*
|
|
260
|
+
* @param options - Onboarding options
|
|
261
|
+
* @returns Result with created file paths
|
|
262
|
+
*/
|
|
263
|
+
export async function onboardAgent(options) {
|
|
264
|
+
const { teamRoot, agentName, role, displayName, projectContext, userName, charterTemplate } = options;
|
|
265
|
+
const createdFiles = [];
|
|
266
|
+
// Validate inputs
|
|
267
|
+
if (!teamRoot) {
|
|
268
|
+
throw new Error('teamRoot is required');
|
|
269
|
+
}
|
|
270
|
+
if (!agentName) {
|
|
271
|
+
throw new Error('agentName is required');
|
|
272
|
+
}
|
|
273
|
+
if (!role) {
|
|
274
|
+
throw new Error('role is required');
|
|
275
|
+
}
|
|
276
|
+
// Normalize agent name (kebab-case)
|
|
277
|
+
const normalizedName = agentName.toLowerCase().replace(/[^a-z0-9-]/g, '-');
|
|
278
|
+
// Create agent directory
|
|
279
|
+
const agentDir = join(teamRoot, '.squad', 'agents', normalizedName);
|
|
280
|
+
if (existsSync(agentDir)) {
|
|
281
|
+
throw new Error(`Agent directory already exists: ${agentDir}`);
|
|
282
|
+
}
|
|
283
|
+
await mkdir(agentDir, { recursive: true });
|
|
284
|
+
// Determine display name
|
|
285
|
+
const effectiveDisplayName = displayName || titleCase(normalizedName);
|
|
286
|
+
// Generate charter
|
|
287
|
+
let charterContent;
|
|
288
|
+
if (charterTemplate) {
|
|
289
|
+
charterContent = charterTemplate;
|
|
290
|
+
}
|
|
291
|
+
else {
|
|
292
|
+
const templateFn = CHARTER_TEMPLATES[role.toLowerCase()];
|
|
293
|
+
if (templateFn) {
|
|
294
|
+
charterContent = templateFn(effectiveDisplayName, projectContext);
|
|
295
|
+
}
|
|
296
|
+
else {
|
|
297
|
+
charterContent = generateGenericCharter(effectiveDisplayName, role, projectContext);
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
// Write charter.md
|
|
301
|
+
const charterPath = join(agentDir, 'charter.md');
|
|
302
|
+
await writeFile(charterPath, charterContent, 'utf-8');
|
|
303
|
+
createdFiles.push(charterPath);
|
|
304
|
+
// Generate history
|
|
305
|
+
const historyContent = generateHistory(effectiveDisplayName, role, projectContext, userName);
|
|
306
|
+
// Write history.md
|
|
307
|
+
const historyPath = join(agentDir, 'history.md');
|
|
308
|
+
await writeFile(historyPath, historyContent, 'utf-8');
|
|
309
|
+
createdFiles.push(historyPath);
|
|
310
|
+
return {
|
|
311
|
+
createdFiles,
|
|
312
|
+
agentDir,
|
|
313
|
+
charterPath,
|
|
314
|
+
historyPath
|
|
315
|
+
};
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Update an agent's configuration to squad.config.ts (if it exists).
|
|
319
|
+
*
|
|
320
|
+
* This is a helper function to add agent routing after onboarding.
|
|
321
|
+
* Only works with TypeScript configs (JSON requires manual edit).
|
|
322
|
+
*
|
|
323
|
+
* @param teamRoot - Team root directory
|
|
324
|
+
* @param agentName - Agent name to add
|
|
325
|
+
* @param role - Agent role
|
|
326
|
+
* @returns True if config was updated, false if not found or JSON format
|
|
327
|
+
*/
|
|
328
|
+
export async function addAgentToConfig(teamRoot, agentName, role) {
|
|
329
|
+
const configPath = join(teamRoot, 'squad.config.ts');
|
|
330
|
+
if (!existsSync(configPath)) {
|
|
331
|
+
return false; // No TypeScript config to update
|
|
332
|
+
}
|
|
333
|
+
try {
|
|
334
|
+
const content = await readFile(configPath, 'utf-8');
|
|
335
|
+
// Simple heuristic: add routing rule if role matches common work types
|
|
336
|
+
const workTypeMap = {
|
|
337
|
+
'developer': 'feature-dev',
|
|
338
|
+
'tester': 'testing',
|
|
339
|
+
'scribe': 'documentation',
|
|
340
|
+
'architect': 'architecture',
|
|
341
|
+
'designer': 'design'
|
|
342
|
+
};
|
|
343
|
+
const workType = workTypeMap[role.toLowerCase()];
|
|
344
|
+
if (!workType) {
|
|
345
|
+
return false; // No obvious work type mapping
|
|
346
|
+
}
|
|
347
|
+
// Check if this work type already has a rule
|
|
348
|
+
const workTypePattern = new RegExp(`workType:\\s*['"]${workType}['"]`);
|
|
349
|
+
if (workTypePattern.test(content)) {
|
|
350
|
+
return false; // Already has a rule for this work type
|
|
351
|
+
}
|
|
352
|
+
// Find the routing rules array and add new rule
|
|
353
|
+
const rulesPattern = /rules:\s*\[([^\]]*)\]/s;
|
|
354
|
+
const match = content.match(rulesPattern);
|
|
355
|
+
if (!match) {
|
|
356
|
+
return false; // Cannot parse rules array
|
|
357
|
+
}
|
|
358
|
+
const newRule = ` {
|
|
359
|
+
workType: '${workType}',
|
|
360
|
+
agents: ['@${agentName}'],
|
|
361
|
+
confidence: 'high'
|
|
362
|
+
}`;
|
|
363
|
+
const updatedRules = match[1].trim() + ',\n' + newRule;
|
|
364
|
+
const updatedContent = content.replace(rulesPattern, `rules: [\n${updatedRules}\n ]`);
|
|
365
|
+
await writeFile(configPath, updatedContent, 'utf-8');
|
|
366
|
+
return true;
|
|
367
|
+
}
|
|
368
|
+
catch (error) {
|
|
369
|
+
// Silently fail if we can't parse/update the config
|
|
370
|
+
return false;
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
//# sourceMappingURL=onboarding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onboarding.js","sourceRoot":"","sources":["../../src/agents/onboarding.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* M4-1: Bundle strategy & esbuild configuration
|
|
3
|
+
* Defines bundling strategy for the SDK: ESM output, tree-shakeable
|
|
4
|
+
*/
|
|
5
|
+
export type BundleFormat = 'esm' | 'cjs';
|
|
6
|
+
export interface BundleConfig {
|
|
7
|
+
entryPoints: string[];
|
|
8
|
+
outDir: string;
|
|
9
|
+
format: BundleFormat;
|
|
10
|
+
minify: boolean;
|
|
11
|
+
sourcemap: boolean;
|
|
12
|
+
external: string[];
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Create a full BundleConfig with sensible defaults, optionally overriding fields.
|
|
16
|
+
*/
|
|
17
|
+
export declare function createBundleConfig(options?: Partial<BundleConfig>): BundleConfig;
|
|
18
|
+
/**
|
|
19
|
+
* Returns the list of entry points for the SDK build.
|
|
20
|
+
*/
|
|
21
|
+
export declare function getBundleTargets(): string[];
|
|
22
|
+
export interface BundleValidationResult {
|
|
23
|
+
valid: boolean;
|
|
24
|
+
errors: string[];
|
|
25
|
+
warnings: string[];
|
|
26
|
+
files: string[];
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Check that the output directory contains expected build artifacts.
|
|
30
|
+
*/
|
|
31
|
+
export declare function validateBundleOutput(outDir: string): BundleValidationResult;
|
|
32
|
+
//# sourceMappingURL=bundle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../../src/build/bundle.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,KAAK,CAAC;AAEzC,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AA2BD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,YAAY,CAYhF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,EAAE,CAE3C;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,sBAAsB,CAwC3E"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* M4-1: Bundle strategy & esbuild configuration
|
|
3
|
+
* Defines bundling strategy for the SDK: ESM output, tree-shakeable
|
|
4
|
+
*/
|
|
5
|
+
import { existsSync, readdirSync, statSync } from 'node:fs';
|
|
6
|
+
import { join, resolve } from 'node:path';
|
|
7
|
+
const DEFAULT_ENTRY_POINTS = [
|
|
8
|
+
'src/index.ts',
|
|
9
|
+
'src/config/index.ts',
|
|
10
|
+
'src/agents/onboarding.ts',
|
|
11
|
+
'src/casting/index.ts',
|
|
12
|
+
'src/skills/index.ts',
|
|
13
|
+
'src/runtime/config.ts',
|
|
14
|
+
'src/runtime/streaming.ts',
|
|
15
|
+
'src/runtime/cost-tracker.ts',
|
|
16
|
+
'src/coordinator/response-tiers.ts',
|
|
17
|
+
];
|
|
18
|
+
const DEFAULT_EXTERNAL = [
|
|
19
|
+
'@github/copilot-sdk',
|
|
20
|
+
];
|
|
21
|
+
const DEFAULT_CONFIG = {
|
|
22
|
+
entryPoints: DEFAULT_ENTRY_POINTS,
|
|
23
|
+
outDir: 'dist',
|
|
24
|
+
format: 'esm',
|
|
25
|
+
minify: false,
|
|
26
|
+
sourcemap: true,
|
|
27
|
+
external: DEFAULT_EXTERNAL,
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Create a full BundleConfig with sensible defaults, optionally overriding fields.
|
|
31
|
+
*/
|
|
32
|
+
export function createBundleConfig(options) {
|
|
33
|
+
if (!options) {
|
|
34
|
+
return { ...DEFAULT_CONFIG, entryPoints: [...DEFAULT_CONFIG.entryPoints], external: [...DEFAULT_CONFIG.external] };
|
|
35
|
+
}
|
|
36
|
+
return {
|
|
37
|
+
entryPoints: options.entryPoints ? [...options.entryPoints] : [...DEFAULT_CONFIG.entryPoints],
|
|
38
|
+
outDir: options.outDir ?? DEFAULT_CONFIG.outDir,
|
|
39
|
+
format: options.format ?? DEFAULT_CONFIG.format,
|
|
40
|
+
minify: options.minify ?? DEFAULT_CONFIG.minify,
|
|
41
|
+
sourcemap: options.sourcemap ?? DEFAULT_CONFIG.sourcemap,
|
|
42
|
+
external: options.external ? [...options.external] : [...DEFAULT_CONFIG.external],
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Returns the list of entry points for the SDK build.
|
|
47
|
+
*/
|
|
48
|
+
export function getBundleTargets() {
|
|
49
|
+
return [...DEFAULT_ENTRY_POINTS];
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Check that the output directory contains expected build artifacts.
|
|
53
|
+
*/
|
|
54
|
+
export function validateBundleOutput(outDir) {
|
|
55
|
+
const errors = [];
|
|
56
|
+
const warnings = [];
|
|
57
|
+
const files = [];
|
|
58
|
+
const resolvedDir = resolve(outDir);
|
|
59
|
+
if (!existsSync(resolvedDir)) {
|
|
60
|
+
return { valid: false, errors: [`Output directory does not exist: ${resolvedDir}`], warnings, files };
|
|
61
|
+
}
|
|
62
|
+
const stat = statSync(resolvedDir);
|
|
63
|
+
if (!stat.isDirectory()) {
|
|
64
|
+
return { valid: false, errors: [`Path is not a directory: ${resolvedDir}`], warnings, files };
|
|
65
|
+
}
|
|
66
|
+
collectFiles(resolvedDir, resolvedDir, files);
|
|
67
|
+
const jsFiles = files.filter(f => f.endsWith('.js'));
|
|
68
|
+
const dtsFiles = files.filter(f => f.endsWith('.d.ts'));
|
|
69
|
+
const mapFiles = files.filter(f => f.endsWith('.js.map') || f.endsWith('.d.ts.map'));
|
|
70
|
+
if (jsFiles.length === 0) {
|
|
71
|
+
errors.push('No JavaScript output files found');
|
|
72
|
+
}
|
|
73
|
+
if (dtsFiles.length === 0) {
|
|
74
|
+
warnings.push('No TypeScript declaration files found');
|
|
75
|
+
}
|
|
76
|
+
if (mapFiles.length === 0) {
|
|
77
|
+
warnings.push('No source map files found');
|
|
78
|
+
}
|
|
79
|
+
const hasIndex = jsFiles.some(f => f === 'index.js' || f.endsWith('/index.js') || f.endsWith('\\index.js'));
|
|
80
|
+
if (!hasIndex) {
|
|
81
|
+
errors.push('Missing index.js entry point in output');
|
|
82
|
+
}
|
|
83
|
+
return { valid: errors.length === 0, errors, warnings, files };
|
|
84
|
+
}
|
|
85
|
+
function collectFiles(baseDir, dir, result) {
|
|
86
|
+
for (const entry of readdirSync(dir)) {
|
|
87
|
+
const fullPath = join(dir, entry);
|
|
88
|
+
const relativePath = fullPath.slice(baseDir.length + 1).replace(/\\/g, '/');
|
|
89
|
+
if (statSync(fullPath).isDirectory()) {
|
|
90
|
+
collectFiles(baseDir, fullPath, result);
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
result.push(relativePath);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=bundle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundle.js","sourceRoot":"","sources":["../../src/build/bundle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* M4-9: CI/CD pipeline for distribution
|
|
3
|
+
* Generates GitHub Actions workflow YAML for build, test, and release pipelines.
|
|
4
|
+
*/
|
|
5
|
+
export interface CIPipelineStep {
|
|
6
|
+
name: string;
|
|
7
|
+
command: string;
|
|
8
|
+
condition?: string;
|
|
9
|
+
env?: Record<string, string>;
|
|
10
|
+
}
|
|
11
|
+
export interface CIPipelineTrigger {
|
|
12
|
+
event: 'push' | 'pull_request' | 'release' | 'workflow_dispatch' | 'schedule';
|
|
13
|
+
branches?: string[];
|
|
14
|
+
tags?: string[];
|
|
15
|
+
cron?: string;
|
|
16
|
+
}
|
|
17
|
+
export interface CIPipelineArtifact {
|
|
18
|
+
name: string;
|
|
19
|
+
path: string;
|
|
20
|
+
retention?: number;
|
|
21
|
+
}
|
|
22
|
+
export interface CIPipelineConfig {
|
|
23
|
+
name: string;
|
|
24
|
+
steps: CIPipelineStep[];
|
|
25
|
+
triggers: CIPipelineTrigger[];
|
|
26
|
+
artifacts: CIPipelineArtifact[];
|
|
27
|
+
environment: Record<string, string>;
|
|
28
|
+
nodeVersion?: string;
|
|
29
|
+
}
|
|
30
|
+
export interface PipelineValidationResult {
|
|
31
|
+
valid: boolean;
|
|
32
|
+
errors: string[];
|
|
33
|
+
warnings: string[];
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Generate a GitHub Actions CI workflow YAML string.
|
|
37
|
+
*/
|
|
38
|
+
export declare function generateGitHubActionsWorkflow(config: CIPipelineConfig): string;
|
|
39
|
+
/**
|
|
40
|
+
* Generate a release workflow YAML string.
|
|
41
|
+
*/
|
|
42
|
+
export declare function generateReleaseWorkflow(config: CIPipelineConfig): string;
|
|
43
|
+
/**
|
|
44
|
+
* Validate a CI pipeline configuration for completeness and correctness.
|
|
45
|
+
*/
|
|
46
|
+
export declare function validatePipelineConfig(config: CIPipelineConfig): PipelineValidationResult;
|
|
47
|
+
/**
|
|
48
|
+
* Get the default CI pipeline steps.
|
|
49
|
+
*/
|
|
50
|
+
export declare function getDefaultSteps(): CIPipelineStep[];
|
|
51
|
+
//# sourceMappingURL=ci-pipeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ci-pipeline.d.ts","sourceRoot":"","sources":["../../src/build/ci-pipeline.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,GAAG,mBAAmB,GAAG,UAAU,CAAC;IAC9E,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,SAAS,EAAE,kBAAkB,EAAE,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AA8BD;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAkF9E;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAaxE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,GAAG,wBAAwB,CAyCzF;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,cAAc,EAAE,CAElD"}
|