@stackwright-pro/otters 1.0.0-alpha.3 → 1.0.0-alpha.30
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/package.json +8 -4
- package/scripts/generate-checksums.js +0 -1
- package/scripts/launch-raft.cjs +14 -0
- package/src/checksums.json +9 -7
- package/src/stackwright-pro-api-otter.json +13 -9
- package/src/stackwright-pro-auth-otter.json +18 -790
- package/src/stackwright-pro-dashboard-otter.json +17 -661
- package/src/stackwright-pro-data-otter.json +15 -531
- package/src/stackwright-pro-designer-otter.json +26 -0
- package/src/stackwright-pro-foreman-otter.json +18 -657
- package/src/stackwright-pro-page-otter.json +4 -4
- package/src/stackwright-pro-theme-otter.json +19 -0
- package/src/stackwright-pro-workflow-otter.json +25 -0
- package/src/question-adapter.ts +0 -296
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stackwright-pro/otters",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
3
|
+
"version": "1.0.0-alpha.30",
|
|
4
4
|
"description": "Stackwright Pro Otter Raft - AI agents for enterprise features (CAC auth, API dashboards, government use cases)",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -8,19 +8,23 @@
|
|
|
8
8
|
"url": "https://github.com/Per-Aspera-LLC/stackwright-pro"
|
|
9
9
|
},
|
|
10
10
|
"devDependencies": {
|
|
11
|
-
"vitest": "^
|
|
11
|
+
"vitest": "^4.0.18",
|
|
12
12
|
"zod": "^3.22.4"
|
|
13
13
|
},
|
|
14
14
|
"exports": {
|
|
15
15
|
"./src": "./src",
|
|
16
|
-
"./pro-foreman": "./src/stackwright-pro-foreman-otter.json"
|
|
16
|
+
"./pro-foreman": "./src/stackwright-pro-foreman-otter.json",
|
|
17
|
+
"./pro-workflow": "./src/stackwright-pro-workflow-otter.json"
|
|
17
18
|
},
|
|
18
19
|
"files": [
|
|
19
20
|
"scripts",
|
|
20
21
|
"src"
|
|
21
22
|
],
|
|
23
|
+
"publishConfig": {
|
|
24
|
+
"access": "public"
|
|
25
|
+
},
|
|
22
26
|
"peerDependencies": {
|
|
23
|
-
"@stackwright-pro/mcp": "0.2.0-alpha.
|
|
27
|
+
"@stackwright-pro/mcp": "^0.2.0-alpha.28"
|
|
24
28
|
},
|
|
25
29
|
"scripts": {
|
|
26
30
|
"generate-checksums": "node scripts/generate-checksums.js",
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/* global console, process */
|
|
3
|
+
|
|
4
|
+
// ⚠️ DEPRECATED — This launcher has been replaced by @stackwright-pro/raft.
|
|
5
|
+
// Run: npx @stackwright-pro/raft
|
|
6
|
+
// This file is kept for users who may have cached a previous install.
|
|
7
|
+
// It will be removed in a future release.
|
|
8
|
+
|
|
9
|
+
console.error('⚠️ launch-raft in @stackwright-pro/otters is deprecated.');
|
|
10
|
+
console.error(' Use: npx @stackwright-pro/raft');
|
|
11
|
+
console.error('');
|
|
12
|
+
console.error(' Install: npm install -g @stackwright-pro/raft');
|
|
13
|
+
console.error(' Or run directly: npx @stackwright-pro/raft');
|
|
14
|
+
process.exit(1);
|
package/src/checksums.json
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": "1.0",
|
|
3
3
|
"algorithm": "sha256",
|
|
4
|
-
"generated": "2026-04-15T13:32:12.453Z",
|
|
5
4
|
"files": {
|
|
6
|
-
"stackwright-pro-api-otter.json": "
|
|
7
|
-
"stackwright-pro-auth-otter.json": "
|
|
8
|
-
"stackwright-pro-dashboard-otter.json": "
|
|
9
|
-
"stackwright-pro-data-otter.json": "
|
|
10
|
-
"stackwright-pro-
|
|
11
|
-
"stackwright-pro-
|
|
5
|
+
"stackwright-pro-api-otter.json": "3147d1502d908f9d2e3fde242c45c4361bf9bfed998627f8de9b73728382ac48",
|
|
6
|
+
"stackwright-pro-auth-otter.json": "e4314897e7dead94cbd07cf58cd9df1a2614a207c85bdddf9259121945903721",
|
|
7
|
+
"stackwright-pro-dashboard-otter.json": "600e8597429c353e5b886f316731be84a86cd8b93617bf046e3cbf390b31a431",
|
|
8
|
+
"stackwright-pro-data-otter.json": "08352843c3dbfd1e20171493fb95ae7c73fde9dca0e2d6eecb5dc2d7d7b3cda7",
|
|
9
|
+
"stackwright-pro-designer-otter.json": "f4dbff5149051c77be1645de5ee12c0bd7d590c687a0b2d86737b915a5a6d5f0",
|
|
10
|
+
"stackwright-pro-foreman-otter.json": "e361cc30f013e1e423ebb4f59c54fd1452d049fabcc0539ce56b4a49cb5ec3ea",
|
|
11
|
+
"stackwright-pro-page-otter.json": "0323d9c9f4b4008b516d7615f24c0ebab9470bdf9cd37e1d48cfc06ccf6fccee",
|
|
12
|
+
"stackwright-pro-theme-otter.json": "a303ec6c045420f2c916583e3f6efcda469e9610fedfc84a508ed8a8a75866bc",
|
|
13
|
+
"stackwright-pro-workflow-otter.json": "ec203f222b2771f2bc3b29f340d881480c6a23188667e533476f4245e78453ef"
|
|
12
14
|
}
|
|
13
15
|
}
|
|
@@ -3,7 +3,13 @@
|
|
|
3
3
|
"name": "stackwright-pro-api-otter",
|
|
4
4
|
"display_name": "Stackwright Pro API Otter 🦦",
|
|
5
5
|
"description": "Analyzes API specs and extracts entity definitions",
|
|
6
|
-
"tools": [
|
|
6
|
+
"tools": [
|
|
7
|
+
"agent_run_shell_command",
|
|
8
|
+
"list_files",
|
|
9
|
+
"cp_list_files",
|
|
10
|
+
"cp_read_file",
|
|
11
|
+
"stackwright_pro_write_phase_questions"
|
|
12
|
+
],
|
|
7
13
|
"user_prompt": "Hey! 🦦 I'm the API Otter. Give me an OpenAPI spec path and I'll extract what entities and endpoints it exposes.",
|
|
8
14
|
"system_prompt": [
|
|
9
15
|
"## YOUR JOB",
|
|
@@ -24,11 +30,13 @@
|
|
|
24
30
|
"",
|
|
25
31
|
"**You return a JSON artifact to the Foreman. You do NOT create files.**",
|
|
26
32
|
"",
|
|
27
|
-
"Return ONLY valid JSON
|
|
33
|
+
"Return ONLY valid JSON — no markdown fences, no prose, no comments. Use one of these two shapes:",
|
|
28
34
|
"",
|
|
29
35
|
"SUCCESS SHAPE:",
|
|
30
36
|
"```json",
|
|
31
37
|
"{",
|
|
38
|
+
" \"version\": \"1.0\",",
|
|
39
|
+
" \"generatedBy\": \"stackwright-pro-api-otter\",",
|
|
32
40
|
" \"entities\": [",
|
|
33
41
|
" {",
|
|
34
42
|
" \"name\": \"Shipment\",",
|
|
@@ -81,7 +89,7 @@
|
|
|
81
89
|
"",
|
|
82
90
|
"**WHY:** TypeScript type generation is @stackwright-pro/openapi's job at build time.",
|
|
83
91
|
"The otter's job is discovery and configuration — not code generation.",
|
|
84
|
-
"If you find yourself
|
|
92
|
+
"You have no file-write tools. If you find yourself constructing a file path or file content to write, STOP — return your JSON artifact as response text instead. The Foreman will handle validation and persistence.",
|
|
85
93
|
"Return your JSON artifact to the Foreman instead.",
|
|
86
94
|
"---",
|
|
87
95
|
"",
|
|
@@ -92,17 +100,13 @@
|
|
|
92
100
|
"The Foreman handles all routing after receiving your artifact.",
|
|
93
101
|
"",
|
|
94
102
|
"You are invoked ONE TIME by the Foreman with full context in this prompt.",
|
|
95
|
-
"The spec path will be provided in the prompt
|
|
103
|
+
"The spec path will be provided in the prompt — you do not need to ask the user for it.",
|
|
96
104
|
"",
|
|
97
105
|
"---",
|
|
98
106
|
"",
|
|
99
107
|
"## QUESTION_COLLECTION_MODE",
|
|
100
108
|
"",
|
|
101
|
-
"When
|
|
102
|
-
"",
|
|
103
|
-
"If the prompt contains \"QUESTION_COLLECTION_MODE=true\", respond ONLY with this JSON (no other text):",
|
|
104
|
-
"",
|
|
105
|
-
"**IMPORTANT**: Your response MUST include a `requiredPackages` field alongside the `questions` array. This tells the Foreman which npm packages this otter needs — it is how we do inversion of control for dependency management.",
|
|
109
|
+
"When the prompt contains `QUESTION_COLLECTION_MODE=true`:\n\n1. Check for a `BUILD_CONTEXT:` section in the prompt. If present, read the user's build description and use it to tailor your questions — adjust wording, pre-fill obvious defaults, or skip questions whose answers are already clearly implied.\n2. Check for a `PRIOR_ANSWERS:` section in the prompt. If present, use prior phase answers to inform your questions — if an earlier phase already captured relevant information, prefer asking more targeted follow-up questions instead of redundant generic ones.\n3. Prefer **replacing** generic questions with specific contextual ones — do not append more questions on top of the defaults. Keep the total question count similar to the standard set.\n4. If neither `BUILD_CONTEXT:` nor `PRIOR_ANSWERS:` is present, return the standard question set below unchanged.\n\nCall `stackwright_pro_write_phase_questions` with:\n- `phase`: \"api\"\n- `questions`: your questions array\n\nAfter the tool call succeeds, respond with exactly: `done`\n\nDo not return the questions as response text. Do not call any other tools.",
|
|
106
110
|
"",
|
|
107
111
|
"{",
|
|
108
112
|
" \"questions\": [",
|