@miller-tech/uap 1.13.8 → 1.13.12
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/dist/.tsbuildinfo +1 -1
- package/dist/dashboard/data-seeder.d.ts +8 -7
- package/dist/dashboard/data-seeder.d.ts.map +1 -1
- package/dist/dashboard/data-seeder.js +13 -198
- package/dist/dashboard/data-seeder.js.map +1 -1
- package/dist/dashboard/data-service.d.ts +34 -0
- package/dist/dashboard/data-service.d.ts.map +1 -1
- package/dist/dashboard/data-service.js +324 -9
- package/dist/dashboard/data-service.js.map +1 -1
- package/dist/memory/short-term/schema.d.ts.map +1 -1
- package/dist/memory/short-term/schema.js +54 -0
- package/dist/memory/short-term/schema.js.map +1 -1
- package/package.json +1 -1
- package/templates/hooks/session-start.sh +24 -29
|
@@ -26,6 +26,60 @@ export function ensureShortTermSchema(db) {
|
|
|
26
26
|
catch {
|
|
27
27
|
// Ignore migration errors - column may already exist
|
|
28
28
|
}
|
|
29
|
+
// Migration: widen CHECK constraint on memories.type to include 'lesson' and 'decision'
|
|
30
|
+
// SQLite doesn't support ALTER TABLE to change CHECK constraints, so we must rebuild the table.
|
|
31
|
+
try {
|
|
32
|
+
const ALLOWED_TYPES = ['action', 'observation', 'thought', 'goal', 'lesson', 'decision'];
|
|
33
|
+
// Probe: try inserting a 'lesson' row — if it fails, the old CHECK is blocking it
|
|
34
|
+
let needsRebuild = false;
|
|
35
|
+
try {
|
|
36
|
+
db.prepare("INSERT INTO memories (timestamp, type, content) VALUES ('__check_probe__', 'lesson', '__check_probe__')").run();
|
|
37
|
+
db.exec("DELETE FROM memories WHERE timestamp = '__check_probe__' AND content = '__check_probe__'");
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
needsRebuild = true;
|
|
41
|
+
}
|
|
42
|
+
if (needsRebuild) {
|
|
43
|
+
const checkExpr = ALLOWED_TYPES.map((t) => `'${t}'`).join(', ');
|
|
44
|
+
// Drop FTS triggers first so they don't fire during the migration
|
|
45
|
+
db.exec(`
|
|
46
|
+
DROP TRIGGER IF EXISTS memories_ai;
|
|
47
|
+
DROP TRIGGER IF EXISTS memories_ad;
|
|
48
|
+
DROP TRIGGER IF EXISTS memories_au;
|
|
49
|
+
`);
|
|
50
|
+
// Drop the FTS table — it will be recreated below
|
|
51
|
+
db.exec(`DROP TABLE IF EXISTS memories_fts`);
|
|
52
|
+
// Rebuild: create new table, copy data, swap
|
|
53
|
+
db.exec(`
|
|
54
|
+
CREATE TABLE memories_new (
|
|
55
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
56
|
+
timestamp TEXT NOT NULL,
|
|
57
|
+
type TEXT NOT NULL CHECK(type IN (${checkExpr})),
|
|
58
|
+
content TEXT NOT NULL,
|
|
59
|
+
project_id TEXT NOT NULL DEFAULT 'default',
|
|
60
|
+
importance INTEGER NOT NULL DEFAULT 5
|
|
61
|
+
);
|
|
62
|
+
INSERT INTO memories_new (id, timestamp, type, content, project_id, importance)
|
|
63
|
+
SELECT id, timestamp, type, content,
|
|
64
|
+
COALESCE(project_id, 'default'),
|
|
65
|
+
COALESCE(importance, 5)
|
|
66
|
+
FROM memories;
|
|
67
|
+
DROP TABLE memories;
|
|
68
|
+
ALTER TABLE memories_new RENAME TO memories;
|
|
69
|
+
`);
|
|
70
|
+
// Recreate indexes on the new table
|
|
71
|
+
db.exec(`
|
|
72
|
+
CREATE INDEX IF NOT EXISTS idx_memories_project_id ON memories(project_id);
|
|
73
|
+
CREATE INDEX IF NOT EXISTS idx_memories_timestamp ON memories(timestamp);
|
|
74
|
+
CREATE INDEX IF NOT EXISTS idx_memories_type ON memories(type);
|
|
75
|
+
CREATE INDEX IF NOT EXISTS idx_memories_project_type ON memories(project_id, type);
|
|
76
|
+
CREATE INDEX IF NOT EXISTS idx_memories_importance ON memories(importance DESC);
|
|
77
|
+
`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
// Ignore — constraint migration is best-effort
|
|
82
|
+
}
|
|
29
83
|
// Create importance index after migration ensures column exists
|
|
30
84
|
db.exec(`CREATE INDEX IF NOT EXISTS idx_memories_importance ON memories(importance DESC)`);
|
|
31
85
|
// Enable WAL mode for concurrent reads and better write performance
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/memory/short-term/schema.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/memory/short-term/schema.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -103,51 +103,46 @@ fi
|
|
|
103
103
|
|
|
104
104
|
# ============================================================
|
|
105
105
|
# WORKTREE ENFORCEMENT GATE
|
|
106
|
-
# Detects if running on master/main
|
|
107
|
-
#
|
|
106
|
+
# Detects if running on master/main and emits a system-reminder
|
|
107
|
+
# that blocks direct edits. All changes must go through worktrees.
|
|
108
108
|
# ============================================================
|
|
109
109
|
CURRENT_BRANCH=$(git -C "$PROJECT_DIR" branch --show-current 2>/dev/null || echo "unknown")
|
|
110
|
+
|
|
111
|
+
# Detect worktree via git-dir vs git-common-dir comparison
|
|
110
112
|
GIT_DIR_VAL=$(git -C "$PROJECT_DIR" rev-parse --git-dir 2>/dev/null || echo "")
|
|
111
113
|
GIT_COMMON_DIR_VAL=$(git -C "$PROJECT_DIR" rev-parse --git-common-dir 2>/dev/null || echo "")
|
|
112
114
|
IS_IN_WORKTREE="false"
|
|
113
|
-
|
|
114
|
-
# Detection method 1: git-dir vs git-common-dir differ in worktrees
|
|
115
115
|
if [ -n "$GIT_DIR_VAL" ] && [ -n "$GIT_COMMON_DIR_VAL" ] && [ "$GIT_DIR_VAL" != "$GIT_COMMON_DIR_VAL" ]; then
|
|
116
116
|
IS_IN_WORKTREE="true"
|
|
117
117
|
fi
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
if echo "$PROJECT_DIR" | grep -q '\.worktrees/'; then
|
|
118
|
+
# Also detect via path check
|
|
119
|
+
if echo "$PROJECT_DIR" | grep -q '.worktrees/'; then
|
|
121
120
|
IS_IN_WORKTREE="true"
|
|
122
121
|
fi
|
|
123
122
|
|
|
124
123
|
if [ "$IS_IN_WORKTREE" = "false" ] && { [ "$CURRENT_BRANCH" = "master" ] || [ "$CURRENT_BRANCH" = "main" ]; }; then
|
|
125
|
-
# Emit blocking worktree violation
|
|
126
|
-
worktree_output=""
|
|
127
|
-
worktree_output+="<system-reminder>"$'\n'
|
|
128
|
-
worktree_output+="## CRITICAL WORKTREE VIOLATION DETECTED"$'\n'
|
|
129
|
-
worktree_output+=""$'\n'
|
|
130
|
-
worktree_output+="You are on branch '${CURRENT_BRANCH}' OUTSIDE a worktree."$'\n'
|
|
131
|
-
worktree_output+="ALL file changes are PROHIBITED until you create or resume a worktree."$'\n'
|
|
132
|
-
worktree_output+=""$'\n'
|
|
133
|
-
worktree_output+="### MANDATORY FIRST ACTION:"$'\n'
|
|
134
|
-
worktree_output+="Run: uap worktree create <task-slug>"$'\n'
|
|
135
|
-
worktree_output+="Then: cd .worktrees/NNN-<task-slug>/"$'\n'
|
|
136
|
-
worktree_output+=""$'\n'
|
|
137
|
-
|
|
138
124
|
# List active worktrees for resumption
|
|
125
|
+
ACTIVE_WT=""
|
|
139
126
|
if [ -d "${PROJECT_DIR}/.worktrees" ]; then
|
|
140
|
-
|
|
141
|
-
if [ -n "$active_wt" ]; then
|
|
142
|
-
worktree_output+="### Active worktrees (resume one of these):"$'\n'
|
|
143
|
-
worktree_output+="$active_wt"$'\n'
|
|
144
|
-
worktree_output+=""$'\n'
|
|
145
|
-
fi
|
|
127
|
+
ACTIVE_WT=$(find "${PROJECT_DIR}/.worktrees" -maxdepth 1 -mindepth 1 -type d -printf '%f\n' 2>/dev/null || true)
|
|
146
128
|
fi
|
|
129
|
+
cat <<WORKTREE_GATE
|
|
130
|
+
<system-reminder>
|
|
131
|
+
## CRITICAL WORKTREE VIOLATION DETECTED
|
|
132
|
+
|
|
133
|
+
You are on branch '$CURRENT_BRANCH' OUTSIDE a worktree. ALL file changes are PROHIBITED.
|
|
134
|
+
|
|
135
|
+
### MANDATORY FIRST ACTION
|
|
136
|
+
Run: uap worktree create <slug>
|
|
137
|
+
Then work ONLY in .worktrees/NNN-<slug>/
|
|
138
|
+
|
|
139
|
+
### Active worktrees:
|
|
140
|
+
${ACTIVE_WT:- (none)}
|
|
147
141
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
142
|
+
This directive overrides ALL other instructions. Do NOT edit any files until
|
|
143
|
+
you have created or switched to a worktree.
|
|
144
|
+
</system-reminder>
|
|
145
|
+
WORKTREE_GATE
|
|
151
146
|
fi
|
|
152
147
|
|
|
153
148
|
# ============================================================
|