deepwork 0.1.0__py3-none-any.whl → 0.2.0__py3-none-any.whl
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.
- deepwork/cli/install.py +48 -0
- deepwork/cli/sync.py +9 -0
- deepwork/core/adapters.py +17 -0
- deepwork/core/policy_parser.py +10 -0
- deepwork/hooks/evaluate_policies.py +237 -20
- deepwork/schemas/policy_schema.py +10 -0
- deepwork/standard_jobs/deepwork_jobs/AGENTS.md +60 -0
- deepwork/standard_jobs/deepwork_jobs/job.yml +30 -22
- deepwork/standard_jobs/deepwork_jobs/make_new_job.sh +134 -0
- deepwork/standard_jobs/deepwork_jobs/steps/define.md +26 -57
- deepwork/standard_jobs/deepwork_jobs/steps/implement.md +43 -242
- deepwork/standard_jobs/deepwork_jobs/steps/learn.md +288 -0
- deepwork/standard_jobs/deepwork_jobs/steps/supplemental_file_references.md +40 -0
- deepwork/standard_jobs/deepwork_jobs/templates/agents.md.template +32 -0
- deepwork/standard_jobs/deepwork_jobs/templates/job.yml.example +73 -0
- deepwork/standard_jobs/deepwork_jobs/templates/job.yml.template +56 -0
- deepwork/standard_jobs/deepwork_jobs/templates/step_instruction.md.example +82 -0
- deepwork/standard_jobs/deepwork_jobs/templates/step_instruction.md.template +58 -0
- deepwork/standard_jobs/deepwork_policy/hooks/{capture_work_tree.sh → capture_prompt_work_tree.sh} +3 -2
- deepwork/standard_jobs/deepwork_policy/hooks/policy_stop_hook.sh +3 -19
- deepwork/standard_jobs/deepwork_policy/hooks/user_prompt_submit.sh +5 -6
- deepwork/standard_jobs/deepwork_policy/steps/define.md +22 -1
- deepwork/templates/default_policy.yml +53 -0
- {deepwork-0.1.0.dist-info → deepwork-0.2.0.dist-info}/METADATA +52 -128
- deepwork-0.2.0.dist-info/RECORD +49 -0
- deepwork/standard_jobs/deepwork_jobs/steps/refine.md +0 -447
- deepwork/standard_jobs/deepwork_policy/hooks/get_changed_files.sh +0 -30
- deepwork-0.1.0.dist-info/RECORD +0 -41
- {deepwork-0.1.0.dist-info → deepwork-0.2.0.dist-info}/WHEEL +0 -0
- {deepwork-0.1.0.dist-info → deepwork-0.2.0.dist-info}/entry_points.txt +0 -0
- {deepwork-0.1.0.dist-info → deepwork-0.2.0.dist-info}/licenses/LICENSE.md +0 -0
|
@@ -2,16 +2,13 @@
|
|
|
2
2
|
# policy_stop_hook.sh - Evaluates policies when the agent stops
|
|
3
3
|
#
|
|
4
4
|
# This script is called as a Claude Code Stop hook. It:
|
|
5
|
-
# 1.
|
|
6
|
-
# 2.
|
|
5
|
+
# 1. Evaluates policies from .deepwork.policy.yml
|
|
6
|
+
# 2. Computes changed files based on each policy's compare_to setting
|
|
7
7
|
# 3. Checks for <promise> tags in the conversation transcript
|
|
8
8
|
# 4. Returns JSON to block stop if policies need attention
|
|
9
|
-
# 5. Resets the work tree baseline for the next iteration
|
|
10
9
|
|
|
11
10
|
set -e
|
|
12
11
|
|
|
13
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
14
|
-
|
|
15
12
|
# Check if policy file exists
|
|
16
13
|
if [ ! -f .deepwork.policy.yml ]; then
|
|
17
14
|
# No policies defined, nothing to do
|
|
@@ -31,16 +28,6 @@ if [ -n "${HOOK_INPUT}" ]; then
|
|
|
31
28
|
TRANSCRIPT_PATH=$(echo "${HOOK_INPUT}" | jq -r '.transcript_path // empty' 2>/dev/null || echo "")
|
|
32
29
|
fi
|
|
33
30
|
|
|
34
|
-
# Get changed files
|
|
35
|
-
changed_files=$("${SCRIPT_DIR}/get_changed_files.sh" 2>/dev/null || echo "")
|
|
36
|
-
|
|
37
|
-
# If no files changed, nothing to evaluate
|
|
38
|
-
if [ -z "${changed_files}" ]; then
|
|
39
|
-
# Reset baseline for next iteration
|
|
40
|
-
"${SCRIPT_DIR}/capture_work_tree.sh" 2>/dev/null || true
|
|
41
|
-
exit 0
|
|
42
|
-
fi
|
|
43
|
-
|
|
44
31
|
# Extract conversation text from the JSONL transcript
|
|
45
32
|
# The transcript is JSONL format - each line is a JSON object
|
|
46
33
|
# We need to extract the text content from assistant messages
|
|
@@ -57,16 +44,13 @@ fi
|
|
|
57
44
|
# Call the Python evaluator
|
|
58
45
|
# The Python module handles:
|
|
59
46
|
# - Parsing the policy file
|
|
47
|
+
# - Computing changed files based on each policy's compare_to setting
|
|
60
48
|
# - Matching changed files against triggers/safety patterns
|
|
61
49
|
# - Checking for promise tags in the conversation context
|
|
62
50
|
# - Generating appropriate JSON output
|
|
63
51
|
result=$(echo "${conversation_context}" | python -m deepwork.hooks.evaluate_policies \
|
|
64
52
|
--policy-file .deepwork.policy.yml \
|
|
65
|
-
--changed-files "${changed_files}" \
|
|
66
53
|
2>/dev/null || echo '{}')
|
|
67
54
|
|
|
68
|
-
# Reset the work tree baseline for the next iteration
|
|
69
|
-
"${SCRIPT_DIR}/capture_work_tree.sh" 2>/dev/null || true
|
|
70
|
-
|
|
71
55
|
# Output the result (JSON for Claude Code hooks)
|
|
72
56
|
echo "${result}"
|
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
2
|
# user_prompt_submit.sh - Runs on every user prompt submission
|
|
3
3
|
#
|
|
4
|
-
# This script captures the work tree
|
|
5
|
-
# This
|
|
4
|
+
# This script captures the work tree state at each prompt submission.
|
|
5
|
+
# This baseline is used for policies with compare_to: prompt to detect
|
|
6
|
+
# what changed during an agent response.
|
|
6
7
|
|
|
7
8
|
set -e
|
|
8
9
|
|
|
9
10
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
10
11
|
|
|
11
|
-
#
|
|
12
|
-
|
|
13
|
-
"${SCRIPT_DIR}/capture_work_tree.sh"
|
|
14
|
-
fi
|
|
12
|
+
# Capture work tree state at each prompt for compare_to: prompt policies
|
|
13
|
+
"${SCRIPT_DIR}/capture_prompt_work_tree.sh"
|
|
15
14
|
|
|
16
15
|
# Exit successfully - don't block the prompt
|
|
17
16
|
exit 0
|
|
@@ -56,6 +56,22 @@ If there are files that, when also changed, mean the policy shouldn't fire:
|
|
|
56
56
|
- Trigger: `src/auth/**/*`
|
|
57
57
|
- Safety: `SECURITY.md`, `docs/security_review.md`
|
|
58
58
|
|
|
59
|
+
### Step 3b: Choose the Comparison Mode (Optional)
|
|
60
|
+
|
|
61
|
+
The `compare_to` field controls what baseline is used when detecting "changed files":
|
|
62
|
+
|
|
63
|
+
**Options:**
|
|
64
|
+
- `base` (default) - Compares to the base of the current branch (merge-base with main/master). This is the most common choice for feature branches, as it shows all changes made on the branch.
|
|
65
|
+
- `default_tip` - Compares to the current tip of the default branch (main/master). Useful when you want to see the difference from what's currently in production.
|
|
66
|
+
- `prompt` - Compares to the state at the start of each prompt. Useful for policies that should only fire based on changes made during a single agent response.
|
|
67
|
+
|
|
68
|
+
**When to use each:**
|
|
69
|
+
- **base**: Best for most policies. "Did this branch change config files?" → trigger docs review
|
|
70
|
+
- **default_tip**: For policies about what's different from production/main
|
|
71
|
+
- **prompt**: For policies that should only consider very recent changes within the current session
|
|
72
|
+
|
|
73
|
+
Most policies should use the default (`base`) and don't need to specify `compare_to`.
|
|
74
|
+
|
|
59
75
|
### Step 4: Write the Instructions
|
|
60
76
|
|
|
61
77
|
Create clear, actionable instructions for what the agent should do when the policy fires.
|
|
@@ -86,6 +102,7 @@ Create or update `.deepwork.policy.yml` in the project root.
|
|
|
86
102
|
- name: "[Friendly name for the policy]"
|
|
87
103
|
trigger: "[glob pattern]" # or array: ["pattern1", "pattern2"]
|
|
88
104
|
safety: "[glob pattern]" # optional, or array
|
|
105
|
+
compare_to: "base" # optional: "base" (default), "default_tip", or "prompt"
|
|
89
106
|
instructions: |
|
|
90
107
|
[Multi-line instructions for the agent...]
|
|
91
108
|
```
|
|
@@ -95,6 +112,7 @@ Create or update `.deepwork.policy.yml` in the project root.
|
|
|
95
112
|
- name: "[Friendly name for the policy]"
|
|
96
113
|
trigger: "[glob pattern]"
|
|
97
114
|
safety: "[glob pattern]"
|
|
115
|
+
compare_to: "base" # optional
|
|
98
116
|
instructions_file: "path/to/instructions.md"
|
|
99
117
|
```
|
|
100
118
|
|
|
@@ -166,7 +184,10 @@ Create or update this file at the project root with the new policy entry.
|
|
|
166
184
|
## Context
|
|
167
185
|
|
|
168
186
|
Policies are evaluated automatically when you finish working on a task. The system:
|
|
169
|
-
1.
|
|
187
|
+
1. Determines which files have changed based on each policy's `compare_to` setting:
|
|
188
|
+
- `base` (default): Files changed since the branch diverged from main/master
|
|
189
|
+
- `default_tip`: Files different from the current main/master branch
|
|
190
|
+
- `prompt`: Files changed since the last prompt submission
|
|
170
191
|
2. Checks if any changes match policy trigger patterns
|
|
171
192
|
3. Skips policies where safety patterns also matched
|
|
172
193
|
4. Prompts you with instructions for any triggered policies
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# DeepWork Policy Configuration
|
|
2
|
+
#
|
|
3
|
+
# Policies are automated guardrails that trigger when specific files change.
|
|
4
|
+
# They help ensure documentation stays current, security reviews happen, etc.
|
|
5
|
+
#
|
|
6
|
+
# Use /deepwork_policy.define to create new policies interactively.
|
|
7
|
+
#
|
|
8
|
+
# Format:
|
|
9
|
+
# - name: "Friendly name for the policy"
|
|
10
|
+
# trigger: "glob/pattern/**/*" # or array: ["pattern1", "pattern2"]
|
|
11
|
+
# safety: "pattern/**/*" # optional - if these also changed, skip the policy
|
|
12
|
+
# compare_to: "base" # optional: "base" (default), "default_tip", or "prompt"
|
|
13
|
+
# instructions: |
|
|
14
|
+
# Multi-line instructions for the AI agent...
|
|
15
|
+
#
|
|
16
|
+
# Example policies (uncomment and customize):
|
|
17
|
+
#
|
|
18
|
+
# - name: "README Documentation"
|
|
19
|
+
# trigger: "src/**/*"
|
|
20
|
+
# safety: "README.md"
|
|
21
|
+
# instructions: |
|
|
22
|
+
# Source code has been modified. Please review README.md for accuracy:
|
|
23
|
+
# 1. Verify the project overview reflects current functionality
|
|
24
|
+
# 2. Check that usage examples are still correct
|
|
25
|
+
# 3. Ensure installation/setup instructions remain valid
|
|
26
|
+
#
|
|
27
|
+
# - name: "API Documentation Sync"
|
|
28
|
+
# trigger: "src/api/**/*"
|
|
29
|
+
# safety: "docs/api/**/*.md"
|
|
30
|
+
# instructions: |
|
|
31
|
+
# API code has changed. Please verify that API documentation is up to date:
|
|
32
|
+
# - New or changed endpoints
|
|
33
|
+
# - Modified request/response schemas
|
|
34
|
+
# - Updated authentication requirements
|
|
35
|
+
#
|
|
36
|
+
# - name: "Security Review for Auth Changes"
|
|
37
|
+
# trigger:
|
|
38
|
+
# - "src/auth/**/*"
|
|
39
|
+
# - "src/security/**/*"
|
|
40
|
+
# instructions: |
|
|
41
|
+
# Authentication or security code has been changed. Please:
|
|
42
|
+
# 1. Review for hardcoded credentials or secrets
|
|
43
|
+
# 2. Check input validation on user inputs
|
|
44
|
+
# 3. Verify access control logic is correct
|
|
45
|
+
#
|
|
46
|
+
# - name: "Test Coverage for New Code"
|
|
47
|
+
# trigger: "src/**/*.py"
|
|
48
|
+
# safety: "tests/**/*.py"
|
|
49
|
+
# instructions: |
|
|
50
|
+
# New source code was added. Please ensure appropriate test coverage:
|
|
51
|
+
# 1. Add unit tests for new functions/methods
|
|
52
|
+
# 2. Update integration tests if behavior changed
|
|
53
|
+
# 3. Verify all new code paths are tested
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: deepwork
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2.0
|
|
4
4
|
Summary: Framework for enabling AI agents to perform complex, multi-step work tasks
|
|
5
5
|
Project-URL: Homepage, https://github.com/deepwork/deepwork
|
|
6
6
|
Project-URL: Documentation, https://github.com/deepwork/deepwork#readme
|
|
@@ -50,7 +50,19 @@ DeepWork is a tool for defining and executing multi-step workflows with AI codin
|
|
|
50
50
|
| OpenCode | Planned | Markdown | No |
|
|
51
51
|
| GitHub Copilot CLI | Planned | Markdown | No (tool permissions only) |
|
|
52
52
|
|
|
53
|
-
|
|
53
|
+
> **Tip:** New to DeepWork? Claude Code has the most complete feature support, including quality validation hooks and automated policies. For browser automation, Claude in Chrome (Anthropic's browser extension) works well with DeepWork workflows.
|
|
54
|
+
|
|
55
|
+
## Easy Installation
|
|
56
|
+
In your Agent CLI (ex. `claude`), ask:
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
Please fully install https://pypi.org/project/deepwork/ and make sure you see the new commands.
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Installation Details
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
**Agents**: - be sure to perform all the steps, not just the package install.
|
|
54
66
|
|
|
55
67
|
### Prerequisites
|
|
56
68
|
|
|
@@ -61,45 +73,34 @@ DeepWork is a tool for defining and executing multi-step workflows with AI codin
|
|
|
61
73
|
### Install DeepWork
|
|
62
74
|
|
|
63
75
|
```bash
|
|
64
|
-
# Using
|
|
65
|
-
|
|
76
|
+
# Using pipx (recommended - isolated environment)
|
|
77
|
+
pipx install deepwork
|
|
78
|
+
|
|
79
|
+
# Or using uv
|
|
80
|
+
uv tool install deepwork
|
|
66
81
|
|
|
67
82
|
# Or using pip
|
|
68
|
-
pip install
|
|
83
|
+
pip install deepwork
|
|
69
84
|
```
|
|
70
85
|
|
|
71
86
|
### Install in Your Project
|
|
72
|
-
|
|
73
|
-
#### Claude Code
|
|
74
|
-
|
|
75
87
|
```bash
|
|
76
88
|
cd your-project/
|
|
77
89
|
deepwork install --platform claude
|
|
78
|
-
```
|
|
79
90
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
```bash
|
|
83
|
-
cd your-project/
|
|
91
|
+
# Or Gemini CLI, etc.
|
|
84
92
|
deepwork install --platform gemini
|
|
85
93
|
```
|
|
86
94
|
|
|
87
|
-
**Gemini CLI Notes**:
|
|
88
|
-
- Commands are generated as TOML files in `.gemini/commands/`
|
|
89
|
-
- Commands use colon (`:`) namespacing: `/job_name:step_id`
|
|
90
|
-
- Gemini CLI does not support command-level hooks; quality validation is embedded in prompts
|
|
91
|
-
- See [Gemini CLI documentation](https://geminicli.com/docs/) for more details
|
|
92
|
-
|
|
93
95
|
This will:
|
|
94
96
|
- Create `.deepwork/` directory structure
|
|
95
97
|
- Generate core DeepWork jobs
|
|
96
98
|
- Install DeepWork jobs for your AI assistant
|
|
97
99
|
- Configure hooks for your AI assistant to enable policies
|
|
100
|
+
- Create a `.deepwork.policy.yml` template file with example policies
|
|
98
101
|
|
|
99
102
|
## Quick Start
|
|
100
103
|
|
|
101
|
-
|
|
102
|
-
|
|
103
104
|
### 1. Define a Job
|
|
104
105
|
Jobs are multi-step workflows where each Step has clear input and output artifacts, making them easier to manage effectively.
|
|
105
106
|
|
|
@@ -228,50 +229,10 @@ your-project/
|
|
|
228
229
|
|
|
229
230
|
**Note**: Work outputs are created on dedicated Git branches (e.g., `deepwork/job_name-instance-date`), not in a separate directory.
|
|
230
231
|
|
|
231
|
-
## Development
|
|
232
|
-
|
|
233
|
-
### Setup Development Environment
|
|
234
|
-
|
|
235
|
-
```bash
|
|
236
|
-
# Using Nix (recommended)
|
|
237
|
-
nix-shell
|
|
238
|
-
|
|
239
|
-
# Or manually
|
|
240
|
-
uv sync
|
|
241
|
-
```
|
|
242
|
-
|
|
243
|
-
### Run Tests
|
|
244
|
-
|
|
245
|
-
```bash
|
|
246
|
-
# All tests
|
|
247
|
-
uv run pytest tests/ -v
|
|
248
|
-
|
|
249
|
-
# Unit tests only
|
|
250
|
-
uv run pytest tests/unit/ -v
|
|
251
|
-
|
|
252
|
-
# Integration tests only
|
|
253
|
-
uv run pytest tests/integration/ -v
|
|
254
|
-
|
|
255
|
-
# With coverage
|
|
256
|
-
uv run pytest tests/ --cov=deepwork --cov-report=html
|
|
257
|
-
```
|
|
258
|
-
|
|
259
|
-
### Code Quality
|
|
260
|
-
|
|
261
|
-
```bash
|
|
262
|
-
# Linting
|
|
263
|
-
ruff check src/
|
|
264
|
-
|
|
265
|
-
# Type checking
|
|
266
|
-
mypy src/
|
|
267
|
-
|
|
268
|
-
# Format code
|
|
269
|
-
ruff format src/
|
|
270
|
-
```
|
|
271
|
-
|
|
272
232
|
## Documentation
|
|
273
233
|
|
|
274
234
|
- **[Architecture](doc/architecture.md)**: Complete design specification
|
|
235
|
+
- **[Contributing](CONTRIBUTING.md)**: Setup development environment and contribute
|
|
275
236
|
|
|
276
237
|
## Project Structure
|
|
277
238
|
|
|
@@ -297,74 +258,42 @@ deepwork/
|
|
|
297
258
|
|
|
298
259
|
## Features
|
|
299
260
|
|
|
300
|
-
### Job Definition
|
|
301
|
-
|
|
302
|
-
- **
|
|
303
|
-
- **
|
|
304
|
-
- **
|
|
305
|
-
- **
|
|
306
|
-
|
|
307
|
-
###
|
|
308
|
-
|
|
309
|
-
- **
|
|
310
|
-
- **
|
|
311
|
-
- **
|
|
312
|
-
|
|
313
|
-
###
|
|
314
|
-
|
|
315
|
-
- **
|
|
316
|
-
- **
|
|
317
|
-
- **
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
Policies automatically enforce team guidelines when files change:
|
|
322
|
-
|
|
261
|
+
### 📋 Job Definition
|
|
262
|
+
Define structured, multi-step workflows where each step has clear requirements and produces specific results.
|
|
263
|
+
- **Dependency Management**: Explicitly link steps with automatic sequence handling and cycle detection.
|
|
264
|
+
- **Artifact Passing**: Seamlessly use file outputs from one step as inputs for future steps.
|
|
265
|
+
- **Dynamic Inputs**: Support for both fixed file references and interactive user parameters.
|
|
266
|
+
- **Human-Readable YAML**: Simple, declarative job definitions that are easy to version and maintain.
|
|
267
|
+
|
|
268
|
+
### 🌿 Git-Native Workflow
|
|
269
|
+
Maintain a clean repository with automatic branch management and isolation.
|
|
270
|
+
- **Automatic Branching**: Every job execution happens on a dedicated work branch (e.g., `deepwork/my-job-2024`).
|
|
271
|
+
- **Namespace Isolation**: Run multiple concurrent jobs or instances without versioning conflicts.
|
|
272
|
+
- **Full Traceability**: All AI-generated changes, logs, and artifacts are tracked natively in your Git history.
|
|
273
|
+
|
|
274
|
+
### 🛡️ Automated Policies
|
|
275
|
+
Enforce project standards and best practices without manual oversight. Policies monitor file changes and automatically prompt your AI assistant to follow specific guidelines when relevant code is modified.
|
|
276
|
+
- **Automatic Triggers**: Detect when specific files or directories are changed to fire relevant policies.
|
|
277
|
+
- **Contextual Guidance**: Instructions are injected directly into the AI's workflow at the right moment.
|
|
278
|
+
- **Common Use Cases**: Keep documentation in sync, enforce security reviews, or automate changelog updates.
|
|
279
|
+
|
|
280
|
+
**Example Policy**:
|
|
323
281
|
```yaml
|
|
324
|
-
#
|
|
282
|
+
# Enforce documentation updates when config changes
|
|
325
283
|
- name: "Update docs on config changes"
|
|
326
284
|
trigger: "app/config/**/*"
|
|
327
|
-
|
|
328
|
-
instructions: |
|
|
329
|
-
Configuration files changed. Please update docs/install_guide.md
|
|
330
|
-
if installation instructions need to change.
|
|
331
|
-
```
|
|
332
|
-
|
|
333
|
-
**How it works**:
|
|
334
|
-
1. When you start a Claude Code session, the baseline git state is captured
|
|
335
|
-
2. When the agent finishes, changed files are compared against policy triggers
|
|
336
|
-
3. If policies fire (trigger matches, no safety match), Claude is prompted to address them
|
|
337
|
-
4. Use `<promise>✓ Policy Name</promise>` to mark policies as handled
|
|
338
|
-
|
|
339
|
-
**Use cases**:
|
|
340
|
-
- Keep documentation in sync with code changes
|
|
341
|
-
- Require security review for auth code modifications
|
|
342
|
-
- Enforce changelog updates for API changes
|
|
343
|
-
|
|
344
|
-
Define policies interactively:
|
|
345
|
-
```
|
|
346
|
-
/deepwork_policy.define
|
|
285
|
+
instructions: "Configuration files changed. Please update docs/install_guide.md."
|
|
347
286
|
```
|
|
348
287
|
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
-
|
|
354
|
-
- Automatic skill invocation
|
|
355
|
-
- Progress visualization
|
|
356
|
-
- Error recovery
|
|
357
|
-
|
|
358
|
-
### Phase 3: Advanced Features (Planned)
|
|
359
|
-
|
|
360
|
-
- Job templates and marketplace
|
|
361
|
-
- Parallel step execution
|
|
362
|
-
- External tool integration
|
|
363
|
-
- Web UI for job management
|
|
288
|
+
### 🚀 Multi-Platform Support
|
|
289
|
+
Generate native commands and skills tailored for your AI coding assistant.
|
|
290
|
+
- **Native Integration**: Works directly with the skill/command formats of supported agents.
|
|
291
|
+
- **Context-Aware**: Skills include all necessary context (instructions, inputs, and dependencies) for the AI.
|
|
292
|
+
- **Expanding Ecosystem**: Currently supports **Claude Code** and **Gemini CLI**, with more platforms planned.
|
|
364
293
|
|
|
365
294
|
## Contributing
|
|
366
295
|
|
|
367
|
-
DeepWork is currently in MVP phase. Contributions welcome!
|
|
296
|
+
DeepWork is currently in MVP phase. Contributions welcome! See [CONTRIBUTING.md](CONTRIBUTING.md) for the full development guide.
|
|
368
297
|
|
|
369
298
|
## License
|
|
370
299
|
|
|
@@ -375,15 +304,10 @@ DeepWork is licensed under the Business Source License 1.1 (BSL 1.1). See [LICEN
|
|
|
375
304
|
- **Free for non-competing use**: You can use DeepWork freely for internal workflow automation, education, research, and development
|
|
376
305
|
- **Change Date**: On January 14, 2030, the license will automatically convert to Apache License 2.0
|
|
377
306
|
- **Prohibited Uses**: You cannot use DeepWork to build products that compete with DeepWork or Unsupervised.com, Inc. in workflow automation or data analysis
|
|
378
|
-
- **Contributing**: Contributors must sign our [Contributor License Agreement (CLA)](CLA.md)
|
|
307
|
+
- **Contributing**: Contributors must sign our [Contributor License Agreement (CLA)](CLA/version_1/CLA.md)
|
|
379
308
|
|
|
380
309
|
For commercial use or questions about licensing, please contact legal@unsupervised.com
|
|
381
310
|
|
|
382
311
|
## Credits
|
|
383
312
|
|
|
384
313
|
- Inspired by [GitHub's spec-kit](https://github.com/github/spec-kit)
|
|
385
|
-
- Built for [Claude Code](https://claude.com/claude-code)
|
|
386
|
-
|
|
387
|
-
---
|
|
388
|
-
|
|
389
|
-
**Built with Claude Code** 🤖
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
deepwork/__init__.py,sha256=vcMnJioxhfoL6kGh4FM51Vk9UoLnQ76g6Ms7XDUItYA,748
|
|
2
|
+
deepwork/cli/__init__.py,sha256=3SqmfcP2xqutiCYAbajFDJTjr2pOLydqTN0NN-FTsIE,33
|
|
3
|
+
deepwork/cli/install.py,sha256=EnsegIjj-ZYkXMGER0iJXHuN2vVzFhzDUbNLL0ZU5bk,11366
|
|
4
|
+
deepwork/cli/main.py,sha256=m6tVnfSy03azI9Ky6ySEMat_UdLEMzVT3SsRKQWigvA,471
|
|
5
|
+
deepwork/cli/sync.py,sha256=lGgT9Tz_vPQx4z4Bkqk5LfkcT2hTn9nPvdWJVSeKhmM,6303
|
|
6
|
+
deepwork/core/__init__.py,sha256=1g869QuwsYzNjQONneng2OMc6HKt-tlBCaxJbMMfoho,36
|
|
7
|
+
deepwork/core/adapters.py,sha256=wvK4_dSPzRppk7tXuHWIqftqFllYwR-h5YWFZjwcxbY,12908
|
|
8
|
+
deepwork/core/detector.py,sha256=PThpFLH-ZVL8UqjVdGSnGA0mFbhc6_rp6V3_Yzw97kI,2466
|
|
9
|
+
deepwork/core/generator.py,sha256=jMd0uTcym_zozksL3NAHIklaiMNotOvoUsqm-xA_pr0,9935
|
|
10
|
+
deepwork/core/hooks_syncer.py,sha256=GY4XI4VaQLucuU_zPHsDmEUCfgStHIsD558qpWan2bs,5817
|
|
11
|
+
deepwork/core/parser.py,sha256=y1YnOrbKtQEtpv-kPTJHE_A7M3MGaUZhrE59RFcp778,9573
|
|
12
|
+
deepwork/core/policy_parser.py,sha256=wLte32h_uUaJPNTuH2p4pL-EYg1ntSymEdArX-x7GcU,9384
|
|
13
|
+
deepwork/hooks/__init__.py,sha256=dEadpnlsP9ZOGHuyvXxhCb84q9ogmSQH7gL_hQp3q7Y,74
|
|
14
|
+
deepwork/hooks/evaluate_policies.py,sha256=hGi6lDcldGj7MYoUqViB9ObtTRrUHJvkjJeNJbl5lmI,11482
|
|
15
|
+
deepwork/schemas/__init__.py,sha256=PpydKb_oaTv8lYapN_nV-Tl_OUCoSM_okvsEJ8gNTpI,41
|
|
16
|
+
deepwork/schemas/job_schema.py,sha256=MpcUsk2pH7y-uNANFTeNlTDwyKwALAAf57VmJeK-JwE,8755
|
|
17
|
+
deepwork/schemas/policy_schema.py,sha256=Y6P3YkiEza-W8WwqjTBinNCPreCgMz2OUShmVGx4OBo,3099
|
|
18
|
+
deepwork/standard_jobs/deepwork_jobs/AGENTS.md,sha256=Y6I4jZ8DfN0RFY3UF5bgQRZvL7wQD9P0lgE7EZM6CGI,2252
|
|
19
|
+
deepwork/standard_jobs/deepwork_jobs/job.yml,sha256=aY2V-ReMuZ2VxqVT14H1euX_cB9ZvWibAzO81oXI-o8,5924
|
|
20
|
+
deepwork/standard_jobs/deepwork_jobs/make_new_job.sh,sha256=JArfFU9lEaJPRsXRL3rU1IMt2p6Bq0s2C9f98aJ7Mxg,3878
|
|
21
|
+
deepwork/standard_jobs/deepwork_jobs/steps/define.md,sha256=6CYM7LB1Vx7tD76QP65s2wdTCcPk15ZVFLx6TZndbyg,12819
|
|
22
|
+
deepwork/standard_jobs/deepwork_jobs/steps/implement.md,sha256=Wh7ZJGNSyejSgICPFzhbTBaH2bF288YGWqkhKQEmyH4,10313
|
|
23
|
+
deepwork/standard_jobs/deepwork_jobs/steps/learn.md,sha256=yyB6ManHblOOxEM_Odbx0tvPVFVwqlmnwxiC7lZ7txU,10185
|
|
24
|
+
deepwork/standard_jobs/deepwork_jobs/steps/supplemental_file_references.md,sha256=uKDEwB3TxMLK-Zim3QQfkvaW5W6AVWHjWnH25aY6wCw,1478
|
|
25
|
+
deepwork/standard_jobs/deepwork_jobs/templates/agents.md.template,sha256=SUJL862C6-DnT9lK3sNIZ5T2wVgXN4YRph4FrKtFnLo,739
|
|
26
|
+
deepwork/standard_jobs/deepwork_jobs/templates/job.yml.example,sha256=roRi6sIGFGmPCkoVW26HfuTBjAO8-pPsxI5-Gfg3rc0,2361
|
|
27
|
+
deepwork/standard_jobs/deepwork_jobs/templates/job.yml.template,sha256=3I-VQvqXVJNZ_Vb5Ik28JsrEbGKbyLTZcuKxdEmV5s0,1789
|
|
28
|
+
deepwork/standard_jobs/deepwork_jobs/templates/step_instruction.md.example,sha256=HXcjVaQz2HsDiA4ClnIeLvysVOGrFJ_5Tr-pm6dhdwc,2706
|
|
29
|
+
deepwork/standard_jobs/deepwork_jobs/templates/step_instruction.md.template,sha256=6n9jFFuda4r549Oo-LBPKixFD3NvDl5MwEg5V7ItQBg,1286
|
|
30
|
+
deepwork/standard_jobs/deepwork_policy/job.yml,sha256=6pxyEiHZ7fThd4CjpkkROKXGlRqaH4odinLc-ttfork,1377
|
|
31
|
+
deepwork/standard_jobs/deepwork_policy/hooks/capture_prompt_work_tree.sh,sha256=D6Ozo9oDqsL7YBh-ebQK1S8ED9hfIi_0Z8khFjC6wZY,973
|
|
32
|
+
deepwork/standard_jobs/deepwork_policy/hooks/global_hooks.yml,sha256=AS8wzWz7Q4s7iUdhjUwjm9t91Z7QZZw3JCBH81IqKRg,166
|
|
33
|
+
deepwork/standard_jobs/deepwork_policy/hooks/policy_stop_hook.sh,sha256=HFLTheh3VCphhtMCKpPN4a54lrNWlrOffuC23_-QY34,2122
|
|
34
|
+
deepwork/standard_jobs/deepwork_policy/hooks/user_prompt_submit.sh,sha256=TxwYb7kBW-cfHmcQoruJBjCTWvdWbQVQIMplNgzMuOs,498
|
|
35
|
+
deepwork/standard_jobs/deepwork_policy/steps/define.md,sha256=p16fcPSc_6g4WvBzCBJ5l32Uaasp8lew5e6LaDPjpNI,7430
|
|
36
|
+
deepwork/templates/__init__.py,sha256=APvjx_u7eRUerw9yA_fJ1ZqCzYA-FWUCV9HCz0RgjOc,50
|
|
37
|
+
deepwork/templates/default_policy.yml,sha256=nOJtFzV6SPDwNvzNcDKL-679CTXq6hgIBTaxnUKSdVs,2049
|
|
38
|
+
deepwork/templates/claude/command-job-step.md.jinja,sha256=hrOR6WqUVJ8aX_qIptVUuGd4BAe439Dx6gMv-MeCk40,5795
|
|
39
|
+
deepwork/templates/gemini/command-job-step.toml.jinja,sha256=UlhljjJlwNO9D_NrG6MNZ7IKozrdjy2DkPkj9E7hKxU,4196
|
|
40
|
+
deepwork/utils/__init__.py,sha256=AtvE49IFI8Rg36O4cNIlzB-oxvkW3apFgXExn8GSk6s,38
|
|
41
|
+
deepwork/utils/fs.py,sha256=94OUvUrqGebjHVtnjd5vXL6DalKNdpRu-iAPsHvAPjI,3499
|
|
42
|
+
deepwork/utils/git.py,sha256=J4tAB1zE6-WMAEHbarevhmSvvPLkeKBpiRv1UxUVwYk,3748
|
|
43
|
+
deepwork/utils/validation.py,sha256=SyFg9fIu1JCDMbssQgJRCTUNToDNcINccn8lje-tjts,851
|
|
44
|
+
deepwork/utils/yaml_utils.py,sha256=X8c9yEqxEgw5CdPQ23f1Wz8SSP783MMGKyGV_2SKaNU,2454
|
|
45
|
+
deepwork-0.2.0.dist-info/METADATA,sha256=z00l55xdxJKzjQxc0d7m293oGNaEAnfa0gzkPOi1UGk,11216
|
|
46
|
+
deepwork-0.2.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
47
|
+
deepwork-0.2.0.dist-info/entry_points.txt,sha256=RhJBySzm619kh-yIdsAyfFXInAlY8Jm-39FLIBcOj2s,51
|
|
48
|
+
deepwork-0.2.0.dist-info/licenses/LICENSE.md,sha256=W0EtJVYf0cQ_awukOCW1ETwNSpV2RKqnAGfoOjyz_K8,4126
|
|
49
|
+
deepwork-0.2.0.dist-info/RECORD,,
|