crewly 1.0.0 → 1.0.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/config/constants.ts +40 -2
- package/config/skills/_common/lib.sh +2 -1
- package/config/skills/orchestrator/schedule-check/execute.sh +1 -1
- package/config/skills/orchestrator/send-pdf-to-slack/execute.sh +28 -5
- package/config/skills/orchestrator/send-pdf-to-slack/instructions.md +49 -10
- package/config/skills/orchestrator/send-pdf-to-slack/skill.json +1 -1
- package/config/skills/orchestrator/subscribe-event/execute.sh +2 -2
- package/dist/backend/backend/src/constants.d.ts +24 -2
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +13 -3
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/session/session.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/session/session.controller.js +16 -7
- package/dist/backend/backend/src/controllers/session/session.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/team/team.controller.js +27 -0
- package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
- package/dist/backend/backend/src/index.d.ts +7 -0
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +131 -0
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/middleware/agent-heartbeat.middleware.d.ts +3 -2
- package/dist/backend/backend/src/middleware/agent-heartbeat.middleware.d.ts.map +1 -1
- package/dist/backend/backend/src/middleware/agent-heartbeat.middleware.js +8 -2
- package/dist/backend/backend/src/middleware/agent-heartbeat.middleware.js.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-heartbeat-monitor.service.d.ts +185 -0
- package/dist/backend/backend/src/services/agent/agent-heartbeat-monitor.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/agent-heartbeat-monitor.service.js +508 -0
- package/dist/backend/backend/src/services/agent/agent-heartbeat-monitor.service.js.map +1 -0
- package/dist/backend/backend/src/services/agent/agent-heartbeat.service.d.ts +5 -5
- package/dist/backend/backend/src/services/agent/agent-heartbeat.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-heartbeat.service.js +3 -3
- package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.js +39 -13
- package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/disk-cleanup.service.d.ts +24 -3
- package/dist/backend/backend/src/services/agent/disk-cleanup.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/disk-cleanup.service.js +15 -3
- package/dist/backend/backend/src/services/agent/disk-cleanup.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/idle-detection.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/idle-detection.service.js +18 -0
- package/dist/backend/backend/src/services/agent/idle-detection.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/pty-activity-tracker.service.d.ts +7 -2
- package/dist/backend/backend/src/services/agent/pty-activity-tracker.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/pty-activity-tracker.service.js +11 -3
- package/dist/backend/backend/src/services/agent/pty-activity-tracker.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts +42 -0
- package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js +190 -1
- package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/tmux.service.js +2 -2
- package/dist/backend/backend/src/services/agent/tmux.service.js.map +1 -1
- package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.d.ts +28 -4
- package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.js +74 -7
- package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.js.map +1 -1
- package/dist/backend/backend/src/services/monitoring/activity-monitor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/monitoring/activity-monitor.service.js +13 -19
- package/dist/backend/backend/src/services/monitoring/activity-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.d.ts +129 -0
- package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.js +253 -0
- package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.js.map +1 -0
- package/dist/backend/backend/src/services/session/pty/pty-session-backend.d.ts.map +1 -1
- package/dist/backend/backend/src/services/session/pty/pty-session-backend.js +5 -1
- package/dist/backend/backend/src/services/session/pty/pty-session-backend.js.map +1 -1
- package/dist/backend/backend/src/services/session/pty/pty-terminal-buffer.d.ts.map +1 -1
- package/dist/backend/backend/src/services/session/pty/pty-terminal-buffer.js +2 -1
- package/dist/backend/backend/src/services/session/pty/pty-terminal-buffer.js.map +1 -1
- package/dist/backend/backend/src/services/session/session-state-persistence.d.ts +4 -1
- package/dist/backend/backend/src/services/session/session-state-persistence.d.ts.map +1 -1
- package/dist/backend/backend/src/services/session/session-state-persistence.js +3 -1
- package/dist/backend/backend/src/services/session/session-state-persistence.js.map +1 -1
- package/dist/backend/backend/src/services/skill/skill-catalog.service.d.ts +11 -0
- package/dist/backend/backend/src/services/skill/skill-catalog.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/skill/skill-catalog.service.js +46 -3
- package/dist/backend/backend/src/services/skill/skill-catalog.service.js.map +1 -1
- package/dist/backend/backend/src/services/workflow/scheduler.service.d.ts +1 -0
- package/dist/backend/backend/src/services/workflow/scheduler.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/workflow/scheduler.service.js +1 -0
- package/dist/backend/backend/src/services/workflow/scheduler.service.js.map +1 -1
- package/dist/backend/backend/src/types/index.d.ts +2 -0
- package/dist/backend/backend/src/types/index.d.ts.map +1 -1
- package/dist/backend/backend/src/types/index.js.map +1 -1
- package/dist/backend/backend/src/types/scheduler.types.d.ts +17 -0
- package/dist/backend/backend/src/types/scheduler.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/scheduler.types.js.map +1 -1
- package/dist/backend/config/constants.d.ts +36 -2
- package/dist/backend/config/constants.d.ts.map +1 -1
- package/dist/backend/config/constants.js +37 -2
- package/dist/backend/config/constants.js.map +1 -1
- package/dist/backend/config/index.d.ts +1 -1
- package/dist/cli/cli/src/commands/install.d.ts +23 -0
- package/dist/cli/cli/src/commands/install.d.ts.map +1 -0
- package/dist/cli/cli/src/commands/install.js +113 -0
- package/dist/cli/cli/src/commands/install.js.map +1 -0
- package/dist/cli/cli/src/commands/search.d.ts +23 -0
- package/dist/cli/cli/src/commands/search.d.ts.map +1 -0
- package/dist/cli/cli/src/commands/search.js +85 -0
- package/dist/cli/cli/src/commands/search.js.map +1 -0
- package/dist/cli/cli/src/commands/start.d.ts.map +1 -1
- package/dist/cli/cli/src/commands/start.js +11 -0
- package/dist/cli/cli/src/commands/start.js.map +1 -1
- package/dist/cli/cli/src/constants.d.ts +1 -1
- package/dist/cli/cli/src/index.js +13 -1
- package/dist/cli/cli/src/index.js.map +1 -1
- package/dist/cli/cli/src/utils/marketplace.d.ts +111 -0
- package/dist/cli/cli/src/utils/marketplace.d.ts.map +1 -0
- package/dist/cli/cli/src/utils/marketplace.js +209 -0
- package/dist/cli/cli/src/utils/marketplace.js.map +1 -0
- package/dist/cli/config/constants.d.ts +36 -2
- package/dist/cli/config/constants.d.ts.map +1 -1
- package/dist/cli/config/constants.js +37 -2
- package/dist/cli/config/constants.js.map +1 -1
- package/dist/cli/config/index.d.ts +1 -1
- package/frontend/dist/assets/{index-77b6a2a0.js → index-4c56763b.js} +31 -31
- package/frontend/dist/assets/{index-5ddf71c8.css → index-c1dd0b10.css} +1 -1
- package/frontend/dist/index.html +2 -2
- package/package.json +11 -4
- package/config/constants.test.ts +0 -469
- package/config/quality-gates/default-gates.test.ts +0 -246
- package/config/skills/agent/_common/lib.sh +0 -4
- package/config/skills/agent/accept-task/execute.sh +0 -21
- package/config/skills/agent/accept-task/instructions.md +0 -20
- package/config/skills/agent/accept-task/skill.json +0 -20
- package/config/skills/agent/block-task/execute.sh +0 -26
- package/config/skills/agent/block-task/instructions.md +0 -22
- package/config/skills/agent/block-task/skill.json +0 -20
- package/config/skills/agent/check-quality-gates/execute.sh +0 -20
- package/config/skills/agent/check-quality-gates/instructions.md +0 -23
- package/config/skills/agent/check-quality-gates/skill.json +0 -20
- package/config/skills/agent/complete-task/execute.sh +0 -26
- package/config/skills/agent/complete-task/instructions.md +0 -22
- package/config/skills/agent/complete-task/skill.json +0 -20
- package/config/skills/agent/get-my-context/execute.sh +0 -23
- package/config/skills/agent/get-my-context/instructions.md +0 -21
- package/config/skills/agent/get-my-context/skill.json +0 -20
- package/config/skills/agent/get-sops/execute.sh +0 -24
- package/config/skills/agent/get-sops/instructions.md +0 -21
- package/config/skills/agent/get-sops/skill.json +0 -20
- package/config/skills/agent/get-team-status/execute.sh +0 -8
- package/config/skills/agent/get-team-status/instructions.md +0 -17
- package/config/skills/agent/get-team-status/skill.json +0 -20
- package/config/skills/agent/manage-knowledge/execute.sh +0 -60
- package/config/skills/agent/manage-knowledge/instructions.md +0 -46
- package/config/skills/agent/nano-banana-image/.env +0 -2
- package/config/skills/agent/nano-banana-image/.env.example +0 -6
- package/config/skills/agent/nano-banana-image/generate.sh +0 -73
- package/config/skills/agent/nano-banana-image/instructions.md +0 -50
- package/config/skills/agent/nano-banana-image/skill.json +0 -39
- package/config/skills/agent/query-knowledge/execute.sh +0 -30
- package/config/skills/agent/query-knowledge/instructions.md +0 -47
- package/config/skills/agent/query-knowledge/skill.json +0 -20
- package/config/skills/agent/read-task/execute.sh +0 -15
- package/config/skills/agent/read-task/instructions.md +0 -19
- package/config/skills/agent/read-task/skill.json +0 -20
- package/config/skills/agent/recall/execute.sh +0 -24
- package/config/skills/agent/recall/instructions.md +0 -23
- package/config/skills/agent/recall/skill.json +0 -20
- package/config/skills/agent/record-learning/execute.sh +0 -29
- package/config/skills/agent/record-learning/instructions.md +0 -24
- package/config/skills/agent/record-learning/skill.json +0 -20
- package/config/skills/agent/register-self/execute.sh +0 -28
- package/config/skills/agent/register-self/instructions.md +0 -18
- package/config/skills/agent/register-self/skill.json +0 -20
- package/config/skills/agent/remember/execute.sh +0 -29
- package/config/skills/agent/remember/instructions.md +0 -24
- package/config/skills/agent/remember/skill.json +0 -20
- package/config/skills/agent/report-progress/execute.sh +0 -28
- package/config/skills/agent/report-progress/instructions.md +0 -25
- package/config/skills/agent/report-progress/skill.json +0 -20
- package/config/skills/agent/report-status/execute.sh +0 -35
- package/config/skills/agent/report-status/instructions.md +0 -36
- package/config/skills/agent/report-status/skill.json +0 -20
- package/config/skills/agent/send-chat-response/execute.sh +0 -26
- package/config/skills/agent/send-chat-response/instructions.md +0 -22
- package/config/skills/agent/send-chat-response/skill.json +0 -20
- package/config/skills/agent/send-message/execute.sh +0 -17
- package/config/skills/agent/send-message/instructions.md +0 -20
- package/config/skills/agent/send-message/skill.json +0 -20
- package/config/skills/agent/send-pdf-to-slack/execute.sh +0 -182
- package/config/skills/agent/send-pdf-to-slack/instructions.md +0 -49
- package/config/skills/agent/send-pdf-to-slack/skill.json +0 -20
- package/config/skills/nano-banana-image/.env +0 -2
- package/config/skills/nano-banana-image/.env.example +0 -6
|
@@ -1,246 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tests for Default Quality Gate Configuration
|
|
3
|
-
*
|
|
4
|
-
* @module config/quality-gates/default-gates.test
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
// Jest globals (describe, it, expect) are available automatically
|
|
8
|
-
import {
|
|
9
|
-
DEFAULT_GATES,
|
|
10
|
-
MINIMAL_GATES,
|
|
11
|
-
FULL_GATES,
|
|
12
|
-
DEFAULT_SETTINGS,
|
|
13
|
-
DEFAULT_REQUIRED_GATES,
|
|
14
|
-
DEFAULT_OPTIONAL_GATES,
|
|
15
|
-
TYPECHECK_GATE,
|
|
16
|
-
TESTS_GATE,
|
|
17
|
-
BUILD_GATE,
|
|
18
|
-
LINT_GATE,
|
|
19
|
-
COVERAGE_GATE,
|
|
20
|
-
createGateConfig,
|
|
21
|
-
createGate,
|
|
22
|
-
} from './default-gates.js';
|
|
23
|
-
import { GATE_TIMEOUTS, STANDARD_GATES } from '../../backend/src/types/quality-gate.types.js';
|
|
24
|
-
|
|
25
|
-
describe('Default Quality Gate Configuration', () => {
|
|
26
|
-
describe('DEFAULT_SETTINGS', () => {
|
|
27
|
-
it('should have correct default settings', () => {
|
|
28
|
-
expect(DEFAULT_SETTINGS.runInParallel).toBe(false);
|
|
29
|
-
expect(DEFAULT_SETTINGS.stopOnFirstFailure).toBe(false);
|
|
30
|
-
expect(DEFAULT_SETTINGS.timeout).toBe(GATE_TIMEOUTS.TOTAL);
|
|
31
|
-
});
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
describe('Individual Gates', () => {
|
|
35
|
-
describe('TYPECHECK_GATE', () => {
|
|
36
|
-
it('should be correctly configured', () => {
|
|
37
|
-
expect(TYPECHECK_GATE.name).toBe(STANDARD_GATES.TYPECHECK);
|
|
38
|
-
expect(TYPECHECK_GATE.command).toBe('npm run typecheck');
|
|
39
|
-
expect(TYPECHECK_GATE.timeout).toBe(GATE_TIMEOUTS.TYPECHECK);
|
|
40
|
-
expect(TYPECHECK_GATE.required).toBe(true);
|
|
41
|
-
expect(TYPECHECK_GATE.description).toBe('TypeScript compilation check');
|
|
42
|
-
});
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
describe('TESTS_GATE', () => {
|
|
46
|
-
it('should be correctly configured', () => {
|
|
47
|
-
expect(TESTS_GATE.name).toBe(STANDARD_GATES.TESTS);
|
|
48
|
-
expect(TESTS_GATE.command).toBe('npm test -- --passWithNoTests');
|
|
49
|
-
expect(TESTS_GATE.timeout).toBe(GATE_TIMEOUTS.TESTS);
|
|
50
|
-
expect(TESTS_GATE.required).toBe(true);
|
|
51
|
-
expect(TESTS_GATE.env).toEqual({ CI: 'true' });
|
|
52
|
-
});
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
describe('BUILD_GATE', () => {
|
|
56
|
-
it('should be correctly configured', () => {
|
|
57
|
-
expect(BUILD_GATE.name).toBe(STANDARD_GATES.BUILD);
|
|
58
|
-
expect(BUILD_GATE.command).toBe('npm run build');
|
|
59
|
-
expect(BUILD_GATE.timeout).toBe(GATE_TIMEOUTS.BUILD);
|
|
60
|
-
expect(BUILD_GATE.required).toBe(true);
|
|
61
|
-
});
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
describe('LINT_GATE', () => {
|
|
65
|
-
it('should be correctly configured as optional', () => {
|
|
66
|
-
expect(LINT_GATE.name).toBe(STANDARD_GATES.LINT);
|
|
67
|
-
expect(LINT_GATE.command).toBe('npm run lint');
|
|
68
|
-
expect(LINT_GATE.timeout).toBe(GATE_TIMEOUTS.LINT);
|
|
69
|
-
expect(LINT_GATE.required).toBe(false);
|
|
70
|
-
expect(LINT_GATE.allowFailure).toBe(true);
|
|
71
|
-
});
|
|
72
|
-
});
|
|
73
|
-
|
|
74
|
-
describe('COVERAGE_GATE', () => {
|
|
75
|
-
it('should be correctly configured with thresholds', () => {
|
|
76
|
-
expect(COVERAGE_GATE.name).toBe(STANDARD_GATES.COVERAGE);
|
|
77
|
-
expect(COVERAGE_GATE.required).toBe(false);
|
|
78
|
-
expect(COVERAGE_GATE.threshold).toEqual({
|
|
79
|
-
lines: 80,
|
|
80
|
-
branches: 70,
|
|
81
|
-
functions: 80,
|
|
82
|
-
statements: 80,
|
|
83
|
-
});
|
|
84
|
-
});
|
|
85
|
-
});
|
|
86
|
-
});
|
|
87
|
-
|
|
88
|
-
describe('Gate Arrays', () => {
|
|
89
|
-
describe('DEFAULT_REQUIRED_GATES', () => {
|
|
90
|
-
it('should contain typecheck, tests, and build', () => {
|
|
91
|
-
expect(DEFAULT_REQUIRED_GATES).toHaveLength(3);
|
|
92
|
-
expect(DEFAULT_REQUIRED_GATES.map(g => g.name)).toEqual([
|
|
93
|
-
'typecheck',
|
|
94
|
-
'tests',
|
|
95
|
-
'build',
|
|
96
|
-
]);
|
|
97
|
-
});
|
|
98
|
-
|
|
99
|
-
it('should all be marked as required', () => {
|
|
100
|
-
expect(DEFAULT_REQUIRED_GATES.every(g => g.required)).toBe(true);
|
|
101
|
-
});
|
|
102
|
-
});
|
|
103
|
-
|
|
104
|
-
describe('DEFAULT_OPTIONAL_GATES', () => {
|
|
105
|
-
it('should contain lint gate', () => {
|
|
106
|
-
expect(DEFAULT_OPTIONAL_GATES).toHaveLength(1);
|
|
107
|
-
expect(DEFAULT_OPTIONAL_GATES[0].name).toBe('lint');
|
|
108
|
-
});
|
|
109
|
-
|
|
110
|
-
it('should all be marked as not required', () => {
|
|
111
|
-
expect(DEFAULT_OPTIONAL_GATES.every(g => !g.required)).toBe(true);
|
|
112
|
-
});
|
|
113
|
-
});
|
|
114
|
-
});
|
|
115
|
-
|
|
116
|
-
describe('Gate Configurations', () => {
|
|
117
|
-
describe('DEFAULT_GATES', () => {
|
|
118
|
-
it('should have default settings', () => {
|
|
119
|
-
expect(DEFAULT_GATES.settings).toEqual(DEFAULT_SETTINGS);
|
|
120
|
-
});
|
|
121
|
-
|
|
122
|
-
it('should have required gates', () => {
|
|
123
|
-
expect(DEFAULT_GATES.required).toEqual(DEFAULT_REQUIRED_GATES);
|
|
124
|
-
});
|
|
125
|
-
|
|
126
|
-
it('should have optional gates', () => {
|
|
127
|
-
expect(DEFAULT_GATES.optional).toEqual(DEFAULT_OPTIONAL_GATES);
|
|
128
|
-
});
|
|
129
|
-
|
|
130
|
-
it('should have empty custom gates', () => {
|
|
131
|
-
expect(DEFAULT_GATES.custom).toEqual([]);
|
|
132
|
-
});
|
|
133
|
-
});
|
|
134
|
-
|
|
135
|
-
describe('MINIMAL_GATES', () => {
|
|
136
|
-
it('should only have typecheck as required', () => {
|
|
137
|
-
expect(MINIMAL_GATES.required).toHaveLength(1);
|
|
138
|
-
expect(MINIMAL_GATES.required[0].name).toBe('typecheck');
|
|
139
|
-
});
|
|
140
|
-
|
|
141
|
-
it('should have no optional or custom gates', () => {
|
|
142
|
-
expect(MINIMAL_GATES.optional).toHaveLength(0);
|
|
143
|
-
expect(MINIMAL_GATES.custom).toHaveLength(0);
|
|
144
|
-
});
|
|
145
|
-
});
|
|
146
|
-
|
|
147
|
-
describe('FULL_GATES', () => {
|
|
148
|
-
it('should have extended timeout', () => {
|
|
149
|
-
expect(FULL_GATES.settings.timeout).toBe(GATE_TIMEOUTS.TOTAL * 2);
|
|
150
|
-
});
|
|
151
|
-
|
|
152
|
-
it('should have all required gates', () => {
|
|
153
|
-
expect(FULL_GATES.required).toHaveLength(3);
|
|
154
|
-
});
|
|
155
|
-
|
|
156
|
-
it('should have lint and coverage as optional', () => {
|
|
157
|
-
expect(FULL_GATES.optional).toHaveLength(2);
|
|
158
|
-
expect(FULL_GATES.optional.map(g => g.name)).toContain('lint');
|
|
159
|
-
expect(FULL_GATES.optional.map(g => g.name)).toContain('coverage');
|
|
160
|
-
});
|
|
161
|
-
});
|
|
162
|
-
});
|
|
163
|
-
|
|
164
|
-
describe('createGateConfig', () => {
|
|
165
|
-
it('should create config with defaults when no overrides', () => {
|
|
166
|
-
const config = createGateConfig({});
|
|
167
|
-
expect(config.settings).toEqual(DEFAULT_SETTINGS);
|
|
168
|
-
expect(config.required).toEqual(DEFAULT_REQUIRED_GATES);
|
|
169
|
-
expect(config.optional).toEqual(DEFAULT_OPTIONAL_GATES);
|
|
170
|
-
expect(config.custom).toEqual([]);
|
|
171
|
-
});
|
|
172
|
-
|
|
173
|
-
it('should override settings', () => {
|
|
174
|
-
const config = createGateConfig({
|
|
175
|
-
settings: {
|
|
176
|
-
runInParallel: true,
|
|
177
|
-
stopOnFirstFailure: true,
|
|
178
|
-
timeout: 600000,
|
|
179
|
-
},
|
|
180
|
-
});
|
|
181
|
-
expect(config.settings.runInParallel).toBe(true);
|
|
182
|
-
expect(config.settings.stopOnFirstFailure).toBe(true);
|
|
183
|
-
expect(config.settings.timeout).toBe(600000);
|
|
184
|
-
});
|
|
185
|
-
|
|
186
|
-
it('should override required gates', () => {
|
|
187
|
-
const customRequired = [TYPECHECK_GATE];
|
|
188
|
-
const config = createGateConfig({ required: customRequired });
|
|
189
|
-
expect(config.required).toEqual(customRequired);
|
|
190
|
-
});
|
|
191
|
-
|
|
192
|
-
it('should override optional gates', () => {
|
|
193
|
-
const config = createGateConfig({ optional: [] });
|
|
194
|
-
expect(config.optional).toEqual([]);
|
|
195
|
-
});
|
|
196
|
-
|
|
197
|
-
it('should add custom gates', () => {
|
|
198
|
-
const customGate = createGate('custom', 'npm run custom');
|
|
199
|
-
const config = createGateConfig({ custom: [customGate] });
|
|
200
|
-
expect(config.custom).toHaveLength(1);
|
|
201
|
-
expect(config.custom[0].name).toBe('custom');
|
|
202
|
-
});
|
|
203
|
-
});
|
|
204
|
-
|
|
205
|
-
describe('createGate', () => {
|
|
206
|
-
it('should create a gate with minimal options', () => {
|
|
207
|
-
const gate = createGate('test', 'npm test');
|
|
208
|
-
expect(gate.name).toBe('test');
|
|
209
|
-
expect(gate.command).toBe('npm test');
|
|
210
|
-
expect(gate.timeout).toBe(GATE_TIMEOUTS.DEFAULT);
|
|
211
|
-
expect(gate.required).toBe(false);
|
|
212
|
-
});
|
|
213
|
-
|
|
214
|
-
it('should create a gate with all options', () => {
|
|
215
|
-
const gate = createGate('coverage', 'npm run coverage', {
|
|
216
|
-
timeout: 180000,
|
|
217
|
-
required: true,
|
|
218
|
-
description: 'Coverage check',
|
|
219
|
-
allowFailure: false,
|
|
220
|
-
env: { CI: 'true' },
|
|
221
|
-
runOn: ['main'],
|
|
222
|
-
threshold: { lines: 90 },
|
|
223
|
-
});
|
|
224
|
-
|
|
225
|
-
expect(gate.name).toBe('coverage');
|
|
226
|
-
expect(gate.command).toBe('npm run coverage');
|
|
227
|
-
expect(gate.timeout).toBe(180000);
|
|
228
|
-
expect(gate.required).toBe(true);
|
|
229
|
-
expect(gate.description).toBe('Coverage check');
|
|
230
|
-
expect(gate.allowFailure).toBe(false);
|
|
231
|
-
expect(gate.env).toEqual({ CI: 'true' });
|
|
232
|
-
expect(gate.runOn).toEqual(['main']);
|
|
233
|
-
expect(gate.threshold).toEqual({ lines: 90 });
|
|
234
|
-
});
|
|
235
|
-
|
|
236
|
-
it('should use default timeout when not specified', () => {
|
|
237
|
-
const gate = createGate('lint', 'npm run lint');
|
|
238
|
-
expect(gate.timeout).toBe(GATE_TIMEOUTS.DEFAULT);
|
|
239
|
-
});
|
|
240
|
-
|
|
241
|
-
it('should default required to false', () => {
|
|
242
|
-
const gate = createGate('optional', 'npm run optional');
|
|
243
|
-
expect(gate.required).toBe(false);
|
|
244
|
-
});
|
|
245
|
-
});
|
|
246
|
-
});
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# Accept and take the next available task from the task queue
|
|
3
|
-
set -euo pipefail
|
|
4
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
5
|
-
source "${SCRIPT_DIR}/../_common/lib.sh"
|
|
6
|
-
|
|
7
|
-
INPUT="${1:-}"
|
|
8
|
-
[ -z "$INPUT" ] && error_exit "Usage: execute.sh '{\"sessionName\":\"dev-1\"}'"
|
|
9
|
-
|
|
10
|
-
SESSION_NAME=$(echo "$INPUT" | jq -r '.sessionName // empty')
|
|
11
|
-
require_param "sessionName" "$SESSION_NAME"
|
|
12
|
-
|
|
13
|
-
TEAM_MEMBER_ID=$(echo "$INPUT" | jq -r '.teamMemberId // empty')
|
|
14
|
-
|
|
15
|
-
BODY=$(jq -n \
|
|
16
|
-
--arg sessionName "$SESSION_NAME" \
|
|
17
|
-
--arg teamMemberId "$TEAM_MEMBER_ID" \
|
|
18
|
-
'{sessionName: $sessionName} +
|
|
19
|
-
(if $teamMemberId != "" then {teamMemberId: $teamMemberId} else {} end)')
|
|
20
|
-
|
|
21
|
-
api_call POST "/task-management/take-next" "$BODY"
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
# Accept Task
|
|
2
|
-
|
|
3
|
-
Accept and take the next available task from the task queue. The backend assigns the highest-priority unassigned task to your session.
|
|
4
|
-
|
|
5
|
-
## Parameters
|
|
6
|
-
|
|
7
|
-
| Parameter | Required | Description |
|
|
8
|
-
|-----------|----------|-------------|
|
|
9
|
-
| `sessionName` | Yes | Your agent session name |
|
|
10
|
-
| `teamMemberId` | No | Your team member ID for targeted assignment |
|
|
11
|
-
|
|
12
|
-
## Example
|
|
13
|
-
|
|
14
|
-
```bash
|
|
15
|
-
bash config/skills/agent/accept-task/execute.sh '{"sessionName":"dev-1"}'
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
## Output
|
|
19
|
-
|
|
20
|
-
JSON with the assigned task details including path, description, and priority. Returns an empty result if no tasks are available.
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"id": "agent-accept-task",
|
|
3
|
-
"name": "Accept Task",
|
|
4
|
-
"description": "Accept and take the next available task from the task queue.",
|
|
5
|
-
"category": "task-management",
|
|
6
|
-
"skillType": "claude-skill",
|
|
7
|
-
"promptFile": "instructions.md",
|
|
8
|
-
"execution": {
|
|
9
|
-
"type": "script",
|
|
10
|
-
"script": {
|
|
11
|
-
"file": "execute.sh",
|
|
12
|
-
"interpreter": "bash",
|
|
13
|
-
"timeoutMs": 15000
|
|
14
|
-
}
|
|
15
|
-
},
|
|
16
|
-
"assignableRoles": ["developer", "qa", "tpm", "designer", "frontend-developer", "backend-developer", "fullstack-dev", "qa-engineer", "product-manager", "architect", "generalist", "sales", "support"],
|
|
17
|
-
"triggers": ["accept task", "take task", "get next task", "pick up task"],
|
|
18
|
-
"tags": ["task", "queue", "assignment"],
|
|
19
|
-
"version": "1.0.0"
|
|
20
|
-
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# Mark a task as blocked with a reason and optional questions
|
|
3
|
-
set -euo pipefail
|
|
4
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
5
|
-
source "${SCRIPT_DIR}/../_common/lib.sh"
|
|
6
|
-
|
|
7
|
-
INPUT="${1:-}"
|
|
8
|
-
[ -z "$INPUT" ] && error_exit "Usage: execute.sh '{\"absoluteTaskPath\":\"/path/to/task\",\"reason\":\"Missing API credentials\"}'"
|
|
9
|
-
|
|
10
|
-
ABSOLUTE_TASK_PATH=$(echo "$INPUT" | jq -r '.absoluteTaskPath // empty')
|
|
11
|
-
REASON=$(echo "$INPUT" | jq -r '.reason // empty')
|
|
12
|
-
QUESTIONS=$(echo "$INPUT" | jq -r '.questions // empty')
|
|
13
|
-
URGENCY=$(echo "$INPUT" | jq -r '.urgency // empty')
|
|
14
|
-
require_param "absoluteTaskPath" "$ABSOLUTE_TASK_PATH"
|
|
15
|
-
require_param "reason" "$REASON"
|
|
16
|
-
|
|
17
|
-
BODY=$(jq -n \
|
|
18
|
-
--arg absoluteTaskPath "$ABSOLUTE_TASK_PATH" \
|
|
19
|
-
--arg reason "$REASON" \
|
|
20
|
-
--arg questions "$QUESTIONS" \
|
|
21
|
-
--arg urgency "$URGENCY" \
|
|
22
|
-
'{absoluteTaskPath: $absoluteTaskPath, reason: $reason} +
|
|
23
|
-
(if $questions != "" then {questions: $questions} else {} end) +
|
|
24
|
-
(if $urgency != "" then {urgency: $urgency} else {} end)')
|
|
25
|
-
|
|
26
|
-
api_call POST "/task-management/block" "$BODY"
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
# Block Task
|
|
2
|
-
|
|
3
|
-
Mark a task as blocked with a reason explaining the blocker. Optionally include questions for the orchestrator and an urgency level.
|
|
4
|
-
|
|
5
|
-
## Parameters
|
|
6
|
-
|
|
7
|
-
| Parameter | Required | Description |
|
|
8
|
-
|-----------|----------|-------------|
|
|
9
|
-
| `absoluteTaskPath` | Yes | Absolute filesystem path to the task file |
|
|
10
|
-
| `reason` | Yes | Explanation of why the task is blocked |
|
|
11
|
-
| `questions` | No | Specific questions for the orchestrator to resolve the blocker |
|
|
12
|
-
| `urgency` | No | Urgency level: `low`, `medium`, `high`, `critical` |
|
|
13
|
-
|
|
14
|
-
## Example
|
|
15
|
-
|
|
16
|
-
```bash
|
|
17
|
-
bash config/skills/agent/block-task/execute.sh '{"absoluteTaskPath":"/projects/app/tasks/deploy-api.md","reason":"Missing production database credentials","questions":"Where are the DB credentials stored?","urgency":"high"}'
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
## Output
|
|
21
|
-
|
|
22
|
-
JSON confirmation that the task has been marked as blocked and the orchestrator has been notified.
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"id": "agent-block-task",
|
|
3
|
-
"name": "Block Task",
|
|
4
|
-
"description": "Mark a task as blocked with a reason and optional questions for the orchestrator.",
|
|
5
|
-
"category": "task-management",
|
|
6
|
-
"skillType": "claude-skill",
|
|
7
|
-
"promptFile": "instructions.md",
|
|
8
|
-
"execution": {
|
|
9
|
-
"type": "script",
|
|
10
|
-
"script": {
|
|
11
|
-
"file": "execute.sh",
|
|
12
|
-
"interpreter": "bash",
|
|
13
|
-
"timeoutMs": 15000
|
|
14
|
-
}
|
|
15
|
-
},
|
|
16
|
-
"assignableRoles": ["developer", "qa", "tpm", "designer", "frontend-developer", "backend-developer", "fullstack-dev", "qa-engineer", "product-manager", "architect", "generalist", "sales", "support"],
|
|
17
|
-
"triggers": ["block task", "task blocked", "stuck on task", "need help"],
|
|
18
|
-
"tags": ["task", "blocker", "status"],
|
|
19
|
-
"version": "1.0.0"
|
|
20
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# Run quality gate checks against the project
|
|
3
|
-
set -euo pipefail
|
|
4
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
5
|
-
source "${SCRIPT_DIR}/../_common/lib.sh"
|
|
6
|
-
|
|
7
|
-
INPUT="${1:-}"
|
|
8
|
-
[ -z "$INPUT" ] && error_exit "Usage: execute.sh '{\"projectPath\":\"/path/to/project\"}'"
|
|
9
|
-
|
|
10
|
-
PROJECT_PATH=$(echo "$INPUT" | jq -r '.projectPath // empty')
|
|
11
|
-
GATES=$(echo "$INPUT" | jq -r '.gates // empty')
|
|
12
|
-
SKIP_OPTIONAL=$(echo "$INPUT" | jq -r '.skipOptional // empty')
|
|
13
|
-
|
|
14
|
-
# Build body with optional fields
|
|
15
|
-
BODY=$(echo "$INPUT" | jq '{} +
|
|
16
|
-
(if .projectPath then {projectPath: .projectPath} else {} end) +
|
|
17
|
-
(if .gates then {gates: .gates} else {} end) +
|
|
18
|
-
(if .skipOptional == true then {skipOptional: true} else {} end)')
|
|
19
|
-
|
|
20
|
-
api_call POST "/quality-gates/check" "$BODY"
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
# Check Quality Gates
|
|
2
|
-
|
|
3
|
-
Run quality gate checks against the project. This includes build verification, linting, unit tests, and any other configured gates. Use this before completing a task to ensure your changes meet project standards.
|
|
4
|
-
|
|
5
|
-
Note: This operation may take several minutes depending on the project size and configured gates.
|
|
6
|
-
|
|
7
|
-
## Parameters
|
|
8
|
-
|
|
9
|
-
| Parameter | Required | Description |
|
|
10
|
-
|-----------|----------|-------------|
|
|
11
|
-
| `projectPath` | No | Absolute path to the project directory |
|
|
12
|
-
| `gates` | No | Array of specific gates to run (e.g., `["build", "test", "lint"]`). Runs all if omitted |
|
|
13
|
-
| `skipOptional` | No | Set to `true` to skip optional quality gates |
|
|
14
|
-
|
|
15
|
-
## Example
|
|
16
|
-
|
|
17
|
-
```bash
|
|
18
|
-
bash config/skills/agent/check-quality-gates/execute.sh '{"projectPath":"/projects/app","gates":["build","test"]}'
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
## Output
|
|
22
|
-
|
|
23
|
-
JSON with results for each quality gate including pass/fail status, duration, and any error details.
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"id": "agent-check-quality-gates",
|
|
3
|
-
"name": "Check Quality Gates",
|
|
4
|
-
"description": "Run quality gate checks (build, tests, lint) against the project before completing a task.",
|
|
5
|
-
"category": "quality",
|
|
6
|
-
"skillType": "claude-skill",
|
|
7
|
-
"promptFile": "instructions.md",
|
|
8
|
-
"execution": {
|
|
9
|
-
"type": "script",
|
|
10
|
-
"script": {
|
|
11
|
-
"file": "execute.sh",
|
|
12
|
-
"interpreter": "bash",
|
|
13
|
-
"timeoutMs": 300000
|
|
14
|
-
}
|
|
15
|
-
},
|
|
16
|
-
"assignableRoles": ["developer", "qa", "tpm", "designer", "frontend-developer", "backend-developer", "fullstack-dev", "qa-engineer", "product-manager", "architect", "generalist", "sales", "support"],
|
|
17
|
-
"triggers": ["check quality", "run gates", "quality gates", "verify build", "run tests"],
|
|
18
|
-
"tags": ["quality", "testing", "build", "lint", "gates"],
|
|
19
|
-
"version": "1.0.0"
|
|
20
|
-
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# Mark a task as complete with a summary of the work done
|
|
3
|
-
set -euo pipefail
|
|
4
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
5
|
-
source "${SCRIPT_DIR}/../_common/lib.sh"
|
|
6
|
-
|
|
7
|
-
INPUT="${1:-}"
|
|
8
|
-
[ -z "$INPUT" ] && error_exit "Usage: execute.sh '{\"absoluteTaskPath\":\"/path/to/task\",\"sessionName\":\"dev-1\",\"summary\":\"Implemented feature X\"}'"
|
|
9
|
-
|
|
10
|
-
ABSOLUTE_TASK_PATH=$(echo "$INPUT" | jq -r '.absoluteTaskPath // empty')
|
|
11
|
-
SESSION_NAME=$(echo "$INPUT" | jq -r '.sessionName // empty')
|
|
12
|
-
SUMMARY=$(echo "$INPUT" | jq -r '.summary // empty')
|
|
13
|
-
SKIP_GATES=$(echo "$INPUT" | jq -r '.skipGates // empty')
|
|
14
|
-
require_param "absoluteTaskPath" "$ABSOLUTE_TASK_PATH"
|
|
15
|
-
require_param "sessionName" "$SESSION_NAME"
|
|
16
|
-
require_param "summary" "$SUMMARY"
|
|
17
|
-
|
|
18
|
-
BODY=$(jq -n \
|
|
19
|
-
--arg absoluteTaskPath "$ABSOLUTE_TASK_PATH" \
|
|
20
|
-
--arg sessionName "$SESSION_NAME" \
|
|
21
|
-
--arg summary "$SUMMARY" \
|
|
22
|
-
--arg skipGates "$SKIP_GATES" \
|
|
23
|
-
'{absoluteTaskPath: $absoluteTaskPath, sessionName: $sessionName, summary: $summary} +
|
|
24
|
-
(if $skipGates == "true" then {skipGates: true} else {} end)')
|
|
25
|
-
|
|
26
|
-
api_call POST "/task-management/complete" "$BODY"
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
# Complete Task
|
|
2
|
-
|
|
3
|
-
Mark a task as complete with a summary of the work done. Optionally skip quality gates if they have already been verified separately.
|
|
4
|
-
|
|
5
|
-
## Parameters
|
|
6
|
-
|
|
7
|
-
| Parameter | Required | Description |
|
|
8
|
-
|-----------|----------|-------------|
|
|
9
|
-
| `absoluteTaskPath` | Yes | Absolute filesystem path to the task file |
|
|
10
|
-
| `sessionName` | Yes | Your agent session name |
|
|
11
|
-
| `summary` | Yes | Summary of the work completed |
|
|
12
|
-
| `skipGates` | No | Set to `true` to skip quality gate checks |
|
|
13
|
-
|
|
14
|
-
## Example
|
|
15
|
-
|
|
16
|
-
```bash
|
|
17
|
-
bash config/skills/agent/complete-task/execute.sh '{"absoluteTaskPath":"/projects/app/tasks/implement-login.md","sessionName":"dev-1","summary":"Implemented login form with validation and tests"}'
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
## Output
|
|
21
|
-
|
|
22
|
-
JSON confirmation of task completion status.
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"id": "agent-complete-task",
|
|
3
|
-
"name": "Complete Task",
|
|
4
|
-
"description": "Mark a task as complete with a summary of the work done.",
|
|
5
|
-
"category": "task-management",
|
|
6
|
-
"skillType": "claude-skill",
|
|
7
|
-
"promptFile": "instructions.md",
|
|
8
|
-
"execution": {
|
|
9
|
-
"type": "script",
|
|
10
|
-
"script": {
|
|
11
|
-
"file": "execute.sh",
|
|
12
|
-
"interpreter": "bash",
|
|
13
|
-
"timeoutMs": 15000
|
|
14
|
-
}
|
|
15
|
-
},
|
|
16
|
-
"assignableRoles": ["developer", "qa", "tpm", "designer", "frontend-developer", "backend-developer", "fullstack-dev", "qa-engineer", "product-manager", "architect", "generalist", "sales", "support"],
|
|
17
|
-
"triggers": ["complete task", "finish task", "mark done", "task done"],
|
|
18
|
-
"tags": ["task", "completion", "status"],
|
|
19
|
-
"version": "1.0.0"
|
|
20
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# Retrieve accumulated context including memories, learnings, and project knowledge
|
|
3
|
-
set -euo pipefail
|
|
4
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
5
|
-
source "${SCRIPT_DIR}/../_common/lib.sh"
|
|
6
|
-
|
|
7
|
-
INPUT="${1:-}"
|
|
8
|
-
[ -z "$INPUT" ] && error_exit "Usage: execute.sh '{\"agentId\":\"dev-1\",\"agentRole\":\"developer\",\"projectPath\":\"/projects/app\"}'"
|
|
9
|
-
|
|
10
|
-
AGENT_ID=$(echo "$INPUT" | jq -r '.agentId // empty')
|
|
11
|
-
AGENT_ROLE=$(echo "$INPUT" | jq -r '.agentRole // empty')
|
|
12
|
-
PROJECT_PATH=$(echo "$INPUT" | jq -r '.projectPath // empty')
|
|
13
|
-
require_param "agentId" "$AGENT_ID"
|
|
14
|
-
require_param "agentRole" "$AGENT_ROLE"
|
|
15
|
-
require_param "projectPath" "$PROJECT_PATH"
|
|
16
|
-
|
|
17
|
-
BODY=$(jq -n \
|
|
18
|
-
--arg agentId "$AGENT_ID" \
|
|
19
|
-
--arg agentRole "$AGENT_ROLE" \
|
|
20
|
-
--arg projectPath "$PROJECT_PATH" \
|
|
21
|
-
'{agentId: $agentId, agentRole: $agentRole, projectPath: $projectPath}')
|
|
22
|
-
|
|
23
|
-
api_call POST "/memory/my-context" "$BODY"
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
# Get My Context
|
|
2
|
-
|
|
3
|
-
Retrieve your accumulated context including memories, learnings, and project knowledge. Use this at startup or when beginning a new task to load relevant background information.
|
|
4
|
-
|
|
5
|
-
## Parameters
|
|
6
|
-
|
|
7
|
-
| Parameter | Required | Description |
|
|
8
|
-
|-----------|----------|-------------|
|
|
9
|
-
| `agentId` | Yes | Your agent ID |
|
|
10
|
-
| `agentRole` | Yes | Your role (e.g., `"developer"`, `"qa"`) |
|
|
11
|
-
| `projectPath` | Yes | Absolute path to the current project |
|
|
12
|
-
|
|
13
|
-
## Example
|
|
14
|
-
|
|
15
|
-
```bash
|
|
16
|
-
bash config/skills/agent/get-my-context/execute.sh '{"agentId":"dev-1","agentRole":"developer","projectPath":"/projects/app"}'
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
## Output
|
|
20
|
-
|
|
21
|
-
JSON with your accumulated context including past memories, learnings, project-specific knowledge, team SOPs, and relevant history.
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"id": "agent-get-my-context",
|
|
3
|
-
"name": "Get My Context",
|
|
4
|
-
"description": "Retrieve your accumulated context including memories, learnings, and project knowledge.",
|
|
5
|
-
"category": "memory",
|
|
6
|
-
"skillType": "claude-skill",
|
|
7
|
-
"promptFile": "instructions.md",
|
|
8
|
-
"execution": {
|
|
9
|
-
"type": "script",
|
|
10
|
-
"script": {
|
|
11
|
-
"file": "execute.sh",
|
|
12
|
-
"interpreter": "bash",
|
|
13
|
-
"timeoutMs": 15000
|
|
14
|
-
}
|
|
15
|
-
},
|
|
16
|
-
"assignableRoles": ["developer", "qa", "tpm", "designer", "frontend-developer", "backend-developer", "fullstack-dev", "qa-engineer", "product-manager", "architect", "generalist", "sales", "support"],
|
|
17
|
-
"triggers": ["get context", "my context", "what do I know", "load context"],
|
|
18
|
-
"tags": ["memory", "context", "knowledge", "startup"],
|
|
19
|
-
"version": "1.0.0"
|
|
20
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# Query standard operating procedures relevant to the current context
|
|
3
|
-
set -euo pipefail
|
|
4
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
5
|
-
source "${SCRIPT_DIR}/../_common/lib.sh"
|
|
6
|
-
|
|
7
|
-
INPUT="${1:-}"
|
|
8
|
-
[ -z "$INPUT" ] && error_exit "Usage: execute.sh '{\"context\":\"deploying to production\"}'"
|
|
9
|
-
|
|
10
|
-
CONTEXT=$(echo "$INPUT" | jq -r '.context // empty')
|
|
11
|
-
require_param "context" "$CONTEXT"
|
|
12
|
-
|
|
13
|
-
CATEGORY=$(echo "$INPUT" | jq -r '.category // empty')
|
|
14
|
-
ROLE=$(echo "$INPUT" | jq -r '.role // empty')
|
|
15
|
-
|
|
16
|
-
BODY=$(jq -n \
|
|
17
|
-
--arg context "$CONTEXT" \
|
|
18
|
-
--arg category "$CATEGORY" \
|
|
19
|
-
--arg role "$ROLE" \
|
|
20
|
-
'{context: $context} +
|
|
21
|
-
(if $category != "" then {category: $category} else {} end) +
|
|
22
|
-
(if $role != "" then {role: $role} else {} end)')
|
|
23
|
-
|
|
24
|
-
api_call POST "/system/sops/query" "$BODY"
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
# Get SOPs
|
|
2
|
-
|
|
3
|
-
Query standard operating procedures (SOPs) relevant to your current context or task. SOPs contain team-defined guidelines, workflows, and best practices.
|
|
4
|
-
|
|
5
|
-
## Parameters
|
|
6
|
-
|
|
7
|
-
| Parameter | Required | Description |
|
|
8
|
-
|-----------|----------|-------------|
|
|
9
|
-
| `context` | Yes | Description of what you need SOPs for (e.g., `"deploying to production"`) |
|
|
10
|
-
| `category` | No | Filter by SOP category (e.g., `"deployment"`, `"testing"`, `"code-review"`) |
|
|
11
|
-
| `role` | No | Filter by role relevance (e.g., `"developer"`, `"qa"`) |
|
|
12
|
-
|
|
13
|
-
## Example
|
|
14
|
-
|
|
15
|
-
```bash
|
|
16
|
-
bash config/skills/agent/get-sops/execute.sh '{"context":"deploying a new backend service","category":"deployment","role":"developer"}'
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
## Output
|
|
20
|
-
|
|
21
|
-
JSON with matching SOPs including their titles, content, and applicability metadata.
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"id": "agent-get-sops",
|
|
3
|
-
"name": "Get SOPs",
|
|
4
|
-
"description": "Query standard operating procedures relevant to your current context or task.",
|
|
5
|
-
"category": "system",
|
|
6
|
-
"skillType": "claude-skill",
|
|
7
|
-
"promptFile": "instructions.md",
|
|
8
|
-
"execution": {
|
|
9
|
-
"type": "script",
|
|
10
|
-
"script": {
|
|
11
|
-
"file": "execute.sh",
|
|
12
|
-
"interpreter": "bash",
|
|
13
|
-
"timeoutMs": 15000
|
|
14
|
-
}
|
|
15
|
-
},
|
|
16
|
-
"assignableRoles": ["developer", "qa", "tpm", "designer", "frontend-developer", "backend-developer", "fullstack-dev", "qa-engineer", "product-manager", "architect", "generalist", "sales", "support"],
|
|
17
|
-
"triggers": ["get sops", "standard procedures", "how to", "best practices"],
|
|
18
|
-
"tags": ["system", "sops", "procedures", "guidelines"],
|
|
19
|
-
"version": "1.0.0"
|
|
20
|
-
}
|