therookie 0.4.14 → 0.4.15

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "therookie",
3
- "version": "0.4.14",
3
+ "version": "0.4.15",
4
4
  "description": "the Rookie — the AI new hire that remembers what you teach it. A CLI that connects a personal AI memory to AI tools like Claude and Codex.",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -185,10 +185,14 @@ try {
185
185
  cur={
186
186
  episode_seq: seq++,
187
187
  episode_start_byte_offset: lineOff,
188
- parser_version: 2,
188
+ parser_version: 3,
189
189
  is_human_prompt: true,
190
190
  recall_signal: sig, recall_called: false, verified_solution_served: false,
191
191
  external_search: false, amnesia_next_prompt: false, correction_next_prompt: false,
192
+ // spec 2026-08-06 A.5b — external_search 는 이제 **웹 도구만** 센다.
193
+ // external_search_after_recall: 회상 이후의 외부검색만(순서 있는 신호).
194
+ // bash_http_seen: 느슨한 Bash HTTP 관측 — 진단 전용, headline 금지.
195
+ external_search_after_recall: false, bash_http_seen: false,
192
196
  first_action_after_recall: null, failure_classes: [],
193
197
  _boundary: firstBoundaryAfter(lineOff),
194
198
  _recallSeen: false,
@@ -214,12 +218,21 @@ try {
214
218
  let action="other";
215
219
  if(/recall/i.test(name) || /api\/rookie\/recall/.test(cmd)) action="recall";
216
220
  else if(/^(WebSearch|WebFetch)$/.test(name)) action="external_search";
217
- // 외부 Bash HTTP(curl/wget 로 밖에서 답 찾기)도 외부검색 — recall/내부 API·로컬 dev 는 제외(codex P1·P2).
218
- else if(name==="Bash" && /\b(curl|wget)\b/.test(cmd) && /https?:\/\//.test(cmd) && !/api\/rookie/.test(cmd) && !/(localhost|127\.0\.0\.1|0\.0\.0\.0)/.test(cmd)) action="external_search";
219
221
  else if(/^(Edit|Write|NotebookEdit)$/.test(name)) action="edit";
220
222
  else if(name==="AskUserQuestion") action="ask";
223
+ // spec 2026-08-06 A.5b B-1 — Bash 는 외부검색으로 세지 않는다. 명령문 전체에서 curl|wget 을
224
+ // 찾던 옛 판정이 heredoc 본문·경로에 그 단어가 든 **로컬 스크립트**까지 외부검색으로 셌다
225
+ // (§7 원문 대조: 강 3건 중 2건이 이 오탐). 정확히 세려면 셸 문법을 다시 구현해야 해서 철회했다.
226
+ // 느슨한 관측은 버리지 않고 **진단 전용 신호로 격리**한다.
227
+ const bashHttp = name==="Bash" && /\b(curl|wget)\b/.test(cmd) && /https?:\/\//.test(cmd)
228
+ && !/api\/rookie/.test(cmd) && !/(localhost|127\.0\.0\.1|0\.0\.0\.0)/.test(cmd)
229
+ if(bashHttp) cur.bash_http_seen=true;
221
230
  if(action==="recall"){ cur.recall_called=true; cur._recallSeen=true; }
222
- if(action==="external_search"){ cur.external_search=true; }
231
+ if(action==="external_search"){
232
+ cur.external_search=true;
233
+ // B-2 — 첫 행동 기록 여부와 **무관하게** 누적한다(회상 이후의 모든 외부검색).
234
+ if(cur._recallSeen) cur.external_search_after_recall=true;
235
+ }
223
236
  // recall 이후의 첫 실질 행동을 1회만 기록.
224
237
  if(cur._recallSeen && action!=="recall" && cur.first_action_after_recall===null){
225
238
  cur.first_action_after_recall=action;
@@ -259,7 +272,7 @@ try {
259
272
  // 앞으로 밀려(불안정) 무엇이 왜 빠졌는지 사후 확인이 불가능해진다.
260
273
  let activatedAt=null;
261
274
  try{
262
- const ap=path.join(bndDir,".v2-activated");
275
+ const ap=path.join(bndDir,".v3-activated");
263
276
  const readAct=()=>{ try{ const v=JSON.parse(fs.readFileSync(ap,"utf8")).activated_at; return typeof v==="string"?v:null; }catch{ return null; } };
264
277
  activatedAt=readAct();
265
278
  if(!activatedAt){
package/version.json CHANGED
@@ -1,4 +1,4 @@
1
1
  {
2
- "cli_version": "0.4.14",
2
+ "cli_version": "0.4.15",
3
3
  "skill_version": "1.35.0"
4
4
  }