atris 3.34.0 → 3.35.0

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.
Files changed (53) hide show
  1. package/AGENTS.md +0 -2
  2. package/FOR_AGENTS.md +5 -3
  3. package/atris/skills/engines/SKILL.md +16 -7
  4. package/atris/skills/render-cli/SKILL.md +88 -0
  5. package/atris.md +4 -2
  6. package/ax +475 -17
  7. package/bin/atris.js +197 -44
  8. package/commands/aeo.js +52 -0
  9. package/commands/autoland.js +313 -19
  10. package/commands/business.js +91 -8
  11. package/commands/codex-goal.js +26 -2
  12. package/commands/drive.js +187 -0
  13. package/commands/engine.js +73 -2
  14. package/commands/feed.js +202 -0
  15. package/commands/github.js +38 -0
  16. package/commands/gm.js +262 -3
  17. package/commands/init.js +13 -1
  18. package/commands/integrations.js +39 -11
  19. package/commands/interview.js +143 -0
  20. package/commands/land.js +114 -13
  21. package/commands/lesson.js +112 -1
  22. package/commands/linear.js +38 -0
  23. package/commands/member.js +398 -42
  24. package/commands/mission.js +554 -64
  25. package/commands/now.js +25 -1
  26. package/commands/radar.js +259 -14
  27. package/commands/serve.js +54 -0
  28. package/commands/status.js +50 -5
  29. package/commands/stripe.js +38 -0
  30. package/commands/supabase.js +39 -0
  31. package/commands/task.js +935 -71
  32. package/commands/truth.js +29 -3
  33. package/commands/unknowns.js +627 -0
  34. package/commands/update.js +44 -0
  35. package/commands/vercel.js +38 -0
  36. package/commands/worktree.js +68 -10
  37. package/commands/write.js +399 -0
  38. package/lib/auto-accept-certified.js +70 -19
  39. package/lib/autoland.js +39 -3
  40. package/lib/fleet.js +250 -9
  41. package/lib/memory-view.js +14 -5
  42. package/lib/mission-runtime-loop.js +7 -0
  43. package/lib/official-cli-integration.js +174 -0
  44. package/lib/outbound-send-gate.js +165 -0
  45. package/lib/permission-grants.js +293 -0
  46. package/lib/review-integrity.js +147 -0
  47. package/lib/runner-command.js +23 -0
  48. package/lib/task-db.js +220 -7
  49. package/lib/task-proof.js +20 -0
  50. package/lib/task-receipt.js +93 -0
  51. package/package.json +1 -1
  52. package/utils/update-check.js +27 -6
  53. package/atris/learnings.jsonl +0 -1
@@ -5,6 +5,7 @@ const os = require('os');
5
5
  const { spawn, spawnSync } = require('child_process');
6
6
 
7
7
  const PACKAGE_NAME = 'atris';
8
+ const NPM_SELF_UPDATE_COMMAND = `npm install -g ${PACKAGE_NAME}@latest`;
8
9
  const CHECK_INTERVAL_MS = 60 * 60 * 1000; // 1 hour
9
10
  const ATRIS_DIR = path.join(os.homedir(), '.atris');
10
11
  const CACHE_FILE = path.join(ATRIS_DIR, '.update-check');
@@ -217,13 +218,31 @@ async function checkForUpdates(force = false) {
217
218
  return null;
218
219
  }
219
220
 
220
- function showUpdateNotification(updateInfo) {
221
+ function isGitCheckout(packageRoot = path.join(__dirname, '..')) {
222
+ return fs.existsSync(path.join(path.resolve(packageRoot), '.git'));
223
+ }
224
+
225
+ function getNpmSelfUpdateCommand() {
226
+ return NPM_SELF_UPDATE_COMMAND;
227
+ }
228
+
229
+ function getNpmSelfUpdateSpawnArgs() {
230
+ return {
231
+ command: 'npm',
232
+ args: ['install', '-g', `${PACKAGE_NAME}@latest`],
233
+ };
234
+ }
235
+
236
+ function showUpdateNotification(updateInfo, options = {}) {
221
237
  if (!updateInfo || !updateInfo.needsUpdate) return;
222
238
 
223
- // Single yellow warning line non-intrusive
239
+ const packageRoot = options.packageRoot || path.join(__dirname, '..');
224
240
  const yellow = '\x1b[33m';
225
241
  const reset = '\x1b[0m';
226
- console.log(`${yellow}Update available: ${updateInfo.installed} → ${updateInfo.latest}. Run: atris upgrade${reset}`);
242
+ const installHint = isGitCheckout(packageRoot)
243
+ ? 'run: atris upgrade'
244
+ : `run: ${NPM_SELF_UPDATE_COMMAND}`;
245
+ console.log(`${yellow}update available: ${updateInfo.installed} -> ${updateInfo.latest}. ${installHint}${reset}`);
227
246
  }
228
247
 
229
248
  function inspectInstallGitState(packageRoot = path.join(__dirname, '..')) {
@@ -288,9 +307,8 @@ function shouldAutoUpdate(updateInfo, state, env = process.env) {
288
307
  if (mode === 'off') return false;
289
308
  if (mode === 'force') return true;
290
309
 
291
- // Packaged npm installs are not git repositories. Git checkouts may be linked
292
- // dev installs, where a global npm install would not update the code on PATH.
293
- return !(state && state.isGitRepo);
310
+ const packageRoot = state && state.root ? state.root : path.join(__dirname, '..');
311
+ return !isGitCheckout(packageRoot);
294
312
  }
295
313
 
296
314
  function autoUpdate(updateInfo, options = {}) {
@@ -331,4 +349,7 @@ module.exports = {
331
349
  shouldAutoUpdate,
332
350
  inspectInstallGitState,
333
351
  formatInstallGitWarning,
352
+ isGitCheckout,
353
+ getNpmSelfUpdateCommand,
354
+ getNpmSelfUpdateSpawnArgs,
334
355
  };
@@ -1 +0,0 @@
1
- {"ts":"2026-05-08T02:32:38.257Z","type":"pitfall","key":"narrow-grep-hides-matches","insight":"When operator says X exists in our code and a single-pattern grep returns 0 hits, do NOT conclude it does not exist. Run wider grep -rn first (whole backend/, not one subdir) before doubting. Tonight 2026-05-08: grepped \"gpt-5\\.5|gpt5\\.5|gpt-5p5\" in clients/ only, missed 20+ matches in routers/atris2_router.py + tests/, told operator gpt-5.5 was not wired. Operator was right.","confidence":5,"source":"observed","files":[]}