@leejungkiin/awkit 1.6.5 → 1.6.8
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/README.md +121 -130
- package/bin/awk.js +111 -8
- package/package.json +5 -3
- package/schemas/onboarding-screen.schema.json +108 -0
- package/scripts/__pycache__/openrouter_image_gen.cpython-311.pyc +0 -0
- package/scripts/cockpit-quota.js +93 -0
- package/scripts/openrouter_image_gen.py +772 -0
- package/scripts/video-analyzer.js +172 -0
- package/skills/CATALOG.md +2 -1
- package/skills/ai-sprite-maker/SKILL.md +27 -6
- package/skills/ai-sprite-maker/scripts/__pycache__/remove_chroma_key.cpython-311.pyc +0 -0
- package/skills/ai-sprite-maker/scripts/remove_chroma_key.py +440 -0
- package/skills/awf-caveman/SKILL.md +65 -0
- package/skills/expo-build-optimizer/SKILL.md +33 -0
- package/skills/ios-app-store-audit/SKILL.md +48 -0
- package/skills/ios-expert-coder/SKILL.md +45 -0
- package/skills/mascot-designer/SKILL.md +66 -0
- package/skills/mascot-designer/examples/witny-case-study.md +35 -0
- package/skills/orchestrator/SKILL.md +20 -0
- package/skills/short-maker/scripts/google-flow-cli/README.md +227 -115
- package/skills/short-maker/scripts/google-flow-cli/gflow/api/client.py +32 -3
- package/skills/short-maker/scripts/google-flow-cli/gflow/api/models.py +4 -2
- package/skills/short-maker/scripts/google-flow-cli/gflow/cli/main.py +33 -6
- package/skills/short-maker/scripts/google-flow-cli/pyproject.toml +1 -1
- package/skills/verification-gate/SKILL.md +4 -0
- package/templates/help.html +21 -0
- package/templates/project-identity/android.json +24 -0
- package/templates/project-identity/backend-nestjs.json +24 -0
- package/templates/project-identity/expo.json +24 -0
- package/templates/project-identity/ios.json +24 -0
- package/templates/project-identity/web-nextjs.json +24 -0
- package/templates/specs/design-template.md +71 -161
- package/templates/specs/requirements-template.md +133 -65
- package/workflows/ui/create-spec-architect.md +80 -50
- package/workflows/ui/image-gen.md +118 -0
package/README.md
CHANGED
|
@@ -1,41 +1,42 @@
|
|
|
1
|
-
# AWKit — Antigravity Workflow Kit
|
|
1
|
+
# AWKit — Antigravity Workflow Kit
|
|
2
2
|
|
|
3
|
-
>
|
|
3
|
+
> Antigravity v12.5 · npm package v1.6.5 · Single Source of Truth · Symphony-first · Mindful execution
|
|
4
4
|
|
|
5
|
-
AWKit
|
|
6
|
-
|
|
5
|
+
AWKit is a professional AI-agent orchestration framework. This repository is the single source of truth for workflows, skills, core rules (GEMINI.md), and installation tooling (no more scattered configs across multiple repos).
|
|
6
|
+
|
|
7
|
+
AWKit focuses on predictable execution: task management via Symphony, optional Trello sync and Telegram notifications, plus mindful checkpoints that help agents (and humans) stop at the right time and avoid over-optimizing.
|
|
7
8
|
|
|
8
9
|
---
|
|
9
10
|
|
|
10
|
-
##
|
|
11
|
+
## Core Principles
|
|
11
12
|
|
|
12
|
-
AWKit (Antigravity v12+)
|
|
13
|
+
AWKit (Antigravity v12+) enforces a small set of non-negotiable principles to keep AI work safe and effective:
|
|
13
14
|
|
|
14
|
-
1. **Anti-sycophancy
|
|
15
|
-
2. **Search
|
|
16
|
-
3. **Completion
|
|
17
|
-
4. **
|
|
18
|
-
5. **3-
|
|
19
|
-
6. **Scope
|
|
20
|
-
7. **Boil-the-
|
|
21
|
-
8. **Safety
|
|
22
|
-
9. **Mindful
|
|
15
|
+
1. **Anti-sycophancy**: push back when an approach has red flags; do not agree blindly.
|
|
16
|
+
2. **Search before building (3-layer)**: check NeuralMemory/codebase first → then standard libraries/SDKs → only write new code as a last resort.
|
|
17
|
+
3. **Completion status protocol**: use one of `DONE`, `DONE_WITH_CONCERNS`, `BLOCKED`, `NEEDS_CONTEXT`.
|
|
18
|
+
4. **Decision principles**: Complete > Shortcuts, Evidence > Assumptions, Standard > Custom, Explicit > Implicit, Test > Trust, Small > Big.
|
|
19
|
+
5. **3-strike escalation**: after 3 failed attempts at fixing the same issue, stop and report context for a decision.
|
|
20
|
+
6. **Scope freeze for debugging**: no unrelated edits, no refactors; focus on root cause.
|
|
21
|
+
7. **"Boil-the-lake" checklist before DONE**: error handling, edge cases, logging, cleanup, input validation, etc.
|
|
22
|
+
8. **Safety guardrails**: block dangerous commands by default; require double confirmation.
|
|
23
|
+
9. **Mindful execution (v12.5+)**: iteration counter, scope guard, milestone rest.
|
|
23
24
|
|
|
24
25
|
---
|
|
25
26
|
|
|
26
|
-
##
|
|
27
|
+
## Quick Start
|
|
27
28
|
|
|
28
|
-
###
|
|
29
|
+
### Install (3 steps)
|
|
29
30
|
|
|
30
31
|
```bash
|
|
31
|
-
# 1
|
|
32
|
+
# 1) AWKit Core (CLI + workflows + skills)
|
|
32
33
|
npm install -g @leejungkiin/awkit
|
|
33
34
|
awkit install
|
|
34
35
|
|
|
35
|
-
# 2
|
|
36
|
+
# 2) Symphony (Task Management & Multi-Agent Orchestration)
|
|
36
37
|
npm install -g @leejungkiin/awkit-symphony
|
|
37
38
|
|
|
38
|
-
# 3
|
|
39
|
+
# 3) Optional: NeuralMemory (AI Memory Engine — requires Python >= 3.11)
|
|
39
40
|
pip install neural-memory
|
|
40
41
|
nmem init
|
|
41
42
|
|
|
@@ -45,163 +46,162 @@ symphony --version
|
|
|
45
46
|
nmem --version
|
|
46
47
|
```
|
|
47
48
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
Notes:
|
|
50
|
+
|
|
51
|
+
- `awkit install` installs only the core runtime profile for the active platform by default (keeps context lean).
|
|
52
|
+
- Enable domain-heavy packs later via `awkit enable-pack <name>`.
|
|
53
|
+
- Use `awkit install --all` only if you explicitly want to regenerate every supported platform.
|
|
51
54
|
|
|
55
|
+
---
|
|
52
56
|
|
|
53
|
-
##
|
|
57
|
+
## CLI Commands
|
|
54
58
|
|
|
55
59
|
| Command | Description |
|
|
56
60
|
|---------|-------------|
|
|
57
|
-
| `awkit install` |
|
|
58
|
-
| `awkit install --all` |
|
|
59
|
-
| `awkit update` | Update
|
|
60
|
-
| `awkit init` |
|
|
61
|
+
| `awkit install` | Install AWKit core runtime to the active platform |
|
|
62
|
+
| `awkit install --all` | Install AWKit core runtime for all supported platforms |
|
|
63
|
+
| `awkit update` | Update to the latest version |
|
|
64
|
+
| `awkit init` | Initialize a new project (creates `.project-identity`, `CODEBASE.md`, etc.) |
|
|
61
65
|
| `awkit sync` | Full sync: harvest + install (one shot) |
|
|
62
|
-
| `awkit status` |
|
|
63
|
-
| `awkit harvest` | Pull
|
|
64
|
-
| `awkit doctor` |
|
|
65
|
-
| `awkit
|
|
66
|
-
| `awkit
|
|
67
|
-
| `awkit
|
|
68
|
-
| `awkit
|
|
69
|
-
| `awkit tg
|
|
70
|
-
| `awkit
|
|
66
|
+
| `awkit status` | Compare repo vs installed runtime (diff view) |
|
|
67
|
+
| `awkit harvest` | Pull from `~/.gemini/antigravity/` back into this repo |
|
|
68
|
+
| `awkit doctor` | Health checks for installation |
|
|
69
|
+
| `awkit list-packs` | List optional skill packs |
|
|
70
|
+
| `awkit enable-pack <name>` | Enable a skill pack |
|
|
71
|
+
| `awkit disable-pack <name>` | Disable a skill pack |
|
|
72
|
+
| `awkit gate ...` | Execute gated automation (git/trello/telegram) |
|
|
73
|
+
| `awkit tg setup` | Configure Telegram bot token, chat id, and topic |
|
|
74
|
+
| `awkit tg send <msg>` | Send a Telegram message |
|
|
75
|
+
| `awkit version` | Print version |
|
|
71
76
|
|
|
72
77
|
### Typical Workflow
|
|
73
78
|
|
|
74
79
|
```bash
|
|
75
|
-
# 1
|
|
80
|
+
# 1) Check what's out of sync
|
|
76
81
|
awkit status
|
|
77
82
|
|
|
78
|
-
# 2a
|
|
83
|
+
# 2a) You edited in ~/.gemini/antigravity/ → pull back to repo
|
|
79
84
|
awkit harvest
|
|
80
85
|
|
|
81
|
-
# 2b
|
|
86
|
+
# 2b) You edited in repo → deploy to active runtime
|
|
82
87
|
awkit install
|
|
83
88
|
|
|
84
|
-
#
|
|
85
|
-
awkit install --all
|
|
86
|
-
|
|
87
|
-
# 2c. Both directions (full round-trip)
|
|
89
|
+
# 2c) Both directions (full round-trip)
|
|
88
90
|
awkit sync
|
|
89
91
|
|
|
90
|
-
# 3
|
|
91
|
-
|
|
92
|
+
# 3) Commit safely (gated)
|
|
93
|
+
awkit gate git auto "chore: sync AWKit snapshot"
|
|
92
94
|
```
|
|
93
95
|
|
|
96
|
+
---
|
|
94
97
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
├──
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
├──
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
│ ├── quality/ audit, performance, ux...
|
|
109
|
-
│ ├── ui/ visualize, design-to-ui...
|
|
110
|
-
│ ├── ads/ ads-audit, optimize...
|
|
111
|
-
│ ├── mobile/ maestro, turbo-build...
|
|
112
|
-
│ ├── expert/ planExpert, codeExpert...
|
|
113
|
-
│ ├── git/ commit, hotfix, rollback...
|
|
114
|
-
│ ├── roles/ tech-lead, pm, qa...
|
|
115
|
-
│ ├── meta/ customize, file-protection...
|
|
116
|
-
│ └── _uncategorized/ misc files
|
|
117
|
-
├── skills/ ← Source skill library
|
|
118
|
-
│ ├── orchestrator/
|
|
119
|
-
│ ├── memory-sync/
|
|
120
|
-
│ ├── brainstorm-agent/
|
|
121
|
-
│ ├── symphony-orchestrator/
|
|
122
|
-
│ ├── awf-session-restore/
|
|
123
|
-
│ └── ...
|
|
124
|
-
├── skill-packs/ ← Optional add-ons, installed on demand
|
|
125
|
-
│ ├── mobile-ios/
|
|
126
|
-
│ ├── mobile-android/
|
|
127
|
-
│ ├── marketing/
|
|
128
|
-
│ ├── creator-studio/
|
|
129
|
-
│ ├── neural-memory/
|
|
130
|
-
│ └── superpowers/
|
|
131
|
-
├── schemas/ ← JSON schemas
|
|
132
|
-
├── templates/ ← Project templates
|
|
133
|
-
├── scripts/
|
|
134
|
-
│ └── harvest.js ← Migration: pull from ~/.gemini/
|
|
135
|
-
├── VERSION → 1.5.0
|
|
136
|
-
└── package.json (@leejungkiin/awkit)
|
|
98
|
+
## Repository Layout
|
|
99
|
+
|
|
100
|
+
```text
|
|
101
|
+
main-awf/ (Source of Truth)
|
|
102
|
+
├── bin/ # CLI entry points
|
|
103
|
+
├── core/ # Core rules/routing for agents
|
|
104
|
+
├── workflows/ # Workflow library
|
|
105
|
+
├── skills/ # Source skill library
|
|
106
|
+
├── skill-packs/ # Optional add-ons, installed on demand
|
|
107
|
+
├── schemas/ # JSON schemas
|
|
108
|
+
├── templates/ # Project templates
|
|
109
|
+
├── scripts/ # Harvest, automation gate, tooling
|
|
110
|
+
└── package.json # @leejungkiin/awkit
|
|
137
111
|
```
|
|
138
112
|
|
|
139
|
-
|
|
113
|
+
---
|
|
140
114
|
|
|
141
|
-
|
|
115
|
+
## Harvest (Migration)
|
|
116
|
+
|
|
117
|
+
If you edited files directly in `~/.gemini/antigravity/` and want to sync them back to this repo:
|
|
142
118
|
|
|
143
119
|
```bash
|
|
144
|
-
#
|
|
120
|
+
# Preview (no changes)
|
|
145
121
|
node scripts/harvest.js --dry-run
|
|
146
122
|
|
|
147
|
-
#
|
|
123
|
+
# Execute harvest
|
|
148
124
|
node scripts/harvest.js
|
|
149
125
|
```
|
|
150
126
|
|
|
151
|
-
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## Runtime Model
|
|
152
130
|
|
|
153
|
-
```
|
|
131
|
+
```text
|
|
154
132
|
main-awf/ (edit here)
|
|
155
|
-
|
|
156
|
-
|
|
133
|
+
|
|
|
134
|
+
| awkit install
|
|
135
|
+
v
|
|
157
136
|
~/.gemini/antigravity/ (runtime)
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
Gemini / Claude / Any AI
|
|
137
|
+
|
|
|
138
|
+
v
|
|
139
|
+
Gemini / Claude / Any AI reads from runtime
|
|
161
140
|
```
|
|
162
141
|
|
|
163
|
-
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## Lean Runtime
|
|
145
|
+
|
|
146
|
+
`awkit install` does not copy the entire source skill library into runtime by default.
|
|
164
147
|
|
|
165
|
-
|
|
148
|
+
- Default install = core work profile only (orchestration, planning, debugging, verification, review, coordination).
|
|
149
|
+
- Default target = active platform only, keeping platform-specific generated artifacts untouched unless explicitly requested.
|
|
150
|
+
- Domain-heavy packs (reverse engineering, marketing/ASO, media production, etc.) are excluded until you opt in.
|
|
151
|
+
- `awkit status` compares runtime against the core profile + enabled packs (optional packs do not create false drift).
|
|
166
152
|
|
|
167
|
-
|
|
168
|
-
- Default target = **active platform only**, which keeps repo-local generated files like `CLAUDE.md` and `.clinerules/*` untouched unless you explicitly choose them.
|
|
169
|
-
- Domain-heavy skills like mobile reverse engineering, ASO/marketing, and media production stay out of runtime until you opt in.
|
|
170
|
-
- `awkit status` now compares runtime against the active core profile + enabled packs, so optional skills no longer show as false drift.
|
|
171
|
-
- Re-running `awkit install` archives old managed optional skills from runtime, which helps shrink the skill catalog exposed to the agent.
|
|
153
|
+
---
|
|
172
154
|
|
|
173
|
-
##
|
|
155
|
+
## Automation Gate
|
|
174
156
|
|
|
175
|
-
|
|
157
|
+
AWKit provides a gated automation layer that reads `.project-identity` and enforces `automation.*` before executing:
|
|
176
158
|
|
|
177
159
|
```bash
|
|
178
|
-
|
|
160
|
+
awkit gate git commit "chore: update"
|
|
161
|
+
awkit gate git push
|
|
162
|
+
awkit gate git auto "chore: update"
|
|
163
|
+
|
|
164
|
+
awkit gate trello complete "Task Name"
|
|
165
|
+
awkit gate trello comment "Progress note..."
|
|
166
|
+
awkit gate trello block "Reason"
|
|
167
|
+
|
|
168
|
+
awkit gate telegram send "Message"
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## Telegram Integration
|
|
174
|
+
|
|
175
|
+
Configure AWKit to send notifications (e.g., after pushes, tests, deploys):
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
# Setup bot token, chat id, and thread id (topic)
|
|
179
179
|
awkit tg setup
|
|
180
180
|
|
|
181
|
-
#
|
|
181
|
+
# Send a test message
|
|
182
182
|
awkit tg send "Hello from AWKit!"
|
|
183
183
|
|
|
184
|
-
#
|
|
184
|
+
# Send to a specific chat/topic
|
|
185
185
|
awkit tg send "Hello" --chat -100123456789 --topic 1234
|
|
186
186
|
```
|
|
187
187
|
|
|
188
|
-
|
|
188
|
+
---
|
|
189
189
|
|
|
190
|
-
|
|
190
|
+
## GitNexus Code Intelligence
|
|
191
191
|
|
|
192
|
-
|
|
192
|
+
AWKit integrates GitNexus for code intelligence and knowledge graphs.
|
|
193
193
|
|
|
194
194
|
```bash
|
|
195
|
-
# 1
|
|
195
|
+
# 1) Build a knowledge graph for a project (first run or after major structure changes)
|
|
196
196
|
npx @duytransipher/gitnexus analyze
|
|
197
197
|
|
|
198
|
-
# 2
|
|
198
|
+
# 2) Setup MCP servers and editor integrations
|
|
199
199
|
npx @duytransipher/gitnexus setup
|
|
200
200
|
```
|
|
201
201
|
|
|
202
|
-
|
|
202
|
+
---
|
|
203
203
|
|
|
204
|
-
##
|
|
204
|
+
## Skill Packs
|
|
205
205
|
|
|
206
206
|
```bash
|
|
207
207
|
awkit list-packs
|
|
@@ -212,17 +212,8 @@ awkit enable-pack marketing
|
|
|
212
212
|
awkit enable-pack creator-studio
|
|
213
213
|
```
|
|
214
214
|
|
|
215
|
-
## 🏗️ Versioning
|
|
216
|
-
|
|
217
|
-
| Version | Name | Notes |
|
|
218
|
-
|---------|------|-------|
|
|
219
|
-
| 4.x | AWF v4 | Shell-based, `awf-` prefix skills |
|
|
220
|
-
| 5.x | Antigravity v5 | Node.js, Symphony integration |
|
|
221
|
-
| 6.x | AWF v6 | main-awf, multiple sources |
|
|
222
|
-
| **1.1.x** | **AWKit v1.1.9** | **Single source of truth, Native CLI, Telegram Integration** |
|
|
223
|
-
| **1.5.x** | **AWKit v1.5.0** | **Unified Orchestration, Symphony 1.5.0, 7-Gate Intelligence** |
|
|
224
|
-
| **12.5.x** | **Antigravity v12.5** | **Mindful Checkpoints (TP-ITER, TP-SCOPE, TP-REST), @duytransipher/gitnexus** |
|
|
225
|
-
|
|
226
215
|
---
|
|
227
216
|
|
|
228
|
-
|
|
217
|
+
## License
|
|
218
|
+
|
|
219
|
+
MIT
|
package/bin/awk.js
CHANGED
|
@@ -41,6 +41,8 @@ const { generateClaudeRules, generateClaudeSkills } = require('./claude-generato
|
|
|
41
41
|
const { generateCursorRules, generateCursorSkills } = require('./cursor-generators');
|
|
42
42
|
const { cmdGate } = require('../scripts/automation-gate');
|
|
43
43
|
const { cmdObsidian } = require('../scripts/obsidian-sync');
|
|
44
|
+
const { cmdQuota } = require('../scripts/cockpit-quota');
|
|
45
|
+
const { cmdVideo } = require('../scripts/video-analyzer');
|
|
44
46
|
|
|
45
47
|
// ─── Platform Definitions ──────────────────────────────────────────────────
|
|
46
48
|
|
|
@@ -55,6 +57,7 @@ const PLATFORMS = {
|
|
|
55
57
|
skills: 'skills',
|
|
56
58
|
schemas: 'schemas',
|
|
57
59
|
templates: 'templates',
|
|
60
|
+
scripts: 'scripts',
|
|
58
61
|
},
|
|
59
62
|
supportsCustomModes: false,
|
|
60
63
|
supportsSubagents: false,
|
|
@@ -736,6 +739,15 @@ function cmdInstall(args = []) {
|
|
|
736
739
|
ok(`${tmplCount} templates installed`);
|
|
737
740
|
}
|
|
738
741
|
|
|
742
|
+
// 8.5 Copy scripts (always overwrite)
|
|
743
|
+
if (plat.dirs.scripts) {
|
|
744
|
+
info('Installing scripts...');
|
|
745
|
+
const scriptsSrc = path.join(AWK_ROOT, 'scripts');
|
|
746
|
+
const scriptsDest = path.join(target, plat.dirs.scripts);
|
|
747
|
+
const scriptsCount = copyDirRecursive(scriptsSrc, scriptsDest);
|
|
748
|
+
ok(`${scriptsCount} scripts installed`);
|
|
749
|
+
}
|
|
750
|
+
|
|
739
751
|
// 9. Save version
|
|
740
752
|
fs.writeFileSync(plat.versionFile, AWK_VERSION);
|
|
741
753
|
ok(`Version ${AWK_VERSION} saved`);
|
|
@@ -2019,6 +2031,9 @@ function cmdHelp() {
|
|
|
2019
2031
|
log(` ${C.green}update${C.reset} Pull latest + reinstall`);
|
|
2020
2032
|
log(` ${C.green}lint${C.reset} Run skill & workflow guards (check length, frontmatter)`);
|
|
2021
2033
|
log(` ${C.green}doctor${C.reset} Check installation health`);
|
|
2034
|
+
log(` ${C.green}credentials list${C.reset} List stored API keys`);
|
|
2035
|
+
log(` ${C.green}credentials set${C.reset} <k> <v> Set API key (e.g., gemini_api_key, openrouter_api_key)`);
|
|
2036
|
+
log(` ${C.green}set-openrouter${C.reset} <key> Shorthand for setting OpenRouter API Key`);
|
|
2022
2037
|
log('');
|
|
2023
2038
|
|
|
2024
2039
|
// Project Init
|
|
@@ -2034,6 +2049,13 @@ function cmdHelp() {
|
|
|
2034
2049
|
log(`${C.bold}🧹 Maintenance${C.reset}`);
|
|
2035
2050
|
log(line);
|
|
2036
2051
|
log(` ${C.green}serve${C.reset} [dir] [-p <port>] Start local HTTP server for assets in CWD`);
|
|
2052
|
+
log(` ${C.green}video${C.reset} <file.mp4> [pmt] Phân tích video/screen record bằng Gemini API`);
|
|
2053
|
+
log(` ${C.gray} --pro${C.reset} Dùng Gemini 3.1 Pro (Chất lượng cao nhất)`);
|
|
2054
|
+
log(` ${C.gray} --flash${C.reset} Dùng Gemini 3 Flash (Nhanh & Tiết kiệm)`);
|
|
2055
|
+
log(` ${C.gray} --debug${C.reset} Dùng prompt tìm lỗi, crash, log`);
|
|
2056
|
+
log(` ${C.gray} --uiux${C.reset} Dùng prompt đánh giá giao diện, animation`);
|
|
2057
|
+
log(` ${C.gray} --clone${C.reset} Dùng prompt bóc băng cấu trúc app đối thủ`);
|
|
2058
|
+
log(` ${C.green}quota${C.reset} Check AI Model Quota from Cockpit extension`);
|
|
2037
2059
|
log(` ${C.green}browser clean${C.reset} Clean browser recordings`);
|
|
2038
2060
|
log(` ${C.gray} --days <N>${C.reset} Keep recordings from last N days (default: 7)`);
|
|
2039
2061
|
log(` ${C.gray} --all${C.reset} Delete all recordings`);
|
|
@@ -2349,6 +2371,24 @@ function buildProjectIdentity(projectName, projectType, cwd, date) {
|
|
|
2349
2371
|
git: {
|
|
2350
2372
|
autoCommit: true,
|
|
2351
2373
|
autoPush: true
|
|
2374
|
+
},
|
|
2375
|
+
obsidian: {
|
|
2376
|
+
enabled: false,
|
|
2377
|
+
path: "",
|
|
2378
|
+
autoSync: false
|
|
2379
|
+
},
|
|
2380
|
+
mcp: {
|
|
2381
|
+
"pixel-mcp": {
|
|
2382
|
+
enabled: false
|
|
2383
|
+
}
|
|
2384
|
+
}
|
|
2385
|
+
},
|
|
2386
|
+
modelPolicy: {
|
|
2387
|
+
mode: "auto",
|
|
2388
|
+
defaultTier: "STANDARD",
|
|
2389
|
+
tierOverrides: {
|
|
2390
|
+
"*.plist|*.json|*.env": "LIGHT",
|
|
2391
|
+
"docs/*": "LIGHT"
|
|
2352
2392
|
}
|
|
2353
2393
|
},
|
|
2354
2394
|
projectStage: 'development',
|
|
@@ -2574,16 +2614,51 @@ async function cmdInit(forceFlag = false) {
|
|
|
2574
2614
|
git: {
|
|
2575
2615
|
autoCommit: true,
|
|
2576
2616
|
autoPush: true
|
|
2617
|
+
},
|
|
2618
|
+
obsidian: {
|
|
2619
|
+
enabled: false,
|
|
2620
|
+
path: "",
|
|
2621
|
+
autoSync: false
|
|
2622
|
+
},
|
|
2623
|
+
mcp: {
|
|
2624
|
+
"pixel-mcp": {
|
|
2625
|
+
enabled: false
|
|
2626
|
+
}
|
|
2577
2627
|
}
|
|
2578
2628
|
};
|
|
2579
2629
|
fs.writeFileSync(identityPath, JSON.stringify(currentIdentity, null, 2) + '\n');
|
|
2580
2630
|
ok('Added Automation config placeholder to .project-identity');
|
|
2581
|
-
} else
|
|
2582
|
-
|
|
2583
|
-
currentIdentity.automation.autoQA
|
|
2584
|
-
|
|
2585
|
-
|
|
2586
|
-
|
|
2631
|
+
} else {
|
|
2632
|
+
let changed = false;
|
|
2633
|
+
if (currentIdentity.automation.autoQA === undefined) {
|
|
2634
|
+
// Update existing automation block with new QA fields
|
|
2635
|
+
currentIdentity.automation.autoQA = true;
|
|
2636
|
+
currentIdentity.automation.maxSelfCorrectionLoops = 3;
|
|
2637
|
+
changed = true;
|
|
2638
|
+
}
|
|
2639
|
+
if (!currentIdentity.automation.obsidian) {
|
|
2640
|
+
currentIdentity.automation.obsidian = { enabled: false, path: "", autoSync: false };
|
|
2641
|
+
changed = true;
|
|
2642
|
+
}
|
|
2643
|
+
if (!currentIdentity.automation.mcp) {
|
|
2644
|
+
currentIdentity.automation.mcp = { "pixel-mcp": { enabled: false } };
|
|
2645
|
+
changed = true;
|
|
2646
|
+
}
|
|
2647
|
+
if (!currentIdentity.modelPolicy) {
|
|
2648
|
+
currentIdentity.modelPolicy = {
|
|
2649
|
+
mode: "auto",
|
|
2650
|
+
defaultTier: "STANDARD",
|
|
2651
|
+
tierOverrides: {
|
|
2652
|
+
"*.plist|*.json|*.env": "LIGHT",
|
|
2653
|
+
"docs/*": "LIGHT"
|
|
2654
|
+
}
|
|
2655
|
+
};
|
|
2656
|
+
changed = true;
|
|
2657
|
+
}
|
|
2658
|
+
if (changed) {
|
|
2659
|
+
fs.writeFileSync(identityPath, JSON.stringify(currentIdentity, null, 2) + '\n');
|
|
2660
|
+
ok('Updated Automation/ModelPolicy config with defaults in .project-identity');
|
|
2661
|
+
}
|
|
2587
2662
|
}
|
|
2588
2663
|
} catch (_) { /* ignore */ }
|
|
2589
2664
|
|
|
@@ -3042,7 +3117,7 @@ function credentialsHelp() {
|
|
|
3042
3117
|
log(` ${C.green}awkit credentials remove${C.reset} <key> Remove a credential`);
|
|
3043
3118
|
log(` ${C.green}awkit credentials setup${C.reset} Interactive setup wizard`);
|
|
3044
3119
|
log('');
|
|
3045
|
-
log(` ${C.gray}Known keys: gemini_api_key, lucylab_bearer${C.reset}`);
|
|
3120
|
+
log(` ${C.gray}Known keys: gemini_api_key, openrouter_api_key, lucylab_bearer${C.reset}`);
|
|
3046
3121
|
log(` ${C.gray}Config: ${CREDENTIALS_CONFIG_PATH}${C.reset}`);
|
|
3047
3122
|
log('');
|
|
3048
3123
|
}
|
|
@@ -3089,6 +3164,20 @@ async function credentialsSetup() {
|
|
|
3089
3164
|
dim('Kept existing LucyLab Bearer');
|
|
3090
3165
|
}
|
|
3091
3166
|
|
|
3167
|
+
log('');
|
|
3168
|
+
|
|
3169
|
+
// OpenRouter API Key
|
|
3170
|
+
log(`${C.gray} OpenRouter API Key for Premium Image Generation (GPT-5.4)${C.reset}`);
|
|
3171
|
+
log(`${C.gray} Get your key at: https://openrouter.ai/keys${C.reset}`);
|
|
3172
|
+
const openrouterKey = sanitize(await question(` ${C.yellow}OpenRouter API Key${config.openrouter_api_key ? ` [${config.openrouter_api_key.slice(0, 8)}...]` : ''}: ${C.reset}`));
|
|
3173
|
+
if (openrouterKey) {
|
|
3174
|
+
config.openrouter_api_key = openrouterKey;
|
|
3175
|
+
ok('OpenRouter API Key saved');
|
|
3176
|
+
} else if (config.openrouter_api_key) {
|
|
3177
|
+
dim('Kept existing OpenRouter API Key');
|
|
3178
|
+
}
|
|
3179
|
+
|
|
3180
|
+
log('');
|
|
3092
3181
|
credentialsSave(config);
|
|
3093
3182
|
log('');
|
|
3094
3183
|
ok(`Credentials saved to ${CREDENTIALS_CONFIG_PATH}`);
|
|
@@ -3918,6 +4007,15 @@ const [, , command, ...args] = process.argv;
|
|
|
3918
4007
|
case 'creds':
|
|
3919
4008
|
cmdCredentials(args);
|
|
3920
4009
|
break;
|
|
4010
|
+
case 'set-openrouter': {
|
|
4011
|
+
const key = args[0];
|
|
4012
|
+
if (!key) {
|
|
4013
|
+
err('Usage: awkit set-openrouter <api_key>');
|
|
4014
|
+
return;
|
|
4015
|
+
}
|
|
4016
|
+
cmdCredentials(['set', 'openrouter_api_key', key]);
|
|
4017
|
+
break;
|
|
4018
|
+
}
|
|
3921
4019
|
case 'serve':
|
|
3922
4020
|
cmdServe(args);
|
|
3923
4021
|
break;
|
|
@@ -3928,13 +4026,18 @@ const [, , command, ...args] = process.argv;
|
|
|
3928
4026
|
case 'gate':
|
|
3929
4027
|
cmdGate(args);
|
|
3930
4028
|
break;
|
|
3931
|
-
case 'obsidian':
|
|
3932
4029
|
case 'obs':
|
|
3933
4030
|
cmdObsidian(args);
|
|
3934
4031
|
break;
|
|
4032
|
+
case 'quota':
|
|
4033
|
+
cmdQuota(args);
|
|
4034
|
+
break;
|
|
3935
4035
|
case 'admin':
|
|
3936
4036
|
cmdAdmin();
|
|
3937
4037
|
break;
|
|
4038
|
+
case 'video':
|
|
4039
|
+
await cmdVideo(args);
|
|
4040
|
+
break;
|
|
3938
4041
|
case 'restart':
|
|
3939
4042
|
await cmdRestart();
|
|
3940
4043
|
break;
|
package/package.json
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@leejungkiin/awkit",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.8",
|
|
4
4
|
"description": "Antigravity Workflow Kit v1.6 Unified AI agent orchestration system with Mindful Checkpoints.",
|
|
5
5
|
"main": "bin/awk.js",
|
|
6
|
+
"private": false,
|
|
6
7
|
"bin": {
|
|
7
8
|
"awkit": "bin/awk.js",
|
|
8
9
|
"ag": "bin/awk.js"
|
|
@@ -38,7 +39,8 @@
|
|
|
38
39
|
"CHANGELOG.md"
|
|
39
40
|
],
|
|
40
41
|
"dependencies": {
|
|
41
|
-
"@
|
|
42
|
-
"@
|
|
42
|
+
"@duytransipher/gitnexus": "latest",
|
|
43
|
+
"@google/genai": "^1.50.1",
|
|
44
|
+
"@leejungkiin/awkit-symphony": "^0.1.0"
|
|
43
45
|
}
|
|
44
46
|
}
|