atris 3.15.13 → 3.15.22

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 (93) hide show
  1. package/AGENTS.md +84 -8
  2. package/README.md +5 -1
  3. package/atris/AGENTS.md +46 -1
  4. package/atris/CLAUDE.md +36 -1
  5. package/atris/GEMINI.md +14 -1
  6. package/atris/atris.md +12 -1
  7. package/atris/atrisDev.md +3 -2
  8. package/atris/context/README.md +11 -0
  9. package/atris/features/company-brain-sync/validate.md +5 -5
  10. package/atris/learnings.jsonl +1 -0
  11. package/atris/policies/atris-design.md +2 -0
  12. package/atris/skills/aeo/SKILL.md +2 -2
  13. package/atris/skills/atris/SKILL.md +15 -62
  14. package/atris/skills/design/SKILL.md +2 -0
  15. package/atris/skills/imessage/SKILL.md +19 -2
  16. package/atris/skills/loop/SKILL.md +6 -5
  17. package/atris/skills/magic-inbox/SKILL.md +1 -1
  18. package/atris/team/_template/MEMBER.md +23 -1
  19. package/atris/team/brainstormer/START_HERE.md +6 -0
  20. package/atris/team/executor/MEMBER.md +13 -0
  21. package/atris/team/executor/START_HERE.md +6 -0
  22. package/atris/team/launcher/START_HERE.md +6 -0
  23. package/atris/team/mission-lead/MEMBER.md +39 -0
  24. package/atris/team/mission-lead/MISSION.md +33 -0
  25. package/atris/team/mission-lead/START_HERE.md +6 -0
  26. package/atris/team/navigator/MEMBER.md +11 -0
  27. package/atris/team/navigator/START_HERE.md +6 -0
  28. package/atris/team/opus-overnight/MEMBER.md +39 -0
  29. package/atris/team/opus-overnight/MISSION.md +61 -0
  30. package/atris/team/opus-overnight/START_HERE.md +6 -0
  31. package/atris/team/opus-overnight/STEERING.md +35 -0
  32. package/atris/team/researcher/START_HERE.md +6 -0
  33. package/atris/team/validator/MEMBER.md +26 -6
  34. package/atris/team/validator/START_HERE.md +6 -0
  35. package/atris/wiki/concepts/agent-activation-contract.md +79 -0
  36. package/atris/wiki/concepts/workspace-initialization-contract.md +73 -0
  37. package/atris/wiki/index.md +27 -0
  38. package/atris/wiki/sources/atris-labs-2026-05-10.txt +17 -0
  39. package/atris/wiki/sources/atris-labs-goals-2026-05-10.txt +15 -0
  40. package/atris/wiki/sources/atrisos-generative-ui-product-surface-2026-05-10.txt +10 -0
  41. package/atris/wiki/sources/jack-dorsey-2026-05-10.txt +12 -0
  42. package/atris.md +49 -13
  43. package/bin/atris.js +660 -22
  44. package/commands/activate.js +12 -3
  45. package/commands/aeo.js +1 -1
  46. package/commands/align.js +10 -10
  47. package/commands/analytics.js +9 -4
  48. package/commands/app.js +2 -0
  49. package/commands/apps.js +276 -0
  50. package/commands/auth.js +1 -1
  51. package/commands/autopilot.js +74 -5
  52. package/commands/brain.js +536 -61
  53. package/commands/brainstorm.js +12 -12
  54. package/commands/business-sync.js +142 -24
  55. package/commands/clean.js +9 -6
  56. package/commands/codex-goal.js +311 -0
  57. package/commands/errors.js +11 -1
  58. package/commands/feedback.js +55 -17
  59. package/commands/fork.js +2 -2
  60. package/commands/gm.js +376 -0
  61. package/commands/init.js +80 -3
  62. package/commands/integrations.js +524 -0
  63. package/commands/learn.js +25 -16
  64. package/commands/lesson.js +41 -0
  65. package/commands/lifecycle.js +2 -2
  66. package/commands/member.js +2416 -9
  67. package/commands/mission.js +1776 -0
  68. package/commands/now.js +48 -7
  69. package/commands/play.js +425 -0
  70. package/commands/publish.js +2 -1
  71. package/commands/pull.js +72 -29
  72. package/commands/push.js +199 -17
  73. package/commands/review.js +51 -13
  74. package/commands/skill.js +2 -2
  75. package/commands/soul.js +19 -13
  76. package/commands/status.js +6 -1
  77. package/commands/sync.js +5 -4
  78. package/commands/task.js +1041 -147
  79. package/commands/terminal.js +5 -5
  80. package/commands/verify.js +7 -5
  81. package/commands/visualize.js +7 -0
  82. package/commands/wiki.js +53 -16
  83. package/commands/workflow.js +298 -54
  84. package/commands/workspace-clean.js +1 -1
  85. package/commands/worktree.js +468 -0
  86. package/commands/xp.js +1608 -0
  87. package/lib/manifest.js +34 -4
  88. package/lib/scorecard.js +3 -2
  89. package/lib/task-db.js +408 -27
  90. package/lib/todo-fallback.js +28 -2
  91. package/lib/todo.js +5 -3
  92. package/package.json +23 -2
  93. package/utils/update-check.js +51 -1
package/lib/todo.js CHANGED
@@ -42,6 +42,7 @@ function dbBuckets(workspaceRoot) {
42
42
  // Need raw source_key for merge dedup, plus the shim shape for callers.
43
43
  const backlog = [];
44
44
  const inProgress = [];
45
+ const review = [];
45
46
  const completed = [];
46
47
  const sourceKeys = new Set();
47
48
  // Query directly so the shim can dedup against markdown by the strong key
@@ -52,9 +53,10 @@ function dbBuckets(workspaceRoot) {
52
53
  const shaped = dbToShimRow(r);
53
54
  if (r.status === 'open') backlog.push(shaped);
54
55
  else if (r.status === 'claimed') inProgress.push(shaped);
56
+ else if (r.status === 'review') review.push(shaped);
55
57
  else if (r.status === 'done' || r.status === 'failed') completed.push(shaped);
56
58
  }
57
- return { backlog, inProgress, completed, sourceKeys };
59
+ return { backlog, inProgress, review, completed, sourceKeys };
58
60
  }
59
61
 
60
62
  function mergeBuckets(dbBuck, mdBuck, todoPath) {
@@ -65,8 +67,8 @@ function mergeBuckets(dbBuck, mdBuck, todoPath) {
65
67
  const taskDb = require('./task-db');
66
68
  const norm = (t) => String(t || '').toLowerCase().trim().replace(/\s+/g, ' ');
67
69
  const seenTitles = new Set();
68
- const out = { backlog: [], inProgress: [], completed: [] };
69
- for (const k of ['backlog', 'inProgress', 'completed']) {
70
+ const out = { backlog: [], inProgress: [], review: [], completed: [] };
71
+ for (const k of ['backlog', 'inProgress', 'review', 'completed']) {
70
72
  for (const r of dbBuck[k]) { out[k].push(r); seenTitles.add(norm(r.title)); }
71
73
  for (const r of mdBuck[k]) {
72
74
  const sk = todoPath ? taskDb.sourceKey(todoPath, r.title) : null;
package/package.json CHANGED
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "name": "atris",
3
- "version": "3.15.13",
4
- "description": "Atris — an operating system for intelligence. Integrates with any agent.",
3
+ "version": "3.15.22",
5
4
  "main": "bin/atris.js",
6
5
  "bin": {
7
6
  "atris": "bin/atris.js"
@@ -21,15 +20,37 @@
21
20
  "atris/CLAUDE.md",
22
21
  "atris/GEMINI.md",
23
22
  "atris/GETTING_STARTED.md",
23
+ "atris/context/README.md",
24
+ "atris/learnings.jsonl",
24
25
  "atris/team/navigator/MEMBER.md",
26
+ "atris/team/navigator/START_HERE.md",
25
27
  "atris/team/executor/MEMBER.md",
28
+ "atris/team/executor/START_HERE.md",
26
29
  "atris/team/validator/MEMBER.md",
30
+ "atris/team/validator/START_HERE.md",
27
31
  "atris/team/brainstormer/MEMBER.md",
32
+ "atris/team/brainstormer/START_HERE.md",
28
33
  "atris/team/launcher/MEMBER.md",
34
+ "atris/team/launcher/START_HERE.md",
29
35
  "atris/team/researcher/MEMBER.md",
36
+ "atris/team/researcher/START_HERE.md",
37
+ "atris/team/mission-lead/MEMBER.md",
38
+ "atris/team/mission-lead/MISSION.md",
39
+ "atris/team/mission-lead/START_HERE.md",
40
+ "atris/team/opus-overnight/MEMBER.md",
41
+ "atris/team/opus-overnight/MISSION.md",
42
+ "atris/team/opus-overnight/START_HERE.md",
43
+ "atris/team/opus-overnight/STEERING.md",
30
44
  "atris/team/_template/MEMBER.md",
31
45
  "atris/features/_templates/",
32
46
  "atris/features/company-brain-sync/",
47
+ "atris/wiki/index.md",
48
+ "atris/wiki/concepts/agent-activation-contract.md",
49
+ "atris/wiki/concepts/workspace-initialization-contract.md",
50
+ "atris/wiki/sources/atris-labs-2026-05-10.txt",
51
+ "atris/wiki/sources/atris-labs-goals-2026-05-10.txt",
52
+ "atris/wiki/sources/atrisos-generative-ui-product-surface-2026-05-10.txt",
53
+ "atris/wiki/sources/jack-dorsey-2026-05-10.txt",
33
54
  "atris/policies/",
34
55
  "atris/skills/"
35
56
  ],
@@ -2,6 +2,7 @@ const https = require('https');
2
2
  const fs = require('fs');
3
3
  const path = require('path');
4
4
  const os = require('os');
5
+ const { spawnSync } = require('child_process');
5
6
 
6
7
  const PACKAGE_NAME = 'atris';
7
8
  const CHECK_INTERVAL_MS = 60 * 60 * 1000; // 1 hour
@@ -191,6 +192,54 @@ function showUpdateNotification(updateInfo) {
191
192
  console.log(`${yellow}Update available: ${updateInfo.installed} → ${updateInfo.latest}. Run: npm install -g atris${reset}`);
192
193
  }
193
194
 
195
+ function inspectInstallGitState(packageRoot = path.join(__dirname, '..')) {
196
+ const root = path.resolve(packageRoot);
197
+ const inRepo = spawnSync('git', ['rev-parse', '--is-inside-work-tree'], {
198
+ cwd: root,
199
+ encoding: 'utf8',
200
+ });
201
+ if (inRepo.status !== 0 || inRepo.stdout.trim() !== 'true') {
202
+ return { isGitRepo: false, root };
203
+ }
204
+
205
+ const branchResult = spawnSync('git', ['branch', '--show-current'], {
206
+ cwd: root,
207
+ encoding: 'utf8',
208
+ });
209
+ const statusResult = spawnSync('git', ['status', '--porcelain'], {
210
+ cwd: root,
211
+ encoding: 'utf8',
212
+ });
213
+ const headResult = spawnSync('git', ['rev-parse', '--short', 'HEAD'], {
214
+ cwd: root,
215
+ encoding: 'utf8',
216
+ });
217
+ const branch = branchResult.status === 0 ? branchResult.stdout.trim() : '';
218
+ const dirtyEntries = statusResult.status === 0
219
+ ? statusResult.stdout.split('\n').filter((line) => line.trim())
220
+ : [];
221
+
222
+ return {
223
+ isGitRepo: true,
224
+ root,
225
+ branch,
226
+ detached: branch === '',
227
+ dirty: dirtyEntries.length > 0,
228
+ dirtyCount: dirtyEntries.length,
229
+ dirtySample: dirtyEntries.slice(0, 5),
230
+ head: headResult.status === 0 ? headResult.stdout.trim() : '',
231
+ };
232
+ }
233
+
234
+ function formatInstallGitWarning(state) {
235
+ if (!state || !state.isGitRepo || (!state.detached && !state.dirty)) return null;
236
+ const flags = [];
237
+ if (state.detached) flags.push(`detached HEAD${state.head ? ` ${state.head}` : ''}`);
238
+ if (state.dirty) flags.push(`dirty worktree (${state.dirtyCount} file${state.dirtyCount === 1 ? '' : 's'})`);
239
+ return `WARNING: Atris is running from a ${flags.join(' + ')} at ${state.root}.\n` +
240
+ 'npm update may not change the code currently on PATH; resolve that checkout before trusting upgrade status.';
241
+ }
242
+
194
243
  function autoUpdate(updateInfo) {
195
244
  if (!updateInfo || !updateInfo.needsUpdate) return false;
196
245
 
@@ -227,5 +276,6 @@ module.exports = {
227
276
  checkForUpdates,
228
277
  showUpdateNotification,
229
278
  autoUpdate,
279
+ inspectInstallGitState,
280
+ formatInstallGitWarning,
230
281
  };
231
-