devworkspace 0.0.0-stage → 0.1.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/CHANGELOG.md +32 -0
- package/LICENSE +21 -0
- package/README.md +128 -3
- package/dist/agents/claude/adapter.d.ts +15 -0
- package/dist/agents/claude/adapter.js +107 -0
- package/dist/agents/claude/adapter.js.map +1 -0
- package/dist/agents/claude/content.d.ts +7 -0
- package/dist/agents/claude/content.js +136 -0
- package/dist/agents/claude/content.js.map +1 -0
- package/dist/agents/types.d.ts +26 -0
- package/dist/agents/types.js +2 -0
- package/dist/agents/types.js.map +1 -0
- package/dist/cli/args.d.ts +197 -0
- package/dist/cli/args.js +94 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/help.d.ts +10 -0
- package/dist/cli/help.js +181 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli/main.d.ts +2 -0
- package/dist/cli/main.js +19 -0
- package/dist/cli/main.js.map +1 -0
- package/dist/cli/render.d.ts +41 -0
- package/dist/cli/render.js +220 -0
- package/dist/cli/render.js.map +1 -0
- package/dist/cli/run.d.ts +10 -0
- package/dist/cli/run.js +339 -0
- package/dist/cli/run.js.map +1 -0
- package/dist/config/schemas.d.ts +76 -0
- package/dist/config/schemas.js +83 -0
- package/dist/config/schemas.js.map +1 -0
- package/dist/config/validate.d.ts +22 -0
- package/dist/config/validate.js +76 -0
- package/dist/config/validate.js.map +1 -0
- package/dist/core/migrations.d.ts +15 -0
- package/dist/core/migrations.js +34 -0
- package/dist/core/migrations.js.map +1 -0
- package/dist/core/version.d.ts +2 -0
- package/dist/core/version.js +12 -0
- package/dist/core/version.js.map +1 -0
- package/dist/core/versioned.d.ts +13 -0
- package/dist/core/versioned.js +16 -0
- package/dist/core/versioned.js.map +1 -0
- package/dist/core/workspace.d.ts +34 -0
- package/dist/core/workspace.js +92 -0
- package/dist/core/workspace.js.map +1 -0
- package/dist/decisions/decision.d.ts +31 -0
- package/dist/decisions/decision.js +123 -0
- package/dist/decisions/decision.js.map +1 -0
- package/dist/discovery/commands.d.ts +12 -0
- package/dist/discovery/commands.js +92 -0
- package/dist/discovery/commands.js.map +1 -0
- package/dist/discovery/detect.d.ts +72 -0
- package/dist/discovery/detect.js +421 -0
- package/dist/discovery/detect.js.map +1 -0
- package/dist/discovery/ignore.d.ts +6 -0
- package/dist/discovery/ignore.js +76 -0
- package/dist/discovery/ignore.js.map +1 -0
- package/dist/discovery/scan.d.ts +24 -0
- package/dist/discovery/scan.js +132 -0
- package/dist/discovery/scan.js.map +1 -0
- package/dist/errors/index.d.ts +25 -0
- package/dist/errors/index.js +39 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/git/git.d.ts +27 -0
- package/dist/git/git.js +97 -0
- package/dist/git/git.js.map +1 -0
- package/dist/index.d.ts +26 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/integrations/agent-skills.d.ts +10 -0
- package/dist/integrations/agent-skills.js +45 -0
- package/dist/integrations/agent-skills.js.map +1 -0
- package/dist/integrations/graphify.d.ts +7 -0
- package/dist/integrations/graphify.js +54 -0
- package/dist/integrations/graphify.js.map +1 -0
- package/dist/integrations/index.d.ts +6 -0
- package/dist/integrations/index.js +30 -0
- package/dist/integrations/index.js.map +1 -0
- package/dist/integrations/omniroute.d.ts +7 -0
- package/dist/integrations/omniroute.js +24 -0
- package/dist/integrations/omniroute.js.map +1 -0
- package/dist/integrations/ponytail.d.ts +10 -0
- package/dist/integrations/ponytail.js +58 -0
- package/dist/integrations/ponytail.js.map +1 -0
- package/dist/integrations/probe.d.ts +6 -0
- package/dist/integrations/probe.js +41 -0
- package/dist/integrations/probe.js.map +1 -0
- package/dist/integrations/types.d.ts +25 -0
- package/dist/integrations/types.js +2 -0
- package/dist/integrations/types.js.map +1 -0
- package/dist/knowledge/facts.d.ts +43 -0
- package/dist/knowledge/facts.js +195 -0
- package/dist/knowledge/facts.js.map +1 -0
- package/dist/portability/bundle.d.ts +22 -0
- package/dist/portability/bundle.js +102 -0
- package/dist/portability/bundle.js.map +1 -0
- package/dist/prompts/onboarding.d.ts +19 -0
- package/dist/prompts/onboarding.js +53 -0
- package/dist/prompts/onboarding.js.map +1 -0
- package/dist/prompts/refresh.d.ts +15 -0
- package/dist/prompts/refresh.js +33 -0
- package/dist/prompts/refresh.js.map +1 -0
- package/dist/prompts/requirements.d.ts +9 -0
- package/dist/prompts/requirements.js +34 -0
- package/dist/prompts/requirements.js.map +1 -0
- package/dist/security/files.d.ts +5 -0
- package/dist/security/files.js +44 -0
- package/dist/security/files.js.map +1 -0
- package/dist/security/redact.d.ts +13 -0
- package/dist/security/redact.js +43 -0
- package/dist/security/redact.js.map +1 -0
- package/dist/services/agent.d.ts +11 -0
- package/dist/services/agent.js +42 -0
- package/dist/services/agent.js.map +1 -0
- package/dist/services/analysis.d.ts +45 -0
- package/dist/services/analysis.js +151 -0
- package/dist/services/analysis.js.map +1 -0
- package/dist/services/common.d.ts +18 -0
- package/dist/services/common.js +18 -0
- package/dist/services/common.js.map +1 -0
- package/dist/services/doctor.d.ts +27 -0
- package/dist/services/doctor.js +223 -0
- package/dist/services/doctor.js.map +1 -0
- package/dist/services/init.d.ts +18 -0
- package/dist/services/init.js +135 -0
- package/dist/services/init.js.map +1 -0
- package/dist/services/knowledge.d.ts +40 -0
- package/dist/services/knowledge.js +72 -0
- package/dist/services/knowledge.js.map +1 -0
- package/dist/services/migrate.d.ts +16 -0
- package/dist/services/migrate.js +54 -0
- package/dist/services/migrate.js.map +1 -0
- package/dist/services/portability.d.ts +27 -0
- package/dist/services/portability.js +155 -0
- package/dist/services/portability.js.map +1 -0
- package/dist/services/records.d.ts +8 -0
- package/dist/services/records.js +26 -0
- package/dist/services/records.js.map +1 -0
- package/dist/services/refresh.d.ts +22 -0
- package/dist/services/refresh.js +64 -0
- package/dist/services/refresh.js.map +1 -0
- package/dist/services/reset.d.ts +23 -0
- package/dist/services/reset.js +96 -0
- package/dist/services/reset.js.map +1 -0
- package/dist/services/status.d.ts +57 -0
- package/dist/services/status.js +111 -0
- package/dist/services/status.js.map +1 -0
- package/dist/services/tasks.d.ts +44 -0
- package/dist/services/tasks.js +136 -0
- package/dist/services/tasks.js.map +1 -0
- package/dist/sessions/session.d.ts +19 -0
- package/dist/sessions/session.js +53 -0
- package/dist/sessions/session.js.map +1 -0
- package/dist/tasks/routing.d.ts +27 -0
- package/dist/tasks/routing.js +206 -0
- package/dist/tasks/routing.js.map +1 -0
- package/dist/tasks/task.d.ts +90 -0
- package/dist/tasks/task.js +275 -0
- package/dist/tasks/task.js.map +1 -0
- package/dist/utils/cleanup.d.ts +3 -0
- package/dist/utils/cleanup.js +18 -0
- package/dist/utils/cleanup.js.map +1 -0
- package/dist/utils/fs.d.ts +17 -0
- package/dist/utils/fs.js +164 -0
- package/dist/utils/fs.js.map +1 -0
- package/dist/utils/lock.d.ts +6 -0
- package/dist/utils/lock.js +77 -0
- package/dist/utils/lock.js.map +1 -0
- package/dist/utils/logger.d.ts +11 -0
- package/dist/utils/logger.js +18 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/paths.d.ts +18 -0
- package/dist/utils/paths.js +95 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/proc.d.ts +22 -0
- package/dist/utils/proc.js +74 -0
- package/dist/utils/proc.js.map +1 -0
- package/docs/architecture.md +53 -0
- package/docs/benchmarking.md +33 -0
- package/docs/claude.md +46 -0
- package/docs/contributing.md +64 -0
- package/docs/getting-started.md +79 -0
- package/docs/integrations.md +51 -0
- package/docs/knowledge.md +66 -0
- package/docs/portability.md +40 -0
- package/docs/routing.md +51 -0
- package/docs/security.md +44 -0
- package/docs/testing.md +58 -0
- package/docs/troubleshooting.md +27 -0
- package/package.json +68 -4
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# Getting started
|
|
2
|
+
|
|
3
|
+
## 1. Set up
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
cd path/to/your/project
|
|
7
|
+
npx devworkspace init
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
`init` finds the project root (the Git top-level if you are in a subfolder, otherwise the current directory; override with `--root`), creates `.devworkspace/`, writes a nested `.gitignore` for machine-local state, and reports which integrations it can see. It never edits your source and is safe to repeat. Use `--dry-run` to preview.
|
|
11
|
+
|
|
12
|
+
What you get:
|
|
13
|
+
|
|
14
|
+
```text
|
|
15
|
+
.devworkspace/
|
|
16
|
+
├── project.json identity (random id), name, settings, managed-file list
|
|
17
|
+
├── .gitignore ignores local/ and regenerable prompts
|
|
18
|
+
├── context/ facts.json, commands.json (testing contract), your architecture.md etc.
|
|
19
|
+
├── decisions/ 0001-use-redis.md ...
|
|
20
|
+
├── tasks/{active,completed}/
|
|
21
|
+
├── sessions/ short summaries
|
|
22
|
+
├── analysis/ discovery.json (+ onboarding-prompt.md, git-ignored)
|
|
23
|
+
├── state/analysis.json hashes/timestamps used for staleness
|
|
24
|
+
└── local/ machine-specific; never committed
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## 2. Analyze
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
npx devworkspace analyze
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Deterministic only: reads manifests, lockfiles, configs and the file tree (skipping `node_modules`, build output, caches, `.git`, anything in `.gitignore` / `.devworkspaceignore`, and never reading credential files). It writes the discovery report, a **testing contract** (`context/commands.json`), detected facts, and the **onboarding prompt**.
|
|
34
|
+
|
|
35
|
+
## 3. Onboard with Claude
|
|
36
|
+
|
|
37
|
+
Open `.devworkspace/analysis/onboarding-prompt.md` and paste it into Claude Code. Claude will:
|
|
38
|
+
|
|
39
|
+
1. validate the findings against the real code,
|
|
40
|
+
2. use Graphify (if available) to understand structure,
|
|
41
|
+
3. run `devworkspace agent install` (adds a small managed block to `CLAUDE.md` and installs the `devworkspace` skill, preserving anything you wrote),
|
|
42
|
+
4. write concise knowledge into `.devworkspace/context/`,
|
|
43
|
+
5. check the testing contract and record a baseline,
|
|
44
|
+
6. offer to install and verify Graphify, Agent Skills and Ponytail (it asks once; nothing is installed without your yes),
|
|
45
|
+
7. run `devworkspace doctor` and report unknowns and warnings.
|
|
46
|
+
|
|
47
|
+
It is told not to modify application source during onboarding.
|
|
48
|
+
|
|
49
|
+
## 4. Verify
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
npx devworkspace doctor
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
`READY` means the workspace is healthy, instructions are installed and architecture knowledge exists. Warnings (for example *Graphify: not detected*) tell you exactly what to do next and do not fail the command.
|
|
56
|
+
|
|
57
|
+
## 5. Work normally
|
|
58
|
+
|
|
59
|
+
Ask Claude for what you want. See [routing](routing.md) for how requests are handled and [claude.md](claude.md) for what was installed. After meaningful work Claude records durable knowledge; you can inspect it any time with `devworkspace context`, and run `devworkspace refresh` after large changes (or after pulling) to catch stale knowledge.
|
|
60
|
+
|
|
61
|
+
## Start over
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
npx devworkspace reset # shows what would be deleted; deletes nothing
|
|
65
|
+
npx devworkspace reset --yes # deletes .devworkspace/ (knowledge, tasks, decisions, local state)
|
|
66
|
+
npx devworkspace reset --yes --include-agent-files # also removes the DevWorkspace block from CLAUDE.md and the managed skill
|
|
67
|
+
npx devworkspace init # begin again with a new project id
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Only DevWorkspace's own files are removed: your source code is never touched, text you wrote in `CLAUDE.md` is kept, and a skill you wrote yourself is left alone. Committed knowledge can still be recovered from Git history. Run `devworkspace export` first if you want a copy.
|
|
71
|
+
|
|
72
|
+
## Install options
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
npm install -g devworkspace # then: devworkspace init
|
|
76
|
+
npx devworkspace <command> # no installation
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Requires Node.js 20.11+.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Integrations
|
|
2
|
+
|
|
3
|
+
Each integration sits behind the `Integration` interface (`src/integrations/types.ts`): `detect(ctx) → IntegrationStatus`. Core code only sees states `READY`, `PARTIAL`, `NOT_DETECTED`, `UNVERIFIED`, `ERROR` plus remediation text. A failing detector degrades to `ERROR` and never breaks a command. Missing integrations are warnings, not failures.
|
|
4
|
+
|
|
5
|
+
Documentation below was read from each project's repository when this version was written. Re-check before relying on it; these projects evolve.
|
|
6
|
+
|
|
7
|
+
| Integration | Role | Researched against |
|
|
8
|
+
| --- | --- | --- |
|
|
9
|
+
| Graphify | Structural discovery | `Graphify-Labs/graphify` README (Oct 2026) |
|
|
10
|
+
| Agent Skills | Engineering workflows | `addyosmani/agent-skills` README (Oct 2026) |
|
|
11
|
+
| Ponytail | Quality / simplification review | `DietrichGebert/ponytail` README (Oct 2026) |
|
|
12
|
+
| OmniRoute | Optional model routing | not integrated in V1 |
|
|
13
|
+
| Claude Code | Agent | `code.claude.com` memory and skills docs (Oct 2026) |
|
|
14
|
+
|
|
15
|
+
## Graphify
|
|
16
|
+
|
|
17
|
+
- **Install (documented):** `uv tool install graphifyy` (or `pipx install graphifyy` / `pip install graphifyy`), then `graphify install` (global) or `graphify install --project` (writes `.claude/skills/graphify/`).
|
|
18
|
+
- **Use:** `/graphify .` in Claude Code builds the graph into `graphify-out/` (`graph.json`, `GRAPH_REPORT.md`, `graph.html`). Queries: `graphify query "…"`, `graphify path "A" "B"`, `graphify explain "…"`. `graphify hook install` auto-rebuilds on commits.
|
|
19
|
+
- **Detection:** `graphify` on PATH, `graphify-out/graph.json`, project/user skill directory. `READY` = (CLI or skill) and a built graph; `PARTIAL` = installed but no graph (or graph without CLI).
|
|
20
|
+
- **Authority:** the graph is an aid. The generated skill tells the agent to confirm in real files; repository evidence wins.
|
|
21
|
+
- **Not done:** DevWorkspace does not run Graphify, build graphs, or parse `graph.json`. `graphify-out/` is excluded from scans.
|
|
22
|
+
|
|
23
|
+
## Agent Skills
|
|
24
|
+
|
|
25
|
+
- **Install (documented):** in Claude Code, `/plugin marketplace add addyosmani/agent-skills` then `/plugin install agent-skills@addy-agent-skills`. The equivalent shell form, which Claude can run for you during onboarding, is `claude plugin marketplace add addyosmani/agent-skills` and `claude plugin install agent-skills@addy-agent-skills`; verify with `claude plugin list`.
|
|
26
|
+
- **Provides:** `/spec`, `/plan`, `/build`, `/test`, `/constraints`, `/review`, `/webperf`, `/code-simplify`, `/ship`, plus auto-activating skills.
|
|
27
|
+
- **Division of labour:** the DevWorkspace skill says *when* (per task type, see [routing](routing.md)); Agent Skills says *how*. Nothing is copied.
|
|
28
|
+
- **Detection:** best effort, searching Claude Code settings/plugin registries for `agent-skills`. Plugin state belongs to Claude Code, so absence is reported as `UNVERIFIED`, not "missing".
|
|
29
|
+
|
|
30
|
+
## Ponytail
|
|
31
|
+
|
|
32
|
+
- **Install (documented):** `/plugin marketplace add DietrichGebert/ponytail`, `/plugin install ponytail@ponytail` (shell form: `claude plugin marketplace add …` / `claude plugin install ponytail@ponytail`). Other agents: copy its `AGENTS.md` or install `skills/ponytail/SKILL.md`.
|
|
33
|
+
- **Commands:** `/ponytail [lite|full|ultra|off]`, `/ponytail-review`, `/ponytail-audit`, `/ponytail-debt`. Optional config `~/.config/ponytail/config.json`, `PONYTAIL_DEFAULT_MODE`.
|
|
34
|
+
- **Use here:** review of meaningful diffs and simplification only. It never substitutes for tests. Strictness maps to `project.json` → `settings.review` (`off` removes the review requirement from new tasks; `light` default; `strict` reserved for stricter policy).
|
|
35
|
+
- **Detection:** plugin mention in settings, `.claude/skills/ponytail`, or `AGENTS.md` mention. Otherwise `UNVERIFIED`.
|
|
36
|
+
|
|
37
|
+
## OmniRoute (optional)
|
|
38
|
+
|
|
39
|
+
Not required, not in the V1 path, no API keys or model configuration. The adapter only reports whether an `omniroute` executable exists. A future provider boundary can build on it.
|
|
40
|
+
|
|
41
|
+
## Claude Code
|
|
42
|
+
|
|
43
|
+
See [claude.md](claude.md).
|
|
44
|
+
|
|
45
|
+
## Adding an integration
|
|
46
|
+
|
|
47
|
+
1. Implement `Integration` in `src/integrations/<name>.ts` (pure detection, no side effects, timeouts if you spawn anything).
|
|
48
|
+
2. Add it to `INTEGRATIONS` in `src/integrations/index.ts`.
|
|
49
|
+
3. Give it a `usage` string; the Claude skill renders it automatically for non-optional integrations.
|
|
50
|
+
4. Add tests for READY / PARTIAL / NOT_DETECTED and a throwing detector.
|
|
51
|
+
5. Document researched commands and limitations here.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Knowledge model
|
|
2
|
+
|
|
3
|
+
DevWorkspace stores **knowledge**, not code: concise statements about the project, each with provenance. Stored facts are a cache of evidence, never a replacement for it.
|
|
4
|
+
|
|
5
|
+
## Authority
|
|
6
|
+
|
|
7
|
+
```text
|
|
8
|
+
USER DECISIONS
|
|
9
|
+
↓
|
|
10
|
+
CURRENT REPOSITORY EVIDENCE (what the code says right now)
|
|
11
|
+
↓
|
|
12
|
+
VERIFIED DEVWORKSPACE FACTS
|
|
13
|
+
↓
|
|
14
|
+
AI-DERIVED FINDINGS
|
|
15
|
+
↓
|
|
16
|
+
OLD SESSION INFORMATION
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Enforced in `knowledge/facts.ts`: a lower-authority write never silently replaces a higher-authority fact (`CONFLICT` error with a hint), except when the existing fact is already `STALE`. Deterministic detection (rank 4) may replace an AI-verified fact (rank 3) because it reflects the repository *now*. User decisions (rank 5) are never replaced by an agent and are never auto-staled; if their sources change they are flagged *for human review*.
|
|
20
|
+
|
|
21
|
+
## A fact
|
|
22
|
+
|
|
23
|
+
```json
|
|
24
|
+
{
|
|
25
|
+
"key": "auth.session-store",
|
|
26
|
+
"value": "Sessions are stored in Redis",
|
|
27
|
+
"source": "src/auth/session.ts",
|
|
28
|
+
"sourceType": "ai",
|
|
29
|
+
"sources": ["src/auth/session.ts"],
|
|
30
|
+
"sourceHashes": { "src/auth/session.ts": "sha256…" },
|
|
31
|
+
"confidence": "HIGH",
|
|
32
|
+
"status": "VERIFIED",
|
|
33
|
+
"createdAt": "…", "updatedAt": "…", "lastVerifiedAt": "…"
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
- **status:** `VERIFIED`, `DETECTED`, `INFERRED`, `USER_DECISION`, `UNKNOWN`, `STALE`
|
|
38
|
+
- **confidence:** `HIGH`, `MEDIUM`, `LOW`
|
|
39
|
+
- **sourceType:** `detector`, `file`, `git`, `user`, `ai`
|
|
40
|
+
|
|
41
|
+
Uncertainty is first-class: record `INFERRED`/`LOW` or `UNKNOWN` rather than guessing.
|
|
42
|
+
|
|
43
|
+
## Staleness
|
|
44
|
+
|
|
45
|
+
Each fact lists the repository files that evidence it and stores their SHA-256 at the time of recording. `devworkspace refresh` re-hashes those sources: a changed or removed source marks the fact `STALE` with a reason. Only stale facts are handed to the agent in the refresh prompt (incremental, not a full re-analysis). The agent re-checks and runs `devworkspace fact verify <key>` (re-hash, mark verified), corrects the fact, or removes it. Facts without sources cannot be proven stale, so cite files.
|
|
46
|
+
|
|
47
|
+
Content hashing is deliberately conservative: *any* byte change to a cited file triggers re-validation. It over-reports rather than silently trusting old context.
|
|
48
|
+
|
|
49
|
+
Deterministic (`detector`) facts are simply re-derived on every `analyze`/`refresh`; ones that no longer apply are removed (they are derived data and come back if the evidence returns), so they never produce a warning nobody can clear.
|
|
50
|
+
|
|
51
|
+
## What to store / not store
|
|
52
|
+
|
|
53
|
+
Store: architecture, business rules, important modules, conventions, commands, test strategy, deployment facts, integrations, decisions, known constraints, important unresolved problems.
|
|
54
|
+
|
|
55
|
+
Never store: source files, `node_modules`/generated output, chat transcripts, temporary logs, secrets or env values, machine-specific absolute paths. The CLI enforces the last two (secret patterns and absolute paths are rejected) and `doctor` re-checks.
|
|
56
|
+
|
|
57
|
+
## Other records
|
|
58
|
+
|
|
59
|
+
- **Decisions** (`decisions/0001-title.md`): human-readable Markdown with front matter; append-only. Superseding marks the old decision `superseded` and keeps its text.
|
|
60
|
+
- **Tasks** (`tasks/…`): see [testing.md](testing.md) and [routing.md](routing.md).
|
|
61
|
+
- **Sessions**: goal, work completed, areas, tests run, decisions, remaining issues, next step. Never a transcript.
|
|
62
|
+
- **Context documents** (`context/*.md`): `architecture.md`, `conventions.md`, `testing.md`, `integrations.md` are written by the agent during onboarding and kept short.
|
|
63
|
+
|
|
64
|
+
## Progressive loading
|
|
65
|
+
|
|
66
|
+
The generated instructions tell the agent to load context in levels and stop at the shallowest one that answers the request: (1) instructions → (2) `devworkspace context --topic …` → (3) relevant decisions → (4) Graphify → (5) specific source files → (6) tests/implementation. "Where is customer uniqueness checked?" stops at level 4–5; "Refactor the customer validation architecture" goes to level 6.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Portability
|
|
2
|
+
|
|
3
|
+
## Shared vs machine-local
|
|
4
|
+
|
|
5
|
+
| Shared (commit it) | Machine-local (git-ignored) |
|
|
6
|
+
| --- | --- |
|
|
7
|
+
| `project.json`, `context/`, `decisions/`, `tasks/`, `sessions/`, `analysis/discovery.json`, `state/analysis.json` | `local/` (lock file, integration detection, backups), `analysis/onboarding-prompt.md`, `analysis/refresh-prompt.md` |
|
|
8
|
+
|
|
9
|
+
`.devworkspace/.gitignore` is created by `init` and repaired by `doctor --fix`. Your root `.gitignore` is never modified; `doctor` warns if it hides `.devworkspace/` entirely.
|
|
10
|
+
|
|
11
|
+
Agent files (`CLAUDE.md` block, `.claude/skills/devworkspace/`) are committed like any other project file. They are not part of the export bundle because they are fully regenerated, previewably and idempotently, by `devworkspace agent install`.
|
|
12
|
+
|
|
13
|
+
## Identity
|
|
14
|
+
|
|
15
|
+
`project.json` holds a random `projectId`. No absolute path is stored in portable files, so moving `D:\Company\CRM` to `C:\Projects\CRM` (or a different OS) needs no migration. `doctor` flags absolute paths that slip into knowledge, and `fact add` rejects them.
|
|
16
|
+
|
|
17
|
+
## Another computer
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
git clone <repo> && cd <repo>
|
|
21
|
+
npx devworkspace doctor
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Machine-specific state (integration detection, locks) is regenerated on demand. If the Claude instructions and knowledge were committed, doctor reports `READY`. Run `devworkspace refresh` after pulling a large change to re-validate knowledge.
|
|
25
|
+
|
|
26
|
+
## Export / import (when Git is not the transport)
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
devworkspace export --out knowledge.json # context, decisions, tasks, sessions, discovery, project.json
|
|
30
|
+
devworkspace import knowledge.json --dry-run
|
|
31
|
+
devworkspace import knowledge.json
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
- Export contains no `local/` state, prompts, secrets or temp files; it refuses to run if the workspace holds secret-like values.
|
|
35
|
+
- Import validates the entire bundle first (format, schema version, path allow-list, size, secrets, JSON) and changes nothing if anything is wrong.
|
|
36
|
+
- It requires the same `projectId` (or `--allow-different-project`), never replaces `project.json`, merges `facts.json` per fact (newer wins unless that would lower authority), keeps the newer task, and reports every differing file as a **conflict** instead of overwriting. `--overwrite` replaces conflicts and keeps backups in `local/backups/import-…`.
|
|
37
|
+
|
|
38
|
+
## Schema versions and migration
|
|
39
|
+
|
|
40
|
+
Every persistent JSON file carries `schemaVersion`. A newer CLI reads older files by migrating in memory and, when it writes a file whose version changes, first copies the old one to `local/backups/`. `devworkspace migrate` upgrades everything explicitly (all-or-nothing plan, shared backup folder). A file from a **newer** schema is never modified: commands fail with an "upgrade DevWorkspace" hint. Schema v1 is the first release, so the migration registry is empty today; the machinery is tested with injected migrations.
|
package/docs/routing.md
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Routing: how requests become workflows
|
|
2
|
+
|
|
3
|
+
After onboarding you talk to Claude normally. The installed `devworkspace` skill makes it classify each request and apply a proportionate workflow. The table below is rendered from `src/tasks/routing.ts`, the single source of truth, and a test fails if this page drifts from it.
|
|
4
|
+
|
|
5
|
+
| Type | Nature | Max context | Verification |
|
|
6
|
+
| --- | --- | --- | --- |
|
|
7
|
+
| QUESTION | read-only, no task file | L5 | None. Do not modify files or run tests. |
|
|
8
|
+
| BUG | modifies code, tracked task | L6 | Regression test, applicable suite, typecheck, lint, build (whatever the testing contract marks required). |
|
|
9
|
+
| FEATURE | modifies code, tracked task | L6 | Targeted tests, regression, typecheck, lint, build, review. |
|
|
10
|
+
| REFACTOR | modifies code, tracked task | L6 | Baseline vs after (no regressions), typecheck, lint, build, review. |
|
|
11
|
+
| DOCUMENTATION | modifies code, no task file | L4 | Only checks that apply to documentation. |
|
|
12
|
+
| TESTING | modifies code, tracked task | L6 | Affected tests, typecheck, lint. |
|
|
13
|
+
| PERFORMANCE | modifies code, tracked task | L6 | Before/after measurement, regression suite, build. |
|
|
14
|
+
| SECURITY | modifies code, tracked task | L6 | Regression and exploit test, typecheck, lint, build, review. |
|
|
15
|
+
| ARCHITECTURE | modifies code, tracked task | L6 | Baseline vs after, typecheck, lint, build, review. |
|
|
16
|
+
| RELEASE | modifies code, tracked task | L6 | Everything in the testing contract. |
|
|
17
|
+
| MAINTENANCE | modifies code, tracked task | L4 | Lint, build, tests if behaviour could change. |
|
|
18
|
+
|
|
19
|
+
Context levels: L1 instructions · L2 relevant facts · L3 relevant decisions · L4 Graphify structure · L5 specific source files · L6 tests and deeper implementation context. Agents stop at the shallowest level that answers the request.
|
|
20
|
+
|
|
21
|
+
## Expected behaviour (executable specification)
|
|
22
|
+
|
|
23
|
+
These are asserted in `tests/unit/routing.test.ts` and `tests/integration/flows.test.ts`. The classifier is a keyword heuristic that *proposes* a type (`devworkspace task new "<request>"`); ambiguous input falls back to the safest type, a read-only QUESTION, with low confidence.
|
|
24
|
+
|
|
25
|
+
| Request | Type | Expected behaviour |
|
|
26
|
+
| --- | --- | --- |
|
|
27
|
+
| "Where is authentication?" | QUESTION | Read-only investigation using facts and Graphify. No file changes, no tests, no task file. |
|
|
28
|
+
| "Only explain this file." | QUESTION + `no-modify` | No modifications, no tests. |
|
|
29
|
+
| "Fix login validation bug." | BUG | Investigate → reproduce where practical → regression test (confirm it fails) → fix → targeted + regression → typecheck/lint/build → review if enabled. Knowledge updated only if something durable was learned. |
|
|
30
|
+
| "Add Redis caching." | FEATURE | Read architecture and decisions, identify scope, acceptance criteria and plan, tests, implementation, verification, review, then update knowledge (new integration/decision). |
|
|
31
|
+
| "Refactor authentication." | REFACTOR | Deeper architecture analysis, **baseline test results recorded first**, plan, small verified steps, regression compared against the baseline, review. |
|
|
32
|
+
| "Run tests but don't fix anything" | TESTING + `no-fix` | Run and report. Do not change code. |
|
|
33
|
+
| "Add feature X but only make a plan" | FEATURE + `plan-only` | Read-only: produce the plan, change nothing. |
|
|
34
|
+
|
|
35
|
+
## User overrides
|
|
36
|
+
|
|
37
|
+
Phrases such as *only explain*, *do not modify anything*, *only make a plan*, *don't commit*, *do not run e2e*, *don't run the tests* are parsed into constraints (`no-modify`, `plan-only`, `no-commit`, `no-e2e`, `no-tests`, `no-fix`). They are stored on the task. A verification the user told the agent to skip stays on the task, marked `SKIPPED` with reason `user-override`: the gate accepts it **with a warning**, so completion is reported as less certain rather than silently complete.
|
|
38
|
+
|
|
39
|
+
## Task lifecycle
|
|
40
|
+
|
|
41
|
+
`IDEA → SPECIFIED → PLANNED → IN_PROGRESS → TESTING → REVIEW → COMPLETED`, with `BLOCKED` and `FAILED` as exits (`FAILED`/`COMPLETED` can be reopened to `IN_PROGRESS`). Illegal jumps are refused with the allowed list.
|
|
42
|
+
|
|
43
|
+
### Completion gate
|
|
44
|
+
|
|
45
|
+
`devworkspace task status <id> COMPLETED` is refused unless:
|
|
46
|
+
|
|
47
|
+
- every required verification is `PASS` (or `SKIPPED` with reason `user-override`);
|
|
48
|
+
- if a baseline was recorded: failures did not increase and passing tests did not decrease (214/3 → 218/3 is fine; 214/3 → 210/7 blocks);
|
|
49
|
+
- for code-changing tasks: the agent attested that no user work was overwritten, knowledge was reviewed, and the final repository state was inspected, and a completion summary exists.
|
|
50
|
+
|
|
51
|
+
Required checks come from the project's own testing contract; checks the project does not have are never demanded.
|
package/docs/security.md
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Security and privacy
|
|
2
|
+
|
|
3
|
+
## Privacy: what DevWorkspace does and does not do
|
|
4
|
+
|
|
5
|
+
- **Local only.** The CLI makes no network requests and sends nothing anywhere. There is **no telemetry**.
|
|
6
|
+
- **What it reads:** directory listings; `package.json`-style manifests and lockfile names; dependency files (`pyproject.toml`, `requirements*.txt`, `Pipfile`, `Cargo.toml` workspace section, `pnpm-workspace.yaml`); `.gitignore`/`.devworkspaceignore`; its own `.devworkspace/` files; Claude Code settings files and skill directories (to detect plugins); and Git state via read-only Git commands. It hashes files you cite as evidence for facts.
|
|
7
|
+
- **What it stores:** counts, names of detected frameworks, the testing contract, relative file paths, hashes and the knowledge you or the agent record. Not source code.
|
|
8
|
+
- **What it ignores:** `.git`, `node_modules`, build output, caches, virtual environments, anything in `.gitignore` or `.devworkspaceignore`, symlinks, and files over the size limits. Binary files are skipped.
|
|
9
|
+
- **Important:** the generated prompts cause *your chosen AI agent* to read repository content. DevWorkspace cannot control what that agent's provider does with it. Review your agent's data policy.
|
|
10
|
+
|
|
11
|
+
Ignore precedence: hard-coded skip list (always) → root and nested `.gitignore` → `.devworkspaceignore` (root). Credential files are never *read* regardless of ignore rules, and are listed by name only.
|
|
12
|
+
|
|
13
|
+
## Secrets
|
|
14
|
+
|
|
15
|
+
- Sensitive files (`.env`, `.env.*` except `.example/.sample/.template/.dist`, `*.pem`, `*.key`, `*.p12`, `id_rsa*`, `credentials.*`, `secrets.*`, `.npmrc`, `*.tfvars`, service-account JSON, …) are **never read**. `safeReadText` is the only way analysis reads repository text and it refuses them.
|
|
16
|
+
- Every write path (facts, tasks, decisions, sessions, export) rejects text matching credential patterns (private keys, AWS/GitHub/Slack/npm/OpenAI-style tokens, JWTs, URLs with embedded credentials, `password=…`-style assignments). Logs are redacted.
|
|
17
|
+
- Patterns are heuristic. They reduce risk; they are not a guarantee. `doctor` re-scans `.devworkspace/` and warns if a credential-like file is **tracked by Git**.
|
|
18
|
+
|
|
19
|
+
## Prompt injection
|
|
20
|
+
|
|
21
|
+
Repository files are untrusted data. The installed instructions and every generated prompt state that source, comments, READMEs, docs, fixtures, test data and generated content are things to inspect, never instructions, and cannot override the user, system instructions, security policy or DevWorkspace's rules. DevWorkspace does not copy README/comment prose into prompts (a test checks that attacker text in a fixture never appears in generated output). This reduces the attack surface but cannot make a model immune; keep the agent's tool permissions sensible.
|
|
22
|
+
|
|
23
|
+
## Filesystem safety
|
|
24
|
+
|
|
25
|
+
- Paths from imports/knowledge are validated: no absolute paths, `..`, backslashes, NUL, Windows-reserved characters or trailing dots/spaces; writes re-resolve inside the workspace and refuse symlink escapes.
|
|
26
|
+
- Writes are atomic (temp file → fsync → rename). Mutating commands hold an advisory lock. Interrupted runs leave the previous file intact; `doctor` reports leftover `.tmp` files.
|
|
27
|
+
- Nothing deletes user files. `doctor --fix` only *creates* missing folders/ignore rules.
|
|
28
|
+
- `export` refuses to run if the workspace contains secret-like values. `import` validates **everything** (format, schema version, path allow-list, size, secrets, JSON validity) before writing anything, never replaces `project.json`, and never overwrites differing local files unless `--overwrite` (with backups).
|
|
29
|
+
|
|
30
|
+
## Subprocesses
|
|
31
|
+
|
|
32
|
+
Only `git` is executed, with argument arrays and `shell: false`, with timeouts and output caps. `.cmd`/`.bat` shims are never executed. Repository scripts are never run by DevWorkspace.
|
|
33
|
+
|
|
34
|
+
## Git safety
|
|
35
|
+
|
|
36
|
+
DevWorkspace issues only read-only Git commands. The generated instructions require `git status` before edits, protection of uncommitted changes, and forbid `git reset --hard`, `git clean -fd`, force-push and branch deletion without explicit user authorisation.
|
|
37
|
+
|
|
38
|
+
## Supply chain
|
|
39
|
+
|
|
40
|
+
Zero runtime dependencies. Dev-only tools (TypeScript, Vitest, ESLint) are pinned by `package-lock.json`; CI runs `npm audit`. Release publishing uses an explicit manual trigger with npm provenance (see [contributing](contributing.md)).
|
|
41
|
+
|
|
42
|
+
## Reporting vulnerabilities
|
|
43
|
+
|
|
44
|
+
Open a private security advisory on the repository (once published). Do not file public issues containing exploit details or real secrets.
|
package/docs/testing.md
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Testing contract and verification
|
|
2
|
+
|
|
3
|
+
## The testing contract
|
|
4
|
+
|
|
5
|
+
`devworkspace analyze` infers which verification commands the *project* has and stores them in `.devworkspace/context/commands.json`:
|
|
6
|
+
|
|
7
|
+
| Check | Available | Command | Required |
|
|
8
|
+
| --- | --- | --- | --- |
|
|
9
|
+
| typecheck | yes | `npm run typecheck` | yes |
|
|
10
|
+
| unit | yes | `npm test` | yes |
|
|
11
|
+
| integration | yes | `npm run test:integration` | context |
|
|
12
|
+
| e2e | yes | `npm run test:e2e` | context |
|
|
13
|
+
| lint | yes | `npm run lint` | yes |
|
|
14
|
+
| build | yes | `npm run build` | yes |
|
|
15
|
+
|
|
16
|
+
`required` is `yes` (always applies to code changes), `context` (only when relevant to the change) or `no`. Entries you or the agent edit by hand get `origin: "user"` and are never overwritten by later analysis.
|
|
17
|
+
|
|
18
|
+
Sources: `package.json` scripts (matched by common names), plus conventions for Python (pytest/ruff/mypy/black/alembic), Go, Rust, Maven and Gradle. npm's default `"no test specified"` placeholder is ignored.
|
|
19
|
+
|
|
20
|
+
### Commands are untrusted input
|
|
21
|
+
|
|
22
|
+
Everything marked `origin: "repository-script"` comes from files in the repository. DevWorkspace **never runs these commands itself**; the agent does, and the generated instructions tell it to read what a script does before running unfamiliar ones, especially where scripts might deploy, migrate or write over the network.
|
|
23
|
+
|
|
24
|
+
## Task-specific verification
|
|
25
|
+
|
|
26
|
+
Questions need none; docs need only documentation checks; bugs, features and refactors derive their checks from the contract (see [routing](routing.md)). Baseline handling:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
devworkspace task tests <id> --phase baseline --passed 214 --failed 3 # before changing code
|
|
30
|
+
devworkspace task tests <id> --phase after --passed 218 --failed 3
|
|
31
|
+
devworkspace task verify <id> unit pass
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Pre-existing failures are recorded, not blamed on new work. Regressions block completion.
|
|
35
|
+
|
|
36
|
+
## Failure reporting
|
|
37
|
+
|
|
38
|
+
```text
|
|
39
|
+
STATUS: BLOCKED
|
|
40
|
+
Unit tests: FAIL Typecheck: PASS Lint: PASS Build: FAIL
|
|
41
|
+
Failure: <actual error>
|
|
42
|
+
Task is not considered complete.
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Testing DevWorkspace itself
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
npm test # unit + integration + e2e (vitest)
|
|
49
|
+
npm run test:unit | test:integration | test:e2e
|
|
50
|
+
npm run coverage # thresholds enforced (stricter on security, paths, tasks, knowledge, portability)
|
|
51
|
+
npm run typecheck && npm run lint
|
|
52
|
+
npm run smoke # pack → install tarball into clean dirs → run the real CLI (local, --prefix, npx, PowerShell)
|
|
53
|
+
npm run release:check # the full pre-publish gate; never publishes
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Layers: **unit** (pure logic, security, paths incl. `path.win32`, schemas, routing scenarios, prompts), **integration** (command flows through the real CLI in-process with a hermetic home directory), **e2e** (the ten acceptance scenarios, Windows-style paths, large repo simulation, concurrency, hostile imports). Fixtures live in `fixtures/` (Express, React/Vite, Next.js, NestJS, FastAPI, monorepo, no tests, failing tests, existing AI files, prompt injection); scenarios that need Git state, secrets or unusual paths are built at test time.
|
|
57
|
+
|
|
58
|
+
The generated prompts are tested for *behaviour*, not snapshots: `prompts/requirements.ts` lists what every onboarding/refresh prompt must instruct (untrusted-data rule, no secrets, evidence, git safety, testing contract, completion gate, memory rules, …), and `validatePrompt` is used by the tests and by `doctor`.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Troubleshooting
|
|
2
|
+
|
|
3
|
+
Start with `devworkspace doctor`. Every warning/failure includes a remediation line.
|
|
4
|
+
|
|
5
|
+
| Problem | What to do |
|
|
6
|
+
| --- | --- |
|
|
7
|
+
| **Unsupported Node version** | Needs Node ≥ 20.11. `node -v`; install from nodejs.org or use nvm/fnm. `doctor` shows the requirement. |
|
|
8
|
+
| **Git unavailable** | Install Git. DevWorkspace still works but cannot report branch/working-tree state or tracked-secret problems, and Claude cannot protect uncommitted changes. |
|
|
9
|
+
| **Not a Git repository** | Fine. `status` shows `Git: not a repository`. Consider `git init` so changes can be reviewed and reverted. |
|
|
10
|
+
| **"No DevWorkspace found"** | Run `devworkspace init` in the project root. Commands search upward from the current directory; use `--cwd <dir>` if you are elsewhere. |
|
|
11
|
+
| **Graphify unavailable / no graph** | `uv tool install graphifyy` (or `pipx`), `graphify install --project`, then run `/graphify .` in Claude Code. DevWorkspace keeps working without it. |
|
|
12
|
+
| **Agent Skills / Ponytail "Unverified"** | Claude Code owns plugin state, so this is best-effort. In Claude Code run `/plugin` to see installed plugins, or install: `/plugin marketplace add addyosmani/agent-skills` → `/plugin install agent-skills@addy-agent-skills`; `/plugin marketplace add DietrichGebert/ponytail` → `/plugin install ponytail@ponytail`. |
|
|
13
|
+
| **Claude config conflict** (`agent install` reports `CONFLICT`) | Unbalanced `devworkspace:start/end` markers in `CLAUDE.md`, or a user-authored skill at `.claude/skills/devworkspace/`. Fix/remove the stray marker or rename your skill, then re-run. Nothing was changed. |
|
|
14
|
+
| **Claude ignores my `AGENTS.md`** | Claude reads `AGENTS.md` only when no `CLAUDE.md` exists. `agent install` adds an `@AGENTS.md` import when it creates `CLAUDE.md`; if you created `CLAUDE.md` yourself, add `@AGENTS.md` to it. |
|
|
15
|
+
| **Stale context** | `devworkspace refresh`, then paste `.devworkspace/analysis/refresh-prompt.md` into Claude. Facts without cited `--file` sources can never be proven stale. |
|
|
16
|
+
| **Want to start completely fresh** | `devworkspace reset --yes` (add `--include-agent-files` to also remove the Claude block and skill), then `devworkspace init`. `reset` without `--yes` only prints a plan. |
|
|
17
|
+
| **Corrupted workspace** (`malformed JSON`, schema errors) | `git checkout -- .devworkspace/<file>`; or copy a backup from `.devworkspace/local/backups/`. A newer-schema file means upgrade DevWorkspace. Leftover `*.tmp` files come from an interrupted write and are safe to delete. |
|
|
18
|
+
| **"Another DevWorkspace process is modifying this workspace"** | Wait. If no DevWorkspace process is running, delete `.devworkspace/local/workspace.lock` (stale locks from dead processes are normally broken automatically). |
|
|
19
|
+
| **Tests were failing before my task** | Record a baseline: `devworkspace task tests <id> --phase baseline --passed N --failed M`. Only *increases* in failures block completion. |
|
|
20
|
+
| **Project moved / different drive** | Nothing to do; identity is an id, not a path. `doctor` warns if knowledge contains absolute paths. |
|
|
21
|
+
| **Package manager unavailable** | The testing contract is inferred from files, so it lists `pnpm`/`yarn` commands even if not installed. Edit `context/commands.json` (set `origin: "user"`) to use what you have. |
|
|
22
|
+
| **Windows: `EPERM` on write** | Editors, antivirus or indexers can briefly lock files; writes retry for ~2 s. If it persists, close the program holding the file. |
|
|
23
|
+
| **Windows: PowerShell blocks `devworkspace.ps1`** | `npm` creates `.cmd` and `.ps1` shims. Run via `devworkspace.cmd`, `npx devworkspace`, or relax the execution policy for your user (`Set-ExecutionPolicy -Scope CurrentUser RemoteSigned`). |
|
|
24
|
+
| **`.devworkspace` not appearing in Git** | The root `.gitignore` ignores it. Remove that rule; `.devworkspace/.gitignore` already excludes the machine-local parts. |
|
|
25
|
+
| **Analysis seems incomplete** | `status`/`doctor` says "partial" when file or depth limits were hit. Raise `settings.maxFiles` in `project.json` or add `.devworkspaceignore` entries for generated folders. |
|
|
26
|
+
|
|
27
|
+
Add `--debug` to any command for stack traces and debug logs (secrets are still redacted).
|
package/package.json
CHANGED
|
@@ -1,6 +1,70 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "devworkspace",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "Project-local AI engineering workspace: deterministic repository discovery, portable project knowledge, tasks, decisions and verification gates for AI coding agents.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"devworkspace": "dist/cli/main.js"
|
|
8
|
+
},
|
|
9
|
+
"main": "./dist/index.js",
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"exports": {
|
|
12
|
+
".": {
|
|
13
|
+
"types": "./dist/index.d.ts",
|
|
14
|
+
"default": "./dist/index.js"
|
|
15
|
+
},
|
|
16
|
+
"./package.json": "./package.json"
|
|
17
|
+
},
|
|
18
|
+
"files": [
|
|
19
|
+
"dist",
|
|
20
|
+
"README.md",
|
|
21
|
+
"CHANGELOG.md",
|
|
22
|
+
"docs",
|
|
23
|
+
"!docs/implementation"
|
|
24
|
+
],
|
|
25
|
+
"engines": {
|
|
26
|
+
"node": ">=20.11"
|
|
27
|
+
},
|
|
28
|
+
"scripts": {
|
|
29
|
+
"build": "node scripts/clean.mjs dist && tsc -p tsconfig.build.json",
|
|
30
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
31
|
+
"lint": "eslint .",
|
|
32
|
+
"test": "vitest run",
|
|
33
|
+
"test:unit": "vitest run tests/unit",
|
|
34
|
+
"test:integration": "vitest run tests/integration",
|
|
35
|
+
"test:e2e": "vitest run tests/e2e",
|
|
36
|
+
"coverage": "vitest run --coverage",
|
|
37
|
+
"audit:security": "npm audit --omit=dev --audit-level=high",
|
|
38
|
+
"smoke": "node scripts/smoke.mjs",
|
|
39
|
+
"release:check": "node scripts/release-check.mjs",
|
|
40
|
+
"prepack": "npm run build"
|
|
41
|
+
},
|
|
42
|
+
"keywords": [
|
|
43
|
+
"ai",
|
|
44
|
+
"claude",
|
|
45
|
+
"claude-code",
|
|
46
|
+
"agent",
|
|
47
|
+
"workspace",
|
|
48
|
+
"developer-tools",
|
|
49
|
+
"knowledge",
|
|
50
|
+
"cli"
|
|
51
|
+
],
|
|
52
|
+
"repository": {
|
|
53
|
+
"type": "git",
|
|
54
|
+
"url": "git+https://github.com/SHIKHIL8137/devworkspace.git"
|
|
55
|
+
},
|
|
56
|
+
"bugs": {
|
|
57
|
+
"url": "https://github.com/SHIKHIL8137/devworkspace/issues"
|
|
58
|
+
},
|
|
59
|
+
"homepage": "https://github.com/SHIKHIL8137/devworkspace#readme",
|
|
60
|
+
"license": "MIT",
|
|
61
|
+
"devDependencies": {
|
|
62
|
+
"@eslint/js": "^10.0.1",
|
|
63
|
+
"@types/node": "^26.6.4",
|
|
64
|
+
"@vitest/coverage-v8": "^5.0.3",
|
|
65
|
+
"eslint": "^10.12.0",
|
|
66
|
+
"typescript": "^6.0.3",
|
|
67
|
+
"typescript-eslint": "^8.71.1",
|
|
68
|
+
"vitest": "^5.0.3"
|
|
69
|
+
}
|
|
70
|
+
}
|