atris 3.80.0 → 3.82.1
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/LICENSE +21 -0
- package/README.md +10 -0
- package/atris/atris.md +14 -0
- package/atris/features/README.md +15 -0
- package/atris/policies/README.md +24 -0
- package/atris/skills/README.md +61 -45
- package/atris/skills/design/SKILL.md +6 -5
- package/atris/skills/taste/SKILL.md +39 -0
- package/atris/skills/taste/notes.md +29 -0
- package/atris/skills/taste/principles.md +23 -0
- package/atris/skills/wiki/SKILL.md +14 -2
- package/atris/skills/wiki/index-lines.md +30 -0
- package/atris/skills/wiki/measure.md +20 -0
- package/atris/skills/wiki/note-shape.md +16 -0
- package/atris/skills/wiki/upkeep.md +16 -0
- package/atris/team/README.md +38 -0
- package/atris.md +14 -0
- package/bin/atris.js +1 -1
- package/commands/activate.js +1 -1
- package/commands/auth.js +2 -2
- package/commands/autoland.js +25 -26
- package/commands/autopilot-front.js +46 -1
- package/commands/autopilot.js +55 -25
- package/commands/clean.js +22 -11
- package/commands/computer.js +166 -2413
- package/commands/doc-health.js +48 -1
- package/commands/improve.js +16 -3
- package/commands/init.js +4 -0
- package/commands/integrations.js +69 -1616
- package/commands/mission.js +109 -13
- package/commands/release.js +41 -10
- package/commands/security-review.js +5 -1
- package/commands/site-deploy.js +5 -1
- package/commands/status.js +1 -1
- package/commands/sync.js +12 -8
- package/commands/task.js +144 -118
- package/commands/unknowns.js +9 -5
- package/commands/visualize.js +1 -12
- package/commands/workflow.js +4 -3
- package/commands/worktree.js +68 -1602
- package/commands/xp.js +23 -2113
- package/commands/youtube.js +192 -3110
- package/lib/business-core.js +3 -4
- package/lib/campaign-run-lock.js +12 -1
- package/lib/computer-core.js +2447 -0
- package/lib/engine-ask.js +1 -1
- package/lib/engine-receipt-sweep.js +64 -0
- package/lib/file-lock.js +175 -0
- package/lib/fleet.js +1 -1
- package/lib/integrations-core.js +1695 -0
- package/lib/json-file.js +22 -1
- package/lib/loop-doctor.js +36 -2
- package/lib/map-refs.js +68 -8
- package/lib/member-engine.js +1 -1
- package/lib/member-map-fold.js +49 -11
- package/lib/member-map-inbox.js +2 -1
- package/lib/mission-core.js +9 -2
- package/lib/recall-exam.js +171 -0
- package/lib/roster-markdown.js +2 -2
- package/lib/runner-command.js +5 -5
- package/lib/security-audit-classes.js +20 -2
- package/lib/security-audit.js +31 -1
- package/lib/task-db.js +105 -37
- package/lib/taste-notes.js +35 -0
- package/lib/team-lineup.js +3 -3
- package/lib/todo.js +2 -0
- package/lib/wiki.js +11 -3
- package/lib/worktree-core.js +1517 -0
- package/lib/xp-core.js +2172 -0
- package/lib/youtube-core.js +3178 -0
- package/lib/zen-apply.js +3 -1
- package/package.json +10 -3
- package/utils/auth.js +18 -4
package/lib/zen-apply.js
CHANGED
|
@@ -11,6 +11,7 @@ const os = require('node:os');
|
|
|
11
11
|
const path = require('node:path');
|
|
12
12
|
const { spawnSync } = require('node:child_process');
|
|
13
13
|
const { runGit } = require('./checkout-sync');
|
|
14
|
+
const { MAP_NOTES_DIR } = require('./map-refs');
|
|
14
15
|
const {
|
|
15
16
|
branchMovedSince,
|
|
16
17
|
checkZen,
|
|
@@ -312,11 +313,12 @@ function applyNotes(root, patchFile, files) {
|
|
|
312
313
|
|
|
313
314
|
// The map files whose code links `atris clean` re-points on every zen run.
|
|
314
315
|
const MAP_FILES = new Set(['atris/MAP.md', 'atris/refs/MAP-NOTES.md']);
|
|
316
|
+
const isMapFile = (p) => MAP_FILES.has(p) || (p.startsWith(`${MAP_NOTES_DIR}/`) && p.endsWith('.md'));
|
|
315
317
|
|
|
316
318
|
// A map edit that only moved `file:line` numbers is the link fixer's own work
|
|
317
319
|
// from an earlier run, and the workspace step redoes it, so it is not news.
|
|
318
320
|
function lineRefsOnly(root, from, p, mine) {
|
|
319
|
-
if (!
|
|
321
|
+
if (!isMapFile(p) || !fs.existsSync(mine)) return false;
|
|
320
322
|
const was = runGit(['show', `${from}:${p}`], root);
|
|
321
323
|
if (was.status !== 0) return false;
|
|
322
324
|
const bare = (text) => String(text).replace(/([\w./-]+\.[A-Za-z]+):\d+(?:-\d+)?/g, '$1:#');
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "atris",
|
|
3
|
-
"version": "3.
|
|
4
|
-
"description": "you say what you want in plain words. atris builds it, checks it, and shows you proof.",
|
|
3
|
+
"version": "3.82.1",
|
|
4
|
+
"description": "you say what you want in plain words. atris builds it, checks it, and shows you proof. project memory your coding agents share across sessions.",
|
|
5
5
|
"mcpName": "io.github.atrislabs/atris",
|
|
6
6
|
"main": "bin/atris.js",
|
|
7
7
|
"bin": {
|
|
@@ -91,7 +91,14 @@
|
|
|
91
91
|
"developer-tools",
|
|
92
92
|
"cli",
|
|
93
93
|
"codebase-navigation",
|
|
94
|
-
"ai-agents"
|
|
94
|
+
"ai-agents",
|
|
95
|
+
"agent-memory",
|
|
96
|
+
"ai-memory",
|
|
97
|
+
"llm-memory",
|
|
98
|
+
"project-memory",
|
|
99
|
+
"context-graph",
|
|
100
|
+
"knowledge-graph",
|
|
101
|
+
"memory"
|
|
95
102
|
],
|
|
96
103
|
"author": "Keshav Rao (atrislabs)",
|
|
97
104
|
"license": "MIT",
|
package/utils/auth.js
CHANGED
|
@@ -40,9 +40,11 @@ let inputIndex = 0;
|
|
|
40
40
|
/**
|
|
41
41
|
* Prompt the user for input, handling both TTY and piped input.
|
|
42
42
|
* @param {string} question - Prompt text to display
|
|
43
|
+
* @param {{secret?: boolean}} [opts] - secret: never print the answer back
|
|
43
44
|
* @returns {Promise<string>} User's input
|
|
44
45
|
*/
|
|
45
|
-
function promptUser(question) {
|
|
46
|
+
function promptUser(question, opts = {}) {
|
|
47
|
+
const shown = (answer) => (opts.secret ? '' : answer);
|
|
46
48
|
// If stdin is not a TTY (piped input), read all lines upfront
|
|
47
49
|
if (!process.stdin.isTTY && inputLines.length === 0 && !sharedRl) {
|
|
48
50
|
return new Promise((resolve) => {
|
|
@@ -57,7 +59,7 @@ function promptUser(question) {
|
|
|
57
59
|
inputLines = data.trim().split('\n');
|
|
58
60
|
process.stdout.write(question);
|
|
59
61
|
const answer = inputLines[inputIndex++] || '';
|
|
60
|
-
console.log(answer);
|
|
62
|
+
console.log(shown(answer));
|
|
61
63
|
resolve(answer.trim());
|
|
62
64
|
});
|
|
63
65
|
process.stdin.resume();
|
|
@@ -69,22 +71,34 @@ function promptUser(question) {
|
|
|
69
71
|
return new Promise((resolve) => {
|
|
70
72
|
process.stdout.write(question);
|
|
71
73
|
const answer = inputLines[inputIndex++] || '';
|
|
72
|
-
console.log(answer);
|
|
74
|
+
console.log(shown(answer));
|
|
73
75
|
resolve(answer.trim());
|
|
74
76
|
});
|
|
75
77
|
}
|
|
76
78
|
|
|
77
79
|
// Interactive TTY mode - create readline per prompt
|
|
80
|
+
// A secret typed at a terminal must stay hidden even when stdout is a file:
|
|
81
|
+
// terminal mode turns off the terminal's own echo, and the prompt goes to
|
|
82
|
+
// whichever stream is still the screen.
|
|
83
|
+
const secretOut = opts.secret && !process.stdout.isTTY && process.stderr.isTTY ? process.stderr : process.stdout;
|
|
78
84
|
const rl = readline.createInterface({
|
|
79
85
|
input: process.stdin,
|
|
80
|
-
output:
|
|
86
|
+
output: secretOut,
|
|
87
|
+
...(opts.secret ? { terminal: Boolean(process.stdin.isTTY) } : {}),
|
|
81
88
|
});
|
|
82
89
|
|
|
90
|
+
// Secret answers: let the prompt through, then swallow the typed echo.
|
|
91
|
+
let muted = false;
|
|
92
|
+
if (opts.secret) {
|
|
93
|
+
rl._writeToOutput = (text) => { if (!muted) rl.output.write(text); };
|
|
94
|
+
}
|
|
83
95
|
return new Promise((resolve) => {
|
|
84
96
|
rl.question(question, (answer) => {
|
|
97
|
+
if (muted) rl.output.write('\n');
|
|
85
98
|
rl.close();
|
|
86
99
|
resolve(answer.trim());
|
|
87
100
|
});
|
|
101
|
+
muted = Boolean(opts.secret);
|
|
88
102
|
});
|
|
89
103
|
}
|
|
90
104
|
|