@capagents/forgeqe 0.0.0-stage → 1.0.1
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/HOW_TO_USE.md +1639 -0
- package/README.md +338 -2
- package/bin/forgeqe.d.ts +3 -0
- package/bin/forgeqe.js +188 -0
- package/docs/ARCHITECTURE.md +408 -0
- package/docs/security-data-flow.html +1870 -0
- package/docs/user-guide.html +2094 -0
- package/evals/domain/access-role-change.yaml +37 -0
- package/evals/domain/banking-payment-transfer.yaml +41 -0
- package/evals/domain/gdpr-account-erasure.yaml +30 -0
- package/evals/domain/insurance-claim-fnol.yaml +30 -0
- package/evals/domain/insurance-policy-renewal.yaml +37 -0
- package/evals/domain/lending-loan-application.yaml +36 -0
- package/forgeqe-architecture.html +718 -0
- package/forgeqe.example.yaml +203 -0
- package/knowledge/README.md +18 -0
- package/knowledge/business-rules.md +10 -0
- package/knowledge/compliance.md +16 -0
- package/knowledge/environments.md +5 -0
- package/knowledge/glossary.md +5 -0
- package/knowledge/product.md +16 -0
- package/knowledge/roles.md +9 -0
- package/knowledge/test-data.md +7 -0
- package/llms.example.json +51 -0
- package/package.json +63 -4
- package/prompts/README.md +34 -0
- package/prompts/api-scenarios.md +21 -0
- package/prompts/api-tests.md +39 -0
- package/prompts/brain.md +166 -0
- package/prompts/browser-capture.md +7 -0
- package/prompts/browser-case-report.md +7 -0
- package/prompts/browser-checks.md +14 -0
- package/prompts/browser-efficiency.md +7 -0
- package/prompts/browser-error-recovery.md +15 -0
- package/prompts/browser-extra.md +5 -0
- package/prompts/browser-goal-verification.md +13 -0
- package/prompts/browser-skill-select.md +6 -0
- package/prompts/domain-rule.md +13 -0
- package/prompts/eval-judge.md +19 -0
- package/prompts/explore-charters.md +27 -0
- package/prompts/find-tests.md +28 -0
- package/prompts/heal.md +40 -0
- package/prompts/pr-review.md +29 -0
- package/prompts/skill-rule.md +6 -0
- package/prompts/test-agent.md +34 -0
- package/prompts/test-reviewer.md +30 -0
- package/prompts/test-rules.md +28 -0
- package/py/forgeqe_engine/__init__.py +3 -0
- package/py/forgeqe_engine/__main__.py +3 -0
- package/py/forgeqe_engine/brand.py +453 -0
- package/py/forgeqe_engine/brand_assets.py +6 -0
- package/py/forgeqe_engine/browser.py +196 -0
- package/py/forgeqe_engine/capture.py +538 -0
- package/py/forgeqe_engine/checks.py +98 -0
- package/py/forgeqe_engine/cli.py +188 -0
- package/py/forgeqe_engine/diagnostics.py +609 -0
- package/py/forgeqe_engine/llm.py +195 -0
- package/py/forgeqe_engine/logins.py +251 -0
- package/py/forgeqe_engine/loops.py +224 -0
- package/py/forgeqe_engine/memory.py +1004 -0
- package/py/forgeqe_engine/network.py +244 -0
- package/py/forgeqe_engine/prompts.py +20 -0
- package/py/forgeqe_engine/replay.py +240 -0
- package/py/forgeqe_engine/report.py +173 -0
- package/py/forgeqe_engine/service.py +1335 -0
- package/py/forgeqe_engine/settings.py +93 -0
- package/py/forgeqe_engine/skills.py +88 -0
- package/py/forgeqe_engine/summary.py +239 -0
- package/py/forgeqe_engine/urls.py +81 -0
- package/py/forgeqe_engine/workflow_yaml.py +689 -0
- package/skills/dotnet-nunit-playwright/SKILL.md +34 -0
- package/skills/dynamics-365/SKILL.md +21 -0
- package/skills/playwright-typescript/SKILL.md +35 -0
- package/skills/writing-skills/SKILL.md +30 -0
- package/src/api/plan.ts +246 -0
- package/src/api/run.ts +204 -0
- package/src/api/scenario.ts +502 -0
- package/src/api/schema.ts +170 -0
- package/src/api/spec.ts +624 -0
- package/src/api/store.ts +232 -0
- package/src/api/traffic.ts +281 -0
- package/src/api/types.ts +163 -0
- package/src/api/write.ts +272 -0
- package/src/auth/signin.ts +494 -0
- package/src/auth/store.ts +170 -0
- package/src/brain/index.ts +189 -0
- package/src/brain/prompt.ts +19 -0
- package/src/capabilities/docs.ts +101 -0
- package/src/capabilities/guide.ts +455 -0
- package/src/capabilities/registry.ts +343 -0
- package/src/capabilities/render.ts +106 -0
- package/src/capabilities/status.ts +137 -0
- package/src/card.ts +11 -0
- package/src/cases/ado.ts +325 -0
- package/src/cases/api.ts +117 -0
- package/src/cases/bugs.ts +223 -0
- package/src/cases/confluence.ts +111 -0
- package/src/cases/context.ts +223 -0
- package/src/cases/dashboards.ts +137 -0
- package/src/cases/failure.ts +97 -0
- package/src/cases/files.ts +295 -0
- package/src/cases/goal.ts +53 -0
- package/src/cases/http.ts +111 -0
- package/src/cases/index.ts +131 -0
- package/src/cases/jira.ts +122 -0
- package/src/cases/qtest.ts +108 -0
- package/src/cases/quality.ts +190 -0
- package/src/cases/rag.ts +100 -0
- package/src/cases/readiness.ts +284 -0
- package/src/cases/save.ts +149 -0
- package/src/cases/sprints.ts +148 -0
- package/src/cases/testrail.ts +176 -0
- package/src/cases/types.ts +107 -0
- package/src/cases/wiki.ts +105 -0
- package/src/cases/xray.ts +206 -0
- package/src/cases/zephyr.ts +153 -0
- package/src/childEnv.ts +86 -0
- package/src/cli/args.ts +114 -0
- package/src/cli/help.ts +167 -0
- package/src/cli/index.ts +1142 -0
- package/src/cli/terminal.ts +187 -0
- package/src/code/areas.ts +337 -0
- package/src/code/attention.ts +214 -0
- package/src/code/find.ts +540 -0
- package/src/code/handoff.ts +541 -0
- package/src/code/history.ts +170 -0
- package/src/code/impact.ts +231 -0
- package/src/code/index.ts +34 -0
- package/src/code/livebrowser.ts +67 -0
- package/src/code/loop.ts +603 -0
- package/src/code/notes.ts +75 -0
- package/src/code/profile.ts +226 -0
- package/src/code/prompt.ts +303 -0
- package/src/code/prreview.ts +649 -0
- package/src/code/prtests.ts +103 -0
- package/src/code/replay.ts +772 -0
- package/src/code/review.ts +202 -0
- package/src/code/runtime.ts +781 -0
- package/src/code/slices.ts +159 -0
- package/src/code/testrun.ts +187 -0
- package/src/code/traceability.ts +100 -0
- package/src/code/worktree.ts +153 -0
- package/src/commands.ts +101 -0
- package/src/config.ts +970 -0
- package/src/detail.ts +65 -0
- package/src/domain.ts +19 -0
- package/src/engine/bridge.ts +359 -0
- package/src/engine/mock.ts +102 -0
- package/src/engine/setup.ts +298 -0
- package/src/entra.ts +154 -0
- package/src/env.ts +24 -0
- package/src/evals/domain.ts +338 -0
- package/src/explore/charters.ts +151 -0
- package/src/explore/run.ts +280 -0
- package/src/explore/story.ts +106 -0
- package/src/guard.ts +51 -0
- package/src/heal/loop.ts +357 -0
- package/src/heal/prompt.ts +143 -0
- package/src/heal/report.ts +95 -0
- package/src/index.ts +12 -0
- package/src/init.ts +102 -0
- package/src/knowledge.ts +114 -0
- package/src/legacyEnv.ts +9 -0
- package/src/llm.ts +61 -0
- package/src/locale.ts +25 -0
- package/src/logins.ts +148 -0
- package/src/managed.ts +101 -0
- package/src/mcp/apitools.ts +335 -0
- package/src/mcp/captools.ts +25 -0
- package/src/mcp/casetools.ts +223 -0
- package/src/mcp/commands.ts +421 -0
- package/src/mcp/exploretools.ts +129 -0
- package/src/mcp/external.ts +172 -0
- package/src/mcp/git.ts +78 -0
- package/src/mcp/notifytools.ts +49 -0
- package/src/mcp/prtools.ts +261 -0
- package/src/mcp/qualitytools.ts +154 -0
- package/src/mcp/repotests.ts +286 -0
- package/src/mcp/server.ts +234 -0
- package/src/mcp/tools.ts +810 -0
- package/src/memory.ts +250 -0
- package/src/money.ts +39 -0
- package/src/monitor/alerts.ts +94 -0
- package/src/monitor/background.ts +68 -0
- package/src/monitor/run.ts +263 -0
- package/src/monitor/state.ts +105 -0
- package/src/notify/events.ts +144 -0
- package/src/notify/notice.ts +177 -0
- package/src/prices.ts +175 -0
- package/src/print.ts +54 -0
- package/src/privacy.ts +35 -0
- package/src/prompts.ts +165 -0
- package/src/quality/budgets.ts +249 -0
- package/src/quality/history.ts +149 -0
- package/src/quality/visual.ts +201 -0
- package/src/report/data.ts +475 -0
- package/src/report/html.ts +106 -0
- package/src/report/template.html +84 -0
- package/src/run.ts +243 -0
- package/src/sessionLog.ts +216 -0
- package/src/sessionLogins.ts +94 -0
- package/src/skills/registry.ts +217 -0
- package/src/skills/scaffold.ts +65 -0
- package/src/skills/select.ts +37 -0
- package/src/skills/view.ts +44 -0
- package/src/suite/report.ts +135 -0
- package/src/suite/run.ts +303 -0
- package/src/summary.ts +188 -0
- package/src/tools.ts +130 -0
- package/src/tui/App.tsx +983 -0
- package/src/tui/clipboard.ts +36 -0
- package/src/tui/components.tsx +263 -0
- package/src/tui/dialogs.ts +65 -0
- package/src/tui/main.tsx +20 -0
- package/src/tui/text.ts +28 -0
- package/src/tui/theme.ts +104 -0
- package/src/tui/transcript.tsx +344 -0
- package/src/types.ts +146 -0
- package/src/update.ts +311 -0
- package/src/usage.ts +158 -0
package/src/commands.ts
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
export type ShellCommand =
|
|
2
|
+
| { type: "help" }
|
|
3
|
+
| { type: "exit" }
|
|
4
|
+
| { type: "clear" }
|
|
5
|
+
| { type: "stop" }
|
|
6
|
+
| { type: "headed"; value: boolean }
|
|
7
|
+
/** value unset: toggle. */
|
|
8
|
+
| { type: "details"; value?: boolean }
|
|
9
|
+
| { type: "profile"; name: string }
|
|
10
|
+
| { type: "logs"; shots: boolean }
|
|
11
|
+
| { type: "skills"; name?: string }
|
|
12
|
+
| { type: "features" }
|
|
13
|
+
/** Sign in to a system (or save a secret by name), forget one, or show which are signed in. */
|
|
14
|
+
| { type: "auth"; action: "status" | "login" | "logout"; system?: string }
|
|
15
|
+
| { type: "text"; text: string }
|
|
16
|
+
| { type: "unknown"; raw: string }
|
|
17
|
+
|
|
18
|
+
export const HELP = [
|
|
19
|
+
"ForgeQE shell",
|
|
20
|
+
"Type what you want. ForgeQE's agent works out whether it is a goal for the browser, test cases",
|
|
21
|
+
"(Jira, Azure DevOps, Xray, a file, or steps you paste), a test to write, or a CI pipeline to build,",
|
|
22
|
+
"and does it. For example:",
|
|
23
|
+
" Go to booking.com and search hotels in Mumbai for tomorrow",
|
|
24
|
+
" Run SHOP-12 and SHOP-14 from Jira, two browsers at once",
|
|
25
|
+
" Run test plan 12 suite 34 from Azure DevOps and don't post results",
|
|
26
|
+
" Write a Playwright test for that run",
|
|
27
|
+
" Review PR 42 and focus on error handling",
|
|
28
|
+
" Add a GitHub Actions workflow that runs tests/cases.yaml on every PR, and make it green",
|
|
29
|
+
"",
|
|
30
|
+
" /stop stop what is running (or press esc)",
|
|
31
|
+
" /headed on|off show the browser (live profiles)",
|
|
32
|
+
" /details [on|off] show everything the agents do (reasoning, every file read, engine logs); off: just progress",
|
|
33
|
+
" /profile <name> switch LLM profile (or press tab)",
|
|
34
|
+
" /logs [shots] save this session's log and runs in one archive to share (shots: with screenshots)",
|
|
35
|
+
" /features what ForgeQE can do, and what each capability still needs here",
|
|
36
|
+
" /skills [name] the skills each agent can use, or one skill's instructions",
|
|
37
|
+
" /auth [system] sign in to Azure DevOps, GitHub, Jira, Confluence, TestRail, Zephyr, qTest or Xray in the browser",
|
|
38
|
+
" (/auth alone: what is signed in; /auth logout <system>; /auth <ENV_NAME> saves one secret)",
|
|
39
|
+
" /clear clear the transcript",
|
|
40
|
+
" /help this list",
|
|
41
|
+
" /exit quit",
|
|
42
|
+
"",
|
|
43
|
+
"Select text with the mouse to copy it.",
|
|
44
|
+
].join("\n")
|
|
45
|
+
|
|
46
|
+
const COMMANDS = new Set(["help", "?", "exit", "quit", "q", "clear", "stop", "headed", "details", "verbose", "profile", "p", "logs", "skills", "features", "auth", "signin"])
|
|
47
|
+
|
|
48
|
+
/** Session controls; every other line, including one that starts with a path, goes to the agent as text. */
|
|
49
|
+
export function parseCommand(raw: string): ShellCommand {
|
|
50
|
+
const line = raw.trim()
|
|
51
|
+
if (!line) return { type: "unknown", raw: "" }
|
|
52
|
+
if (!line.startsWith("/")) return { type: "text", text: line }
|
|
53
|
+
|
|
54
|
+
const body = line.slice(1).trim()
|
|
55
|
+
const space = body.indexOf(" ")
|
|
56
|
+
const head = (space === -1 ? body : body.slice(0, space)).toLowerCase()
|
|
57
|
+
const arg = space === -1 ? "" : body.slice(space + 1).trim()
|
|
58
|
+
if (!COMMANDS.has(head)) return { type: "text", text: line }
|
|
59
|
+
|
|
60
|
+
switch (head) {
|
|
61
|
+
case "help":
|
|
62
|
+
case "?":
|
|
63
|
+
return { type: "help" }
|
|
64
|
+
case "exit":
|
|
65
|
+
case "quit":
|
|
66
|
+
case "q":
|
|
67
|
+
return { type: "exit" }
|
|
68
|
+
case "clear":
|
|
69
|
+
return { type: "clear" }
|
|
70
|
+
case "stop":
|
|
71
|
+
return { type: "stop" }
|
|
72
|
+
case "logs":
|
|
73
|
+
return { type: "logs", shots: /^(shots|screenshots)$/i.test(arg) }
|
|
74
|
+
case "skills":
|
|
75
|
+
return arg ? { type: "skills", name: arg } : { type: "skills" }
|
|
76
|
+
case "features":
|
|
77
|
+
return { type: "features" }
|
|
78
|
+
case "auth":
|
|
79
|
+
case "signin": {
|
|
80
|
+
const [first, ...rest] = arg.split(/\s+/).filter(Boolean)
|
|
81
|
+
if (!first || (first === "status" && head === "auth")) return head === "signin" ? { type: "auth", action: "login" } : { type: "auth", action: "status" }
|
|
82
|
+
if (/^(logout|signout|forget)$/i.test(first)) return rest[0] ? { type: "auth", action: "logout", system: rest.join(" ") } : { type: "unknown", raw: line }
|
|
83
|
+
if (/^(login|signin)$/i.test(first)) return { type: "auth", action: "login", ...(rest.length ? { system: rest.join(" ") } : {}) }
|
|
84
|
+
return { type: "auth", action: "login", system: [first, ...rest].join(" ") }
|
|
85
|
+
}
|
|
86
|
+
case "details":
|
|
87
|
+
case "verbose": {
|
|
88
|
+
if (!arg) return { type: "details" }
|
|
89
|
+
if (/^(1|on|true|yes|full)$/i.test(arg)) return { type: "details", value: true }
|
|
90
|
+
if (/^(0|off|false|no|brief)$/i.test(arg)) return { type: "details", value: false }
|
|
91
|
+
return { type: "unknown", raw: line }
|
|
92
|
+
}
|
|
93
|
+
case "headed": {
|
|
94
|
+
if (/^(1|on|true|yes)$/i.test(arg)) return { type: "headed", value: true }
|
|
95
|
+
if (/^(0|off|false|no)$/i.test(arg)) return { type: "headed", value: false }
|
|
96
|
+
return { type: "unknown", raw: line }
|
|
97
|
+
}
|
|
98
|
+
default:
|
|
99
|
+
return arg ? { type: "profile", name: arg } : { type: "unknown", raw: line }
|
|
100
|
+
}
|
|
101
|
+
}
|