terse-cli 0.6.1 → 0.6.3
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 +18 -14
- package/dist/actorDevUi.d.ts +12 -0
- package/dist/actorDevUi.d.ts.map +1 -0
- package/dist/actorDevUi.js +76 -0
- package/dist/actorDevUi.js.map +1 -0
- package/dist/commands/actor.d.ts +2 -1
- package/dist/commands/actor.d.ts.map +1 -1
- package/dist/commands/actor.js +39 -35
- package/dist/commands/actor.js.map +1 -1
- package/dist/commands/actorGenerate.d.ts.map +1 -1
- package/dist/commands/actorGenerate.js +38 -23
- package/dist/commands/actorGenerate.js.map +1 -1
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +2 -0
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +26 -31
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/install.d.ts.map +1 -1
- package/dist/commands/install.js +5 -63
- package/dist/commands/install.js.map +1 -1
- package/dist/index.js +15 -477
- package/dist/index.js.map +1 -1
- package/dist/localActors.d.ts.map +1 -1
- package/dist/localActors.js +4 -3
- package/dist/localActors.js.map +1 -1
- package/dist/productFeatures.d.ts +5 -0
- package/dist/productFeatures.d.ts.map +1 -0
- package/dist/productFeatures.js +6 -0
- package/dist/productFeatures.js.map +1 -0
- package/dist/projectActorTools.d.ts +5 -0
- package/dist/projectActorTools.d.ts.map +1 -0
- package/dist/projectActorTools.js +34 -0
- package/dist/projectActorTools.js.map +1 -0
- package/dist/providers/typescript/actorCodegen.d.ts.map +1 -1
- package/dist/providers/typescript/actorCodegen.js +16 -11
- package/dist/providers/typescript/actorCodegen.js.map +1 -1
- package/dist/providers/typescript/actorSources.d.ts +4 -2
- package/dist/providers/typescript/actorSources.d.ts.map +1 -1
- package/dist/providers/typescript/actorSources.js +14 -6
- package/dist/providers/typescript/actorSources.js.map +1 -1
- package/package.json +5 -4
package/dist/commands/init.js
CHANGED
|
@@ -2,21 +2,18 @@ import { intro, log, outro } from "@clack/prompts";
|
|
|
2
2
|
import chalk from "chalk";
|
|
3
3
|
import fs from "node:fs";
|
|
4
4
|
import path from "node:path";
|
|
5
|
-
import { CliError
|
|
6
|
-
import { isNonInteractive } from "../cliHelpers.js";
|
|
5
|
+
import { CliError } from "../cliError.js";
|
|
7
6
|
import { createSpinner } from "../cliUi.js";
|
|
7
|
+
import { actorScaffoldFiles } from "../productFeatures.js";
|
|
8
8
|
import { PROJECT_CONFIG_FILENAME, createRemoteProject, writeProjectConfig } from "../projectConfig.js";
|
|
9
9
|
import { fetchSdkVersion } from "../providers/fetchSdkVersion.js";
|
|
10
10
|
import { resolveProvider } from "../providers/resolveProvider.js";
|
|
11
11
|
import { renderTemplate } from "../providers/templateUtils.js";
|
|
12
12
|
import { loginAndPersist } from "./auth.js";
|
|
13
|
-
import { generate } from "./generate.js";
|
|
14
|
-
import { listAndPromptIntegrations } from "./integrate.js";
|
|
15
13
|
export async function init(projectName, provider = resolveProvider({ command: "init", language: "ts" }), opts) {
|
|
16
|
-
const nonInteractive = isNonInteractive(opts);
|
|
17
14
|
if (!projectName && fs.existsSync(path.join(process.cwd(), "package.json"))) {
|
|
18
15
|
throw new CliError("init_in_existing_project", "Detected an existing npm project in this directory.", {
|
|
19
|
-
detail: `terse init is for scaffolding new projects only.
|
|
16
|
+
detail: `terse init is for scaffolding new projects only. Run "terse init <project-name>" to create a separate project directory.`
|
|
20
17
|
});
|
|
21
18
|
}
|
|
22
19
|
intro("terse init");
|
|
@@ -39,7 +36,7 @@ export async function init(projectName, provider = resolveProvider({ command: "i
|
|
|
39
36
|
}
|
|
40
37
|
fs.mkdirSync(path.join(targetDir, "src"), { recursive: true });
|
|
41
38
|
const templateContext = provider.buildInitTemplateContext(resolvedName, sdkVersion);
|
|
42
|
-
const scaffoldFiles = provider.scaffoldFiles();
|
|
39
|
+
const scaffoldFiles = actorScaffoldFiles(provider.scaffoldFiles());
|
|
43
40
|
for (const file of scaffoldFiles) {
|
|
44
41
|
const rendered = renderTemplate(file.template, templateContext);
|
|
45
42
|
const outputPath = path.join(targetDir, file.output);
|
|
@@ -69,30 +66,28 @@ export async function init(projectName, provider = resolveProvider({ command: "i
|
|
|
69
66
|
log.warn(`You'll need to create a ${PROJECT_CONFIG_FILENAME} manually before running terse deploy.`);
|
|
70
67
|
}
|
|
71
68
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
});
|
|
95
|
-
console.log("");
|
|
69
|
+
const accent = chalk.hex("#04AB62");
|
|
70
|
+
outro(accent.bold("Your actors start here."));
|
|
71
|
+
console.log([
|
|
72
|
+
"",
|
|
73
|
+
` ${chalk.bold("Make it yours")}`,
|
|
74
|
+
` Edit ${chalk.cyan("src/actor.ts")} to define your actors.`,
|
|
75
|
+
"",
|
|
76
|
+
` ${chalk.bold("Run locally")}`,
|
|
77
|
+
...(projectName ? [` ${accent(`cd ${projectName}`)}`] : []),
|
|
78
|
+
` ${accent("terse actor dev")}`,
|
|
79
|
+
"",
|
|
80
|
+
` ${chalk.bold("Connect your app")}`,
|
|
81
|
+
" Keep the actor server running. In another terminal,",
|
|
82
|
+
" open your application project, then run:",
|
|
83
|
+
` ${accent("terse actor generate")}`,
|
|
84
|
+
"",
|
|
85
|
+
` ${chalk.bold("Deploy when you're ready")}`,
|
|
86
|
+
" From this actor project:",
|
|
87
|
+
...(!isAuthenticated ? [` ${chalk.dim("Sign in first:")}`, ` ${accent("terse auth login")}`] : []),
|
|
88
|
+
` ${accent("terse deploy")}`,
|
|
89
|
+
""
|
|
90
|
+
].join("\n"));
|
|
96
91
|
}
|
|
97
92
|
catch (err) {
|
|
98
93
|
if (createdTargetDir) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAClD,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,kBAAkB,EAAoB,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,kBAAkB,EAAoB,MAAM,kBAAkB,CAAA;AAMvE,wBAAsB,OAAO,CAAC,IAAI,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CActE;AAED,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAI5C"}
|
package/dist/commands/install.js
CHANGED
|
@@ -9,36 +9,25 @@ import { readApiKey } from "../api.js";
|
|
|
9
9
|
import { CliError } from "../cliError.js";
|
|
10
10
|
import { isNonInteractive } from "../cliHelpers.js";
|
|
11
11
|
import { loginAndPersist } from "./auth.js";
|
|
12
|
-
const REPO_SLUG = "TerseAI/Terse";
|
|
13
|
-
const MARKETPLACE_URL = `https://raw.githubusercontent.com/${REPO_SLUG}/main/.claude-plugin/marketplace.json`;
|
|
14
12
|
const CLAUDE_PERMISSION_RULE = "Bash(terse:*)";
|
|
15
13
|
export async function install(opts) {
|
|
16
14
|
intro("terse install");
|
|
17
15
|
await ensureGlobalCli(opts);
|
|
18
|
-
const bundle = await fetchSkillBundle();
|
|
19
|
-
await installSkillBundle(bundle);
|
|
20
|
-
await offerClaudePermissions(opts);
|
|
21
16
|
await ensureAuth(opts);
|
|
17
|
+
await offerClaudePermissions(opts);
|
|
22
18
|
const installationMessage = [
|
|
23
19
|
chalk.green("Terse installation is complete."),
|
|
24
20
|
"",
|
|
25
|
-
|
|
26
|
-
""
|
|
27
|
-
|
|
28
|
-
`2. Run this slash command: ${chalk.green("/terse-create <describe your workflow>")}`,
|
|
29
|
-
"",
|
|
30
|
-
chalk.bold("OR"),
|
|
31
|
-
"",
|
|
32
|
-
`Create a project from the CLI: ${chalk.green("terse init <projectName>")}`
|
|
21
|
+
`Create your first actor project: ${chalk.green("terse init <projectName>")}`,
|
|
22
|
+
`Run actors locally: ${chalk.green("terse actor dev")}`,
|
|
23
|
+
`Deploy your actors: ${chalk.green("terse deploy")}`
|
|
33
24
|
].join("\n");
|
|
34
25
|
outro(installationMessage);
|
|
35
26
|
}
|
|
36
27
|
export async function update() {
|
|
37
28
|
intro("terse update");
|
|
38
29
|
await updateGlobalCli();
|
|
39
|
-
|
|
40
|
-
await updateSkillBundle(bundle);
|
|
41
|
-
outro("Terse CLI and skills are up to date.");
|
|
30
|
+
outro("Terse CLI is up to date.");
|
|
42
31
|
}
|
|
43
32
|
async function ensureGlobalCli(opts) {
|
|
44
33
|
if (!isNonInteractive(opts)) {
|
|
@@ -56,49 +45,6 @@ async function updateGlobalCli() {
|
|
|
56
45
|
log.step("Updating the Terse CLI");
|
|
57
46
|
await runStreaming("npm", ["install", "-g", "terse-cli@latest"]);
|
|
58
47
|
}
|
|
59
|
-
// The official skill set is whatever the plugin marketplace manifest on main
|
|
60
|
-
// declares — the CLI ships no copy of its own, so skill releases and renames
|
|
61
|
-
// propagate to stale CLIs without a CLI release.
|
|
62
|
-
async function fetchSkillBundle() {
|
|
63
|
-
const raw = await fetchJson(MARKETPLACE_URL);
|
|
64
|
-
if (raw === null) {
|
|
65
|
-
throw new CliError("marketplace_unreachable", `Could not fetch the Terse skill list from ${MARKETPLACE_URL}.`, {
|
|
66
|
-
detail: "Check your network connection and try again."
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
const parsed = marketplaceSchema.safeParse(raw);
|
|
70
|
-
if (!parsed.success) {
|
|
71
|
-
throw new CliError("marketplace_malformed", "The published Terse plugin manifest is malformed. Please report this at https://github.com/TerseAI/Terse/issues.");
|
|
72
|
-
}
|
|
73
|
-
const skills = parsed.data.plugins.flatMap(plugin => plugin.skills ?? []).map(skillPath => path.posix.basename(skillPath));
|
|
74
|
-
if (skills.length === 0) {
|
|
75
|
-
throw new CliError("no_skills_published", "The published Terse plugin manifest lists no skills. Please report this at https://github.com/TerseAI/Terse/issues.");
|
|
76
|
-
}
|
|
77
|
-
return { version: parsed.data.metadata?.version ?? "unknown", skills };
|
|
78
|
-
}
|
|
79
|
-
async function fetchJson(url) {
|
|
80
|
-
try {
|
|
81
|
-
const response = await fetch(url, { signal: AbortSignal.timeout(10_000) });
|
|
82
|
-
if (!response.ok)
|
|
83
|
-
return null;
|
|
84
|
-
return await response.json();
|
|
85
|
-
}
|
|
86
|
-
catch {
|
|
87
|
-
return null;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
async function installSkillBundle(bundle) {
|
|
91
|
-
log.step(`Installing Terse skills into your coding agents: ${bundle.skills.join(", ")}`);
|
|
92
|
-
const skillFlags = bundle.skills.flatMap(skill => ["--skill", skill]);
|
|
93
|
-
const command = ["npx", "-y", "skills@latest", "add", REPO_SLUG, "-y", "-g", ...skillFlags];
|
|
94
|
-
await runStreaming(command[0], command.slice(1));
|
|
95
|
-
}
|
|
96
|
-
async function updateSkillBundle(bundle) {
|
|
97
|
-
log.step(`Updating Terse skills in your coding agents: ${bundle.skills.join(", ")}`);
|
|
98
|
-
const skillFlags = bundle.skills.flatMap(skill => ["--skill", skill]);
|
|
99
|
-
const command = ["npx", "-y", "skills@latest", "update", REPO_SLUG, "-y", "-g", ...skillFlags];
|
|
100
|
-
await runStreaming(command[0], command.slice(1));
|
|
101
|
-
}
|
|
102
48
|
async function offerClaudePermissions(opts) {
|
|
103
49
|
const claudeDir = path.join(os.homedir(), ".claude");
|
|
104
50
|
if (!fs.existsSync(claudeDir))
|
|
@@ -177,10 +123,6 @@ function runStreaming(command, args) {
|
|
|
177
123
|
});
|
|
178
124
|
}
|
|
179
125
|
// Types
|
|
180
|
-
const marketplaceSchema = z.looseObject({
|
|
181
|
-
metadata: z.looseObject({ version: z.string().optional() }).optional(),
|
|
182
|
-
plugins: z.array(z.looseObject({ skills: z.array(z.string()).optional() }))
|
|
183
|
-
});
|
|
184
126
|
const claudeSettingsSchema = z.looseObject({
|
|
185
127
|
permissions: z.looseObject({ allow: z.array(z.string()).optional() }).optional()
|
|
186
128
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AACrE,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAsB,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAEvE,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAE3C,MAAM,
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
|