@bastani/atomic 0.5.4-0 → 0.5.5-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.
- package/README.md +44 -1
- package/dist/lib/path-root-guard.d.ts +4 -0
- package/dist/lib/path-root-guard.d.ts.map +1 -0
- package/dist/sdk/components/color-utils.d.ts +1 -0
- package/dist/sdk/components/color-utils.d.ts.map +1 -0
- package/dist/sdk/components/connectors.d.ts +3 -2
- package/dist/sdk/components/connectors.d.ts.map +1 -0
- package/dist/sdk/components/connectors.test.d.ts +1 -0
- package/dist/sdk/components/connectors.test.d.ts.map +1 -0
- package/dist/sdk/components/edge.d.ts +2 -1
- package/dist/sdk/components/edge.d.ts.map +1 -0
- package/dist/sdk/components/error-boundary.d.ts +1 -0
- package/dist/sdk/components/error-boundary.d.ts.map +1 -0
- package/dist/sdk/components/graph-theme.d.ts +2 -1
- package/dist/sdk/components/graph-theme.d.ts.map +1 -0
- package/dist/sdk/components/header.d.ts +1 -0
- package/dist/sdk/components/header.d.ts.map +1 -0
- package/dist/sdk/components/hooks.d.ts +15 -0
- package/dist/sdk/components/hooks.d.ts.map +1 -0
- package/dist/sdk/components/layout.d.ts +2 -1
- package/dist/sdk/components/layout.d.ts.map +1 -0
- package/dist/sdk/components/layout.test.d.ts +1 -0
- package/dist/sdk/components/layout.test.d.ts.map +1 -0
- package/dist/sdk/components/node-card.d.ts +5 -3
- package/dist/sdk/components/node-card.d.ts.map +1 -0
- package/dist/sdk/components/orchestrator-panel-contexts.d.ts +3 -2
- package/dist/sdk/components/orchestrator-panel-contexts.d.ts.map +1 -0
- package/dist/sdk/components/orchestrator-panel-store.d.ts +2 -1
- package/dist/sdk/components/orchestrator-panel-store.d.ts.map +1 -0
- package/dist/sdk/components/orchestrator-panel-store.test.d.ts +1 -0
- package/dist/sdk/components/orchestrator-panel-store.test.d.ts.map +1 -0
- package/dist/sdk/components/orchestrator-panel-types.d.ts +1 -0
- package/dist/sdk/components/orchestrator-panel-types.d.ts.map +1 -0
- package/dist/sdk/components/orchestrator-panel.d.ts +2 -1
- package/dist/sdk/components/orchestrator-panel.d.ts.map +1 -0
- package/dist/sdk/components/session-graph-panel.d.ts +1 -0
- package/dist/sdk/components/session-graph-panel.d.ts.map +1 -0
- package/dist/sdk/components/status-helpers.d.ts +2 -1
- package/dist/sdk/components/status-helpers.d.ts.map +1 -0
- package/dist/sdk/components/statusline.d.ts +2 -1
- package/dist/sdk/components/statusline.d.ts.map +1 -0
- package/dist/sdk/components/workflow-picker-panel.d.ts +11 -8
- package/dist/sdk/components/workflow-picker-panel.d.ts.map +1 -0
- package/dist/sdk/define-workflow.d.ts +2 -1
- package/dist/sdk/define-workflow.d.ts.map +1 -0
- package/dist/sdk/define-workflow.test.d.ts +1 -0
- package/dist/sdk/define-workflow.test.d.ts.map +1 -0
- package/dist/sdk/errors.d.ts +3 -0
- package/dist/sdk/errors.d.ts.map +1 -0
- package/dist/sdk/errors.test.d.ts +2 -0
- package/dist/sdk/errors.test.d.ts.map +1 -0
- package/dist/sdk/index.d.ts +7 -6
- package/dist/sdk/index.d.ts.map +1 -0
- package/dist/sdk/providers/claude.d.ts +17 -6
- package/dist/sdk/providers/claude.d.ts.map +1 -0
- package/dist/sdk/providers/copilot.d.ts +2 -5
- package/dist/sdk/providers/copilot.d.ts.map +1 -0
- package/dist/sdk/providers/opencode.d.ts +2 -5
- package/dist/sdk/providers/opencode.d.ts.map +1 -0
- package/dist/sdk/runtime/discovery.d.ts +2 -1
- package/dist/sdk/runtime/discovery.d.ts.map +1 -0
- package/dist/sdk/runtime/executor-entry.d.ts +1 -0
- package/dist/sdk/runtime/executor-entry.d.ts.map +1 -0
- package/dist/sdk/runtime/executor.d.ts +3 -6
- package/dist/sdk/runtime/executor.d.ts.map +1 -0
- package/dist/sdk/runtime/executor.test.d.ts +1 -0
- package/dist/sdk/runtime/executor.test.d.ts.map +1 -0
- package/dist/sdk/runtime/graph-inference.d.ts +1 -0
- package/dist/sdk/runtime/graph-inference.d.ts.map +1 -0
- package/dist/sdk/runtime/loader.d.ts +5 -7
- package/dist/sdk/runtime/loader.d.ts.map +1 -0
- package/dist/sdk/runtime/panel.d.ts +3 -2
- package/dist/sdk/runtime/panel.d.ts.map +1 -0
- package/dist/sdk/runtime/theme.d.ts +1 -0
- package/dist/sdk/runtime/theme.d.ts.map +1 -0
- package/dist/sdk/runtime/tmux.d.ts +26 -8
- package/dist/sdk/runtime/tmux.d.ts.map +1 -0
- package/dist/sdk/types.d.ts +23 -1
- package/dist/sdk/types.d.ts.map +1 -0
- package/dist/sdk/workflows/builtin/deep-research-codebase/claude/index.d.ts +1 -0
- package/dist/sdk/workflows/builtin/deep-research-codebase/claude/index.d.ts.map +1 -0
- package/dist/sdk/workflows/builtin/deep-research-codebase/copilot/index.d.ts +1 -0
- package/dist/sdk/workflows/builtin/deep-research-codebase/copilot/index.d.ts.map +1 -0
- package/dist/sdk/workflows/builtin/deep-research-codebase/helpers/heuristic.d.ts +1 -0
- package/dist/sdk/workflows/builtin/deep-research-codebase/helpers/heuristic.d.ts.map +1 -0
- package/dist/sdk/workflows/builtin/deep-research-codebase/helpers/prompts.d.ts +2 -1
- package/dist/sdk/workflows/builtin/deep-research-codebase/helpers/prompts.d.ts.map +1 -0
- package/dist/sdk/workflows/builtin/deep-research-codebase/helpers/scout.d.ts +1 -0
- package/dist/sdk/workflows/builtin/deep-research-codebase/helpers/scout.d.ts.map +1 -0
- package/dist/sdk/workflows/builtin/deep-research-codebase/opencode/index.d.ts +1 -0
- package/dist/sdk/workflows/builtin/deep-research-codebase/opencode/index.d.ts.map +1 -0
- package/dist/sdk/workflows/builtin/ralph/claude/index.d.ts +1 -0
- package/dist/sdk/workflows/builtin/ralph/claude/index.d.ts.map +1 -0
- package/dist/sdk/workflows/builtin/ralph/copilot/index.d.ts +1 -0
- package/dist/sdk/workflows/builtin/ralph/copilot/index.d.ts.map +1 -0
- package/dist/sdk/workflows/builtin/ralph/helpers/git.d.ts +1 -0
- package/dist/sdk/workflows/builtin/ralph/helpers/git.d.ts.map +1 -0
- package/dist/sdk/workflows/builtin/ralph/helpers/prompts.d.ts +1 -0
- package/dist/sdk/workflows/builtin/ralph/helpers/prompts.d.ts.map +1 -0
- package/dist/sdk/workflows/builtin/ralph/helpers/review.d.ts +2 -1
- package/dist/sdk/workflows/builtin/ralph/helpers/review.d.ts.map +1 -0
- package/dist/sdk/workflows/builtin/ralph/opencode/index.d.ts +1 -0
- package/dist/sdk/workflows/builtin/ralph/opencode/index.d.ts.map +1 -0
- package/dist/sdk/workflows/index.d.ts +14 -14
- package/dist/sdk/workflows/index.d.ts.map +1 -0
- package/dist/services/config/definitions.d.ts +85 -0
- package/dist/services/config/definitions.d.ts.map +1 -0
- package/dist/services/system/copy.d.ts +77 -0
- package/dist/services/system/copy.d.ts.map +1 -0
- package/dist/services/system/detect.d.ts +75 -0
- package/dist/services/system/detect.d.ts.map +1 -0
- package/package.json +13 -34
- package/src/cli.ts +11 -10
- package/src/commands/cli/chat/index.ts +11 -11
- package/src/commands/cli/chat.ts +1 -1
- package/src/commands/cli/config.ts +10 -9
- package/src/commands/cli/init/index.ts +11 -11
- package/src/commands/cli/init/onboarding.ts +4 -4
- package/src/commands/cli/init/scm.ts +5 -5
- package/src/commands/cli/init.ts +1 -1
- package/src/commands/cli/workflow-command.test.ts +19 -11
- package/src/commands/cli/workflow.test.ts +2 -2
- package/src/commands/cli/workflow.ts +6 -6
- package/src/lib/merge.ts +17 -31
- package/src/lib/path-root-guard.ts +2 -2
- package/src/lib/spawn.ts +13 -7
- package/src/scripts/bump-version.ts +1 -1
- package/src/scripts/constants.ts +2 -2
- package/src/sdk/components/header.tsx +21 -23
- package/src/sdk/components/hooks.ts +21 -0
- package/src/sdk/components/node-card.tsx +3 -2
- package/src/sdk/components/session-graph-panel.tsx +14 -18
- package/src/sdk/components/workflow-picker-panel.tsx +201 -216
- package/src/sdk/errors.test.ts +56 -0
- package/src/sdk/errors.ts +5 -0
- package/src/sdk/providers/claude.ts +279 -70
- package/src/sdk/providers/copilot.ts +17 -27
- package/src/sdk/providers/opencode.ts +17 -27
- package/src/sdk/runtime/discovery.ts +18 -18
- package/src/sdk/runtime/executor.test.ts +15 -48
- package/src/sdk/runtime/executor.ts +152 -121
- package/src/sdk/runtime/loader.ts +16 -21
- package/src/sdk/runtime/tmux.ts +95 -32
- package/src/sdk/types.ts +45 -0
- package/src/sdk/workflows/builtin/deep-research-codebase/claude/index.ts +27 -0
- package/src/sdk/workflows/builtin/deep-research-codebase/helpers/prompts.ts +25 -16
- package/src/sdk/workflows/builtin/deep-research-codebase/helpers/scout.ts +25 -24
- package/src/sdk/workflows/builtin/ralph/claude/index.ts +5 -0
- package/src/sdk/workflows/index.ts +3 -3
- package/src/services/config/atomic-config.ts +7 -8
- package/src/services/config/atomic-global-config.ts +9 -9
- package/src/services/config/config-path.ts +1 -1
- package/src/services/config/definitions.ts +3 -4
- package/src/services/config/index.ts +1 -1
- package/src/services/config/settings.ts +30 -36
- package/src/services/system/agents.ts +3 -3
- package/src/services/system/auto-sync.ts +9 -9
- package/src/services/system/copy.ts +9 -9
- package/src/services/system/file-lock.ts +2 -2
- package/src/services/system/install-ui.ts +2 -2
- package/src/services/system/skills.ts +1 -1
- package/src/theme/colors.ts +1 -1
- package/src/theme/logo.ts +1 -1
- package/tsconfig.json +3 -4
- package/dist/chunk-1gb5qxz9.js +0 -1
- package/dist/chunk-fdk7tact.js +0 -417
- package/dist/chunk-xkxndz5g.js +0 -1041
- package/dist/sdk/index.js +0 -52
- package/dist/sdk/workflows/builtin/ralph/claude/index.js +0 -96
- package/dist/sdk/workflows/builtin/ralph/copilot/index.js +0 -119
- package/dist/sdk/workflows/builtin/ralph/opencode/index.js +0 -148
- package/dist/sdk/workflows/index.js +0 -100
- package/src/commands/cli/chat/client.ts +0 -18
|
@@ -7,12 +7,11 @@
|
|
|
7
7
|
* 2) global `~/.atomic/settings.json` (default fallback)
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import { ensureDir } from "@/services/system/copy.ts";
|
|
10
|
+
import { join, dirname } from "node:path";
|
|
11
|
+
import { homedir } from "node:os";
|
|
12
|
+
import { type SourceControlType } from "./index.ts";
|
|
13
|
+
import { SETTINGS_SCHEMA_URL } from "./settings-schema.ts";
|
|
14
|
+
import { ensureDir } from "../system/copy.ts";
|
|
16
15
|
|
|
17
16
|
const SETTINGS_DIR = ".atomic";
|
|
18
17
|
const SETTINGS_FILENAME = "settings.json";
|
|
@@ -42,7 +41,7 @@ function getLocalSettingsPath(projectDir: string): string {
|
|
|
42
41
|
|
|
43
42
|
async function readJsonFile(path: string): Promise<JsonRecord | null> {
|
|
44
43
|
try {
|
|
45
|
-
return
|
|
44
|
+
return await Bun.file(path).json() as JsonRecord;
|
|
46
45
|
} catch {
|
|
47
46
|
return null;
|
|
48
47
|
}
|
|
@@ -112,7 +111,7 @@ export async function saveAtomicConfig(
|
|
|
112
111
|
};
|
|
113
112
|
|
|
114
113
|
await ensureDir(dirname(localPath));
|
|
115
|
-
await
|
|
114
|
+
await Bun.write(localPath, JSON.stringify(nextSettings, null, 2) + "\n");
|
|
116
115
|
}
|
|
117
116
|
|
|
118
117
|
/**
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { copyFile, lstat, readdir, rm, rmdir } from "fs/promises";
|
|
2
|
-
import { join, resolve } from "path";
|
|
3
|
-
import { homedir } from "os";
|
|
1
|
+
import { copyFile, lstat, readdir, rm, rmdir } from "node:fs/promises";
|
|
2
|
+
import { join, resolve } from "node:path";
|
|
3
|
+
import { homedir } from "node:os";
|
|
4
4
|
|
|
5
|
-
import { AGENT_CONFIG, type AgentKey } from "
|
|
6
|
-
import { mergeJsonFile } from "
|
|
7
|
-
import { copyDir, ensureDir, pathExists } from "
|
|
5
|
+
import { AGENT_CONFIG, getAgentKeys, type AgentKey } from "./index.ts";
|
|
6
|
+
import { mergeJsonFile } from "../../lib/merge.ts";
|
|
7
|
+
import { copyDir, ensureDir, pathExists } from "../system/copy.ts";
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
const ATOMIC_HOME_DIR = join(homedir(), ".atomic");
|
|
@@ -196,7 +196,7 @@ export async function removeAtomicManagedGlobalAgentConfigs(
|
|
|
196
196
|
configRoot: string,
|
|
197
197
|
baseDir: string = ATOMIC_HOME_DIR,
|
|
198
198
|
): Promise<void> {
|
|
199
|
-
const agentKeys =
|
|
199
|
+
const agentKeys = getAgentKeys();
|
|
200
200
|
|
|
201
201
|
for (const agentKey of agentKeys) {
|
|
202
202
|
const sourceFolder = join(configRoot, getTemplateAgentFolder(agentKey));
|
|
@@ -256,7 +256,7 @@ export async function syncAtomicGlobalAgentConfigs(
|
|
|
256
256
|
): Promise<void> {
|
|
257
257
|
await ensureDir(baseDir);
|
|
258
258
|
|
|
259
|
-
const agentKeys =
|
|
259
|
+
const agentKeys = getAgentKeys();
|
|
260
260
|
for (const agentKey of agentKeys) {
|
|
261
261
|
const sourceFolder = join(configRoot, getTemplateAgentFolder(agentKey));
|
|
262
262
|
if (!(await pathExists(sourceFolder))) continue;
|
|
@@ -300,7 +300,7 @@ export async function hasAtomicGlobalAgentConfigs(
|
|
|
300
300
|
configRoot: string,
|
|
301
301
|
baseDir: string = ATOMIC_HOME_DIR,
|
|
302
302
|
): Promise<boolean> {
|
|
303
|
-
const agentKeys =
|
|
303
|
+
const agentKeys = getAgentKeys();
|
|
304
304
|
|
|
305
305
|
for (const agentKey of agentKeys) {
|
|
306
306
|
const sourceFolder = join(configRoot, getTemplateAgentFolder(agentKey));
|
|
@@ -119,13 +119,12 @@ export function getAgentKeys(): AgentKey[] {
|
|
|
119
119
|
* Source Control Management (SCM) configuration definitions
|
|
120
120
|
*/
|
|
121
121
|
|
|
122
|
-
/** Supported source control types */
|
|
123
|
-
export type SourceControlType = "github" | "sapling";
|
|
124
|
-
// Future: | 'azure-devops'
|
|
125
|
-
|
|
126
122
|
/** SCM keys for iteration */
|
|
127
123
|
const SCM_KEYS = ["github", "sapling"] as const;
|
|
128
124
|
|
|
125
|
+
/** Supported source control types — derived from SCM_KEYS tuple. */
|
|
126
|
+
export type SourceControlType = (typeof SCM_KEYS)[number];
|
|
127
|
+
|
|
129
128
|
export interface ScmConfig {
|
|
130
129
|
/** Internal identifier */
|
|
131
130
|
name: string;
|
|
@@ -9,12 +9,12 @@
|
|
|
9
9
|
* The --model CLI flag takes precedence over both (handled at call site).
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
|
-
import { readFileSync, writeFileSync, existsSync } from "node:fs";
|
|
13
12
|
import { join, dirname, resolve } from "node:path";
|
|
14
13
|
import { homedir } from "node:os";
|
|
15
|
-
import { SETTINGS_SCHEMA_URL } from "
|
|
16
|
-
import {
|
|
17
|
-
import
|
|
14
|
+
import { SETTINGS_SCHEMA_URL } from "./settings-schema.ts";
|
|
15
|
+
import { ensureDir } from "../system/copy.ts";
|
|
16
|
+
import { errorMessage } from "../../sdk/errors.ts";
|
|
17
|
+
import type { AgentKey, SourceControlType } from "./definitions.ts";
|
|
18
18
|
|
|
19
19
|
export interface TrustedPathEntry {
|
|
20
20
|
workspacePath: string;
|
|
@@ -23,10 +23,16 @@ export interface TrustedPathEntry {
|
|
|
23
23
|
|
|
24
24
|
interface AtomicSettings {
|
|
25
25
|
$schema?: string;
|
|
26
|
-
scm?:
|
|
26
|
+
scm?: SourceControlType;
|
|
27
27
|
version?: number;
|
|
28
28
|
lastUpdated?: string;
|
|
29
29
|
trustedPaths?: TrustedPathEntry[];
|
|
30
|
+
telemetryEnabled?: boolean;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/** Runtime guard for parsed JSON to ensure it's a plain object. */
|
|
34
|
+
function isPlainObject(value: unknown): value is Record<string, unknown> {
|
|
35
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
30
36
|
}
|
|
31
37
|
|
|
32
38
|
/** Global settings path: ~/.atomic/settings.json */
|
|
@@ -35,31 +41,21 @@ function globalSettingsPath(): string {
|
|
|
35
41
|
return join(home, ".atomic", "settings.json");
|
|
36
42
|
}
|
|
37
43
|
|
|
38
|
-
function loadSettingsFileSync(path: string): AtomicSettings {
|
|
39
|
-
try {
|
|
40
|
-
if (existsSync(path)) {
|
|
41
|
-
return JSON.parse(readFileSync(path, "utf-8")) as AtomicSettings;
|
|
42
|
-
}
|
|
43
|
-
} catch {
|
|
44
|
-
// Silently fail
|
|
45
|
-
}
|
|
46
|
-
return {};
|
|
47
|
-
}
|
|
48
|
-
|
|
49
44
|
async function loadSettingsFile(path: string): Promise<AtomicSettings> {
|
|
50
45
|
try {
|
|
51
|
-
|
|
46
|
+
const parsed: unknown = await Bun.file(path).json();
|
|
47
|
+
if (isPlainObject(parsed)) return parsed as AtomicSettings;
|
|
52
48
|
} catch {
|
|
53
|
-
//
|
|
49
|
+
// File missing or invalid JSON — fall through to default
|
|
54
50
|
}
|
|
55
51
|
return {};
|
|
56
52
|
}
|
|
57
53
|
|
|
58
|
-
function
|
|
54
|
+
async function writeGlobalSettings(settings: AtomicSettings): Promise<void> {
|
|
55
|
+
settings.$schema = SETTINGS_SCHEMA_URL;
|
|
59
56
|
const path = globalSettingsPath();
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
writeFileSync(path, JSON.stringify(settings, null, 2), "utf-8");
|
|
57
|
+
await ensureDir(dirname(path));
|
|
58
|
+
await Bun.write(path, JSON.stringify(settings, null, 2));
|
|
63
59
|
}
|
|
64
60
|
|
|
65
61
|
function normalizeTrustedPathEntry(entry: TrustedPathEntry): TrustedPathEntry {
|
|
@@ -102,33 +98,31 @@ export async function isTrustedWorkspacePath(
|
|
|
102
98
|
);
|
|
103
99
|
}
|
|
104
100
|
|
|
105
|
-
export function upsertTrustedWorkspacePath(
|
|
101
|
+
export async function upsertTrustedWorkspacePath(
|
|
106
102
|
workspacePath: string,
|
|
107
103
|
provider: AgentKey,
|
|
108
|
-
): void {
|
|
104
|
+
): Promise<void> {
|
|
109
105
|
try {
|
|
110
|
-
const settings =
|
|
111
|
-
settings.$schema = SETTINGS_SCHEMA_URL;
|
|
106
|
+
const settings = await loadSettingsFile(globalSettingsPath());
|
|
112
107
|
settings.trustedPaths = normalizeTrustedPaths([
|
|
113
108
|
...(settings.trustedPaths ?? []),
|
|
114
109
|
{ workspacePath, provider },
|
|
115
110
|
]);
|
|
116
|
-
|
|
117
|
-
} catch {
|
|
118
|
-
|
|
111
|
+
await writeGlobalSettings(settings);
|
|
112
|
+
} catch (e) {
|
|
113
|
+
console.warn(`[settings] failed to upsert trusted path: ${errorMessage(e)}`);
|
|
119
114
|
}
|
|
120
115
|
}
|
|
121
116
|
|
|
122
117
|
/**
|
|
123
118
|
* Set telemetry enabled/disabled in global settings.
|
|
124
119
|
*/
|
|
125
|
-
export function setTelemetryEnabled(enabled: boolean): void {
|
|
120
|
+
export async function setTelemetryEnabled(enabled: boolean): Promise<void> {
|
|
126
121
|
try {
|
|
127
|
-
const settings =
|
|
128
|
-
settings
|
|
129
|
-
(settings
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
// Silently fail
|
|
122
|
+
const settings = await loadSettingsFile(globalSettingsPath());
|
|
123
|
+
settings.telemetryEnabled = enabled;
|
|
124
|
+
await writeGlobalSettings(settings);
|
|
125
|
+
} catch (e) {
|
|
126
|
+
console.warn(`[settings] failed to set telemetry: ${errorMessage(e)}`);
|
|
133
127
|
}
|
|
134
128
|
}
|
|
@@ -17,14 +17,14 @@
|
|
|
17
17
|
* source is left untouched).
|
|
18
18
|
*/
|
|
19
19
|
|
|
20
|
-
import { join, dirname } from "path";
|
|
21
|
-
import { homedir } from "os";
|
|
20
|
+
import { join, dirname } from "node:path";
|
|
21
|
+
import { homedir } from "node:os";
|
|
22
22
|
import {
|
|
23
23
|
copyDir,
|
|
24
24
|
copyFile,
|
|
25
25
|
ensureDir,
|
|
26
26
|
pathExists,
|
|
27
|
-
} from "
|
|
27
|
+
} from "./copy.ts";
|
|
28
28
|
|
|
29
29
|
/**
|
|
30
30
|
* Locate the package root by walking up from this module. Both in installed
|
|
@@ -31,20 +31,20 @@
|
|
|
31
31
|
* launch.
|
|
32
32
|
*/
|
|
33
33
|
|
|
34
|
-
import { join } from "path";
|
|
35
|
-
import { homedir } from "os";
|
|
36
|
-
import { VERSION } from "
|
|
37
|
-
import { COLORS } from "
|
|
34
|
+
import { join } from "node:path";
|
|
35
|
+
import { homedir } from "node:os";
|
|
36
|
+
import { VERSION } from "../../version.ts";
|
|
37
|
+
import { COLORS } from "../../theme/colors.ts";
|
|
38
38
|
import {
|
|
39
39
|
ensureNpmInstalled,
|
|
40
40
|
ensureTmuxInstalled,
|
|
41
41
|
upgradePlaywrightCli,
|
|
42
42
|
upgradeLiteparse,
|
|
43
|
-
} from "
|
|
44
|
-
import { installGlobalAgents } from "
|
|
45
|
-
import { installGlobalSkills } from "
|
|
46
|
-
import { runSteps, printSummary } from "
|
|
47
|
-
import { displayBlockBanner } from "
|
|
43
|
+
} from "../../lib/spawn.ts";
|
|
44
|
+
import { installGlobalAgents } from "./agents.ts";
|
|
45
|
+
import { installGlobalSkills } from "./skills.ts";
|
|
46
|
+
import { runSteps, printSummary } from "./install-ui.ts";
|
|
47
|
+
import { displayBlockBanner } from "../../theme/logo.ts";
|
|
48
48
|
|
|
49
49
|
/** Path to the version marker. Honors ATOMIC_SETTINGS_HOME for tests. */
|
|
50
50
|
function syncMarkerPath(): string {
|
|
@@ -2,9 +2,15 @@
|
|
|
2
2
|
* Utilities for copying directories and files with exclusions
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
import { readdir, mkdir, stat, readFile } from "fs/promises";
|
|
6
|
-
import { mkdirSync } from "fs";
|
|
7
|
-
import { join, extname, relative, resolve } from "path";
|
|
5
|
+
import { readdir, mkdir, stat, readFile } from "node:fs/promises";
|
|
6
|
+
import { mkdirSync } from "node:fs";
|
|
7
|
+
import { join, extname, relative, resolve } from "node:path";
|
|
8
|
+
import { getOppositeScriptExtension } from "./detect.ts";
|
|
9
|
+
import {
|
|
10
|
+
assertPathWithinRoot,
|
|
11
|
+
assertRealPathWithinRoot,
|
|
12
|
+
isPathWithinRoot,
|
|
13
|
+
} from "../../lib/path-root-guard.ts";
|
|
8
14
|
|
|
9
15
|
/**
|
|
10
16
|
* Safely create a directory (and parents) without throwing on EEXIST.
|
|
@@ -46,12 +52,6 @@ export function ensureDirSync(path: string): void {
|
|
|
46
52
|
throw error;
|
|
47
53
|
}
|
|
48
54
|
}
|
|
49
|
-
import { getOppositeScriptExtension } from "@/services/system/detect.ts";
|
|
50
|
-
import {
|
|
51
|
-
assertPathWithinRoot,
|
|
52
|
-
assertRealPathWithinRoot,
|
|
53
|
-
isPathWithinRoot,
|
|
54
|
-
} from "@/lib/path-root-guard.ts";
|
|
55
55
|
|
|
56
56
|
/**
|
|
57
57
|
* Normalize a path for cross-platform comparison.
|
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
import { existsSync, writeFileSync, readFileSync, unlinkSync, readdirSync } from "node:fs";
|
|
11
|
-
import { join, dirname } from "path";
|
|
12
|
-
import { ensureDirSync } from "
|
|
11
|
+
import { join, dirname } from "node:path";
|
|
12
|
+
import { ensureDirSync } from "./copy.ts";
|
|
13
13
|
|
|
14
14
|
// ============================================================================
|
|
15
15
|
// TYPES
|
|
@@ -23,11 +23,11 @@
|
|
|
23
23
|
* library, just what auto-sync needs to stop being visually noisy.
|
|
24
24
|
*/
|
|
25
25
|
|
|
26
|
-
import { COLORS } from "
|
|
26
|
+
import { COLORS } from "../../theme/colors.ts";
|
|
27
27
|
import {
|
|
28
28
|
supportsTrueColor,
|
|
29
29
|
supports256Color,
|
|
30
|
-
} from "
|
|
30
|
+
} from "./detect.ts";
|
|
31
31
|
|
|
32
32
|
const BAR_WIDTH = 30;
|
|
33
33
|
const BAR_FILLED = "■";
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* locally per-project based on the user's selected SCM + active agent.
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import { ALL_SCM_SKILLS } from "
|
|
9
|
+
import { ALL_SCM_SKILLS } from "../config/index.ts";
|
|
10
10
|
|
|
11
11
|
const SKILLS_REPO = "https://github.com/flora131/atomic.git";
|
|
12
12
|
const SKILLS_AGENTS = ["claude-code", "opencode", "github-copilot"] as const;
|
package/src/theme/colors.ts
CHANGED
package/src/theme/logo.ts
CHANGED
package/tsconfig.json
CHANGED
|
@@ -3,13 +3,12 @@
|
|
|
3
3
|
// Environment setup & latest features
|
|
4
4
|
"lib": ["ESNext", "DOM"],
|
|
5
5
|
"target": "ESNext",
|
|
6
|
-
"module": "
|
|
6
|
+
"module": "Preserve",
|
|
7
|
+
"moduleDetection": "force",
|
|
7
8
|
"jsx": "react-jsx",
|
|
9
|
+
"allowJs": true,
|
|
8
10
|
|
|
9
11
|
// Bundler mode
|
|
10
|
-
"paths": {
|
|
11
|
-
"@/*": ["./src/*"]
|
|
12
|
-
},
|
|
13
12
|
"jsxImportSource": "@opentui/react",
|
|
14
13
|
"moduleResolution": "bundler",
|
|
15
14
|
"allowImportingTsExtensions": true,
|
package/dist/chunk-1gb5qxz9.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
// @bun
|