@devflow-tools/cli 0.8.7 → 0.8.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.
@@ -1,4 +1,5 @@
1
1
  export declare function showMemory(skipServer?: boolean): Promise<unknown>;
2
2
  export declare function setMemory(key: string, value: string, skipServer?: boolean): Promise<void>;
3
3
  export declare function reviewCandidates(skipServer?: boolean): Promise<unknown>;
4
+ export declare function reviewMemories(): Promise<void>;
4
5
  //# sourceMappingURL=memory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/commands/memory.ts"],"names":[],"mappings":"AAGA,wBAAsB,UAAU,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAUvE;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAU/F;AAED,wBAAsB,gBAAgB,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAU7E"}
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/commands/memory.ts"],"names":[],"mappings":"AAIA,wBAAsB,UAAU,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAUvE;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAU/F;AAED,wBAAsB,gBAAgB,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAU7E;AAYD,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAuDpD"}
@@ -1,5 +1,6 @@
1
1
  import { withServer } from "../lib/with-server.js";
2
2
  import { createEngines } from "@devflow-tools/context-engine";
3
+ import readline from "node:readline";
3
4
  export async function showMemory(skipServer) {
4
5
  return withServer(process.cwd(), (client) => client.getMemory(), async () => {
5
6
  const { memory } = await createEngines(process.cwd());
@@ -18,4 +19,54 @@ export async function reviewCandidates(skipServer) {
18
19
  return memory.getCandidates();
19
20
  }, { skipServer });
20
21
  }
22
+ function promptUser(question) {
23
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
24
+ return new Promise(resolve => {
25
+ rl.question(question, (answer) => {
26
+ rl.close();
27
+ resolve(answer.trim().toLowerCase());
28
+ });
29
+ });
30
+ }
31
+ export async function reviewMemories() {
32
+ const result = await withServer(process.cwd(), async (client) => {
33
+ const data = await client.getMemory();
34
+ return data.memories?.filter((m) => m.status === 'pending') ?? [];
35
+ }, async () => {
36
+ const { memory } = await createEngines(process.cwd());
37
+ return memory.getPendingMemories();
38
+ }, { skipServer: false });
39
+ const pending = result;
40
+ if (pending.length === 0) {
41
+ console.log('No pending memories to review.');
42
+ return;
43
+ }
44
+ const sorted = [...pending].sort((a, b) => {
45
+ if (a.category === 'failure_lesson' && b.category !== 'failure_lesson')
46
+ return -1;
47
+ if (b.category === 'failure_lesson' && a.category !== 'failure_lesson')
48
+ return 1;
49
+ return 0;
50
+ });
51
+ let reviewed = 0;
52
+ for (const mem of sorted) {
53
+ console.log(`\n[${mem.category}] (confidence: ${(mem.confidence * 100).toFixed(0)}%)`);
54
+ console.log(` ${mem.content}`);
55
+ const answer = await promptUser(' Approve? [y]es / [n]o / [s]kip: ');
56
+ if (answer === 'y') {
57
+ await withServer(process.cwd(), async (client) => { await client.approveMemory(mem.id); }, async () => { }, { skipServer: false });
58
+ console.log(' Approved');
59
+ reviewed++;
60
+ }
61
+ else if (answer === 'n') {
62
+ await withServer(process.cwd(), async (client) => { await client.rejectMemory(mem.id); }, async () => { }, { skipServer: false });
63
+ console.log(' Rejected');
64
+ reviewed++;
65
+ }
66
+ else {
67
+ console.log(' -> Skipped');
68
+ }
69
+ }
70
+ console.log(`\nReviewed ${reviewed}/${pending.length} pending memories.`);
71
+ }
21
72
  //# sourceMappingURL=memory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/commands/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA0B,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAE9D,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,UAAoB;IACnD,OAAO,UAAU,CACf,OAAO,CAAC,GAAG,EAAE,EACb,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,EAC9B,KAAK,IAAI,EAAE;QACT,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACtD,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC;IACzB,CAAC,EACD,EAAE,UAAU,EAAE,CACf,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAW,EAAE,KAAa,EAAE,UAAoB;IAC9E,OAAO,UAAU,CACf,OAAO,CAAC,GAAG,EAAE,EACb,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EACpE,KAAK,IAAI,EAAE;QACT,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACtD,MAAM,MAAM,CAAC,oBAAoB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC,EACD,EAAE,UAAU,EAAE,CACf,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,UAAoB;IACzD,OAAO,UAAU,CACf,OAAO,CAAC,GAAG,EAAE,EACb,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,gBAAgB,EAAE,EACrC,KAAK,IAAI,EAAE;QACT,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACtD,OAAO,MAAM,CAAC,aAAa,EAAE,CAAC;IAChC,CAAC,EACD,EAAE,UAAU,EAAE,CACf,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/commands/memory.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,44 @@
1
1
  #!/usr/bin/env bash
2
2
  set -euo pipefail
3
3
 
4
- # PostToolUse Hook — DevFlow post-correction
5
- # After AI uses a native tool that could have been an MCP tool, inject a corrective reminder.
6
-
7
4
  INPUT_JSON=$(cat)
5
+
6
+ # ── Event Recording (best-effort, never blocks hook) ──
7
+ PROJECT_ROOT="${CLAUDE_PROJECT_DIR:-$(pwd)}"
8
+
9
+ python3 -c "
10
+ import json, sys, urllib.request, time
11
+
12
+ try:
13
+ data = json.loads(sys.argv[1])
14
+ except:
15
+ sys.exit(0)
16
+
17
+ tool_name = data.get('tool_name', '')
18
+ session_id = data.get('session_id', '')
19
+ tool_input = data.get('tool_input', {})
20
+
21
+ evt = {
22
+ 'id': 'evt_{}_{}'.format(int(time.time()), __import__('random').randint(1000, 9999)),
23
+ 'sessionId': session_id,
24
+ 'tool': tool_name,
25
+ 'command': tool_input.get('command', '') if isinstance(tool_input, dict) else '',
26
+ 'createdAt': int(time.time() * 1000),
27
+ }
28
+
29
+ try:
30
+ req = urllib.request.Request(
31
+ 'http://localhost:13337/api/memory/events?rootPath=' + sys.argv[2],
32
+ data=json.dumps(evt).encode(),
33
+ headers={'Content-Type': 'application/json', 'X-API-Key': 'dev-key-000000'},
34
+ method='POST',
35
+ )
36
+ urllib.request.urlopen(req, timeout=3)
37
+ except:
38
+ pass
39
+ " "$INPUT_JSON" "$PROJECT_ROOT" 2>/dev/null || true
40
+
41
+ # ── Original Enforcement Logic ──
8
42
  TOOL_NAME=$(python3 -c "
9
43
  import sys, json
10
44
  try:
@@ -14,7 +48,6 @@ except:
14
48
  print('')
15
49
  " <<< "$INPUT_JSON" 2>/dev/null || echo "")
16
50
 
17
- # Only interested in tools that could bypass MCP
18
51
  case "$TOOL_NAME" in
19
52
  Agent|Bash|Glob|Grep|WebSearch|WebFetch)
20
53
  ;;
@@ -23,14 +56,11 @@ case "$TOOL_NAME" in
23
56
  ;;
24
57
  esac
25
58
 
26
- # Determine project root and receipt file
27
- PROJECT_ROOT="${CLAUDE_PROJECT_DIR:-$(pwd)}"
28
59
  RECEIPT_DIR="${TMPDIR:-/tmp}/.devflow-receipts"
29
60
  mkdir -p "$RECEIPT_DIR"
30
61
  SESSION_ID=$(echo -n "$PROJECT_ROOT" | shasum -a 256 2>/dev/null | cut -c1-16 || echo "default")
31
62
  RECEIPT_FILE="$RECEIPT_DIR/${SESSION_ID}.json"
32
63
 
33
- # Check if there was a recent MCP call (within 30s) — if yes, this native tool call is supplementary, not a bypass
34
64
  HAS_RECENT_MCP=false
35
65
  if [ -f "$RECEIPT_FILE" ]; then
36
66
  last_call=$(python3 -c "
@@ -50,7 +80,6 @@ except:
50
80
  fi
51
81
  fi
52
82
 
53
- # Read current bypass count
54
83
  BYPASS_COUNT=0
55
84
  if [ -f "$RECEIPT_FILE" ]; then
56
85
  BYPASS_COUNT=$(python3 -c "
@@ -61,12 +90,10 @@ print(d.get('bypassCount', 0))
61
90
  " 2>/dev/null || echo "0")
62
91
  fi
63
92
 
64
- # If no bypasses yet, nothing to correct
65
93
  if [ "$BYPASS_COUNT" -eq 0 ]; then
66
94
  exit 0
67
95
  fi
68
96
 
69
- # Build corrective message based on tool type and count
70
97
  case "$TOOL_NAME" in
71
98
  Agent)
72
99
  MESSAGE="第 ${BYPASS_COUNT} 次违规:你刚才使用了 Agent 子代理执行搜索。下次请用 get_project_context MCP 工具替代。"
@@ -88,7 +115,6 @@ case "$TOOL_NAME" in
88
115
  ;;
89
116
  esac
90
117
 
91
- # Add enforcement status
92
118
  if [ "$BYPASS_COUNT" -ge 3 ]; then
93
119
  MESSAGE="${MESSAGE} 已达到最大违规次数,后续绕过将被硬阻止。"
94
120
  elif [ "$BYPASS_COUNT" -ge 2 ]; then
@@ -97,7 +123,6 @@ else
97
123
  MESSAGE="${MESSAGE} 请立即纠正。"
98
124
  fi
99
125
 
100
- # Output as additionalContext injection
101
126
  if [ -n "${CLAUDE_PLUGIN_ROOT:-}" ]; then
102
127
  ESCAPED=$(printf '%s' "$MESSAGE" | python3 -c "import sys,json; print(json.dumps(sys.stdin.read()))")
103
128
  printf '{"hookSpecificOutput":{"hookEventName":"PostToolUse","additionalContext":"%s"}}\n' "$ESCAPED"
@@ -93,4 +93,22 @@ if [ -n "${CLAUDE_PLUGIN_ROOT:-}" ]; then
93
93
  fi
94
94
  fi
95
95
 
96
+ # ── Trigger memory extraction for previous session events (best-effort, async) ──
97
+ (python3 -c "
98
+ import urllib.request, json, sys
99
+ try:
100
+ req = urllib.request.Request(
101
+ 'http://localhost:13337/api/memory/process?rootPath=${CLAUDE_PROJECT_DIR:-$(pwd)}',
102
+ data=b'{}',
103
+ headers={'Content-Type': 'application/json', 'X-API-Key': 'dev-key-000000'},
104
+ method='POST',
105
+ )
106
+ resp = urllib.request.urlopen(req, timeout=30)
107
+ result = json.loads(resp.read())
108
+ print('DevFlow memory: {} extracted, {} approved, {} pending'.format(
109
+ result.get('extracted', 0), result.get('approved', 0), result.get('pending', 0)), file=sys.stderr)
110
+ except Exception as e:
111
+ print('DevFlow memory extraction skipped: {}'.format(e), file=sys.stderr)
112
+ " 2>/dev/null || true) &
113
+
96
114
  exit 0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devflow-tools/claude-code-plugin",
3
- "version": "0.8.6",
3
+ "version": "0.8.8",
4
4
  "private": true,
5
5
  "description": "DevFlow — Developer Intelligence Platform for Claude Code",
6
6
  "type": "module",
@@ -9,7 +9,7 @@
9
9
  "deploy": "npx tsx scripts/inject-gates.ts --deploy"
10
10
  },
11
11
  "devDependencies": {
12
- "@devflow-tools/mcp-server": "^0.8.6"
12
+ "@devflow-tools/mcp-server": "^0.8.8"
13
13
  },
14
14
  "keywords": [
15
15
  "pi-package",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devflow-tools/cli",
3
- "version": "0.8.7",
3
+ "version": "0.8.8",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "scripts": {
@@ -12,31 +12,31 @@
12
12
  },
13
13
  "dependencies": {
14
14
  "@colbymchenry/codegraph": "^1.1.1",
15
- "@devflow-tools/adapters": "^0.8.6",
16
- "@devflow-tools/benchmark": "^0.8.6",
17
- "@devflow-tools/context-engine": "^0.8.6",
18
- "@devflow-tools/database": "^0.8.6",
19
- "@devflow-tools/knowledge-engine": "^0.8.6",
20
- "@devflow-tools/mcp-server": "^0.8.6",
21
- "@devflow-tools/memory-engine": "^0.8.6",
22
- "@devflow-tools/plugin-animation": "^0.8.6",
23
- "@devflow-tools/plugin-css": "^0.8.6",
24
- "@devflow-tools/plugin-docker": "^0.8.6",
25
- "@devflow-tools/plugin-electron": "^0.8.6",
26
- "@devflow-tools/plugin-git": "^0.8.6",
27
- "@devflow-tools/plugin-graphql": "^0.8.6",
28
- "@devflow-tools/plugin-nest": "^0.8.6",
29
- "@devflow-tools/plugin-nextjs": "^0.8.6",
30
- "@devflow-tools/plugin-performance": "^0.8.6",
31
- "@devflow-tools/plugin-react": "^0.8.6",
32
- "@devflow-tools/plugin-tailwind": "^0.8.6",
33
- "@devflow-tools/plugin-taro": "^0.8.6",
34
- "@devflow-tools/plugin-ui-layout": "^0.8.6",
35
- "@devflow-tools/plugin-vue": "^0.8.6",
36
- "@devflow-tools/sdk": "^0.8.6",
37
- "@devflow-tools/server": "^0.8.7",
38
- "@devflow-tools/telemetry": "^0.8.6",
39
- "@devflow-tools/workflow-engine": "^0.8.6",
15
+ "@devflow-tools/adapters": "^0.8.8",
16
+ "@devflow-tools/benchmark": "^0.8.8",
17
+ "@devflow-tools/context-engine": "^0.8.8",
18
+ "@devflow-tools/database": "^0.8.8",
19
+ "@devflow-tools/knowledge-engine": "^0.8.8",
20
+ "@devflow-tools/mcp-server": "^0.8.8",
21
+ "@devflow-tools/memory-engine": "^0.8.8",
22
+ "@devflow-tools/plugin-animation": "^0.8.8",
23
+ "@devflow-tools/plugin-css": "^0.8.8",
24
+ "@devflow-tools/plugin-docker": "^0.8.8",
25
+ "@devflow-tools/plugin-electron": "^0.8.8",
26
+ "@devflow-tools/plugin-git": "^0.8.8",
27
+ "@devflow-tools/plugin-graphql": "^0.8.8",
28
+ "@devflow-tools/plugin-nest": "^0.8.8",
29
+ "@devflow-tools/plugin-nextjs": "^0.8.8",
30
+ "@devflow-tools/plugin-performance": "^0.8.8",
31
+ "@devflow-tools/plugin-react": "^0.8.8",
32
+ "@devflow-tools/plugin-tailwind": "^0.8.8",
33
+ "@devflow-tools/plugin-taro": "^0.8.8",
34
+ "@devflow-tools/plugin-ui-layout": "^0.8.8",
35
+ "@devflow-tools/plugin-vue": "^0.8.8",
36
+ "@devflow-tools/sdk": "^0.8.8",
37
+ "@devflow-tools/server": "^0.8.8",
38
+ "@devflow-tools/telemetry": "^0.8.8",
39
+ "@devflow-tools/workflow-engine": "^0.8.8",
40
40
  "@inquirer/prompts": "^7.10.1",
41
41
  "chalk": "^5.3.0",
42
42
  "commander": "^12.0.0"