@lumerahq/cli 0.33.0 → 0.33.2
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/dist/{chunk-OQKBXKXW.js → chunk-BCSUKRDA.js} +2 -2
- package/dist/{functions-WUZVDJUP.js → functions-BAJ3PCNO.js} +1 -1
- package/dist/index.js +9 -9
- package/dist/{project-2VFG3J42.js → project-O7ZZQXFN.js} +1 -1
- package/dist/{resources-LQWCEIJT.js → resources-IY3XSYJH.js} +7 -3
- package/package.json +1 -1
- package/templates/default/AGENTS.md +30 -48
- package/templates/default/memories/.gitkeep +0 -0
- package/templates/default/pyproject.toml +1 -1
|
@@ -5,8 +5,8 @@ import { join, resolve } from "path";
|
|
|
5
5
|
import pc from "picocolors";
|
|
6
6
|
|
|
7
7
|
// src/lib/functions-sdk.ts
|
|
8
|
-
var FUNCTIONS_SDK_VERSION_RANGE = ">=0.
|
|
9
|
-
var FUNCTIONS_SDK_COMPATIBILITY_RANGE = ">=0.34.0,<0.
|
|
8
|
+
var FUNCTIONS_SDK_VERSION_RANGE = ">=0.43.0,<0.44.0";
|
|
9
|
+
var FUNCTIONS_SDK_COMPATIBILITY_RANGE = ">=0.34.0,<0.44.0";
|
|
10
10
|
var FUNCTIONS_SDK_REQUIREMENT = `lumera[functions]${FUNCTIONS_SDK_COMPATIBILITY_RANGE}`;
|
|
11
11
|
var DEFAULT_FUNCTIONS_SDK_REQUIREMENT = `lumera[functions]${FUNCTIONS_SDK_VERSION_RANGE}`;
|
|
12
12
|
var RELEASE_SDK_REQUIREMENT = `lumera[release]${FUNCTIONS_SDK_VERSION_RANGE}`;
|
package/dist/index.js
CHANGED
|
@@ -242,25 +242,25 @@ async function main() {
|
|
|
242
242
|
switch (command) {
|
|
243
243
|
// Resource commands
|
|
244
244
|
case "plan":
|
|
245
|
-
await import("./resources-
|
|
245
|
+
await import("./resources-IY3XSYJH.js").then((m) => m.plan(args.slice(1)));
|
|
246
246
|
break;
|
|
247
247
|
case "apply":
|
|
248
|
-
await import("./resources-
|
|
248
|
+
await import("./resources-IY3XSYJH.js").then((m) => m.apply(args.slice(1)));
|
|
249
249
|
break;
|
|
250
250
|
case "pull":
|
|
251
|
-
await import("./resources-
|
|
251
|
+
await import("./resources-IY3XSYJH.js").then((m) => m.pull(args.slice(1)));
|
|
252
252
|
break;
|
|
253
253
|
case "destroy":
|
|
254
|
-
await import("./resources-
|
|
254
|
+
await import("./resources-IY3XSYJH.js").then((m) => m.destroy(args.slice(1)));
|
|
255
255
|
break;
|
|
256
256
|
case "list":
|
|
257
|
-
await import("./resources-
|
|
257
|
+
await import("./resources-IY3XSYJH.js").then((m) => m.list(args.slice(1)));
|
|
258
258
|
break;
|
|
259
259
|
case "show":
|
|
260
|
-
await import("./resources-
|
|
260
|
+
await import("./resources-IY3XSYJH.js").then((m) => m.show(args.slice(1)));
|
|
261
261
|
break;
|
|
262
262
|
case "diff":
|
|
263
|
-
await import("./resources-
|
|
263
|
+
await import("./resources-IY3XSYJH.js").then((m) => m.diff(args.slice(1)));
|
|
264
264
|
break;
|
|
265
265
|
// Development
|
|
266
266
|
case "dev":
|
|
@@ -270,12 +270,12 @@ async function main() {
|
|
|
270
270
|
await import("./run-4XFA5ZDJ.js").then((m) => m.run(args.slice(1)));
|
|
271
271
|
break;
|
|
272
272
|
case "functions":
|
|
273
|
-
await import("./functions-
|
|
273
|
+
await import("./functions-BAJ3PCNO.js").then(
|
|
274
274
|
(m) => m.functions(subcommand, args.slice(2))
|
|
275
275
|
);
|
|
276
276
|
break;
|
|
277
277
|
case "project":
|
|
278
|
-
await import("./project-
|
|
278
|
+
await import("./project-O7ZZQXFN.js").then(
|
|
279
279
|
(m) => m.project(subcommand, args.slice(2))
|
|
280
280
|
);
|
|
281
281
|
break;
|
|
@@ -3387,7 +3387,7 @@ async function planAgents(api, localAgents, projectId, localSourceSkillSlugs = /
|
|
|
3387
3387
|
changes.push({ type: "create", resource: "agent", id: agent.external_id, name: agent.name });
|
|
3388
3388
|
} else {
|
|
3389
3389
|
const diffs = [];
|
|
3390
|
-
if (
|
|
3390
|
+
if (allowedFunctionsChanged(remote.allowed_functions, agent.allowed_functions)) diffs.push("allowed_functions");
|
|
3391
3391
|
if (remote.name !== agent.name) diffs.push("name");
|
|
3392
3392
|
if ((remote.description || "") !== (agent.description || "")) diffs.push("description");
|
|
3393
3393
|
if ((remote.system_prompt || "").trim() !== systemPrompt.trim()) diffs.push("system_prompt");
|
|
@@ -3498,7 +3498,7 @@ async function applyAgents(api, localAgents, projectId, localSourceSkillSlugs =
|
|
|
3498
3498
|
...agent.thinking_level !== void 0 ? { thinking_level: agent.thinking_level } : {},
|
|
3499
3499
|
idle_reap_timeout_seconds: agent.idle_reap_timeout_seconds ?? 0,
|
|
3500
3500
|
skill_ids: skillIds,
|
|
3501
|
-
allowed_functions: agent.allowed_functions
|
|
3501
|
+
...agent.allowed_functions !== void 0 ? { allowed_functions: agent.allowed_functions } : {},
|
|
3502
3502
|
policy_script: policyScript || "",
|
|
3503
3503
|
policy_enabled: agent.policy_enabled || false,
|
|
3504
3504
|
policy_description: agent.policy_description || ""
|
|
@@ -3519,6 +3519,10 @@ async function applyAgents(api, localAgents, projectId, localSourceSkillSlugs =
|
|
|
3519
3519
|
}
|
|
3520
3520
|
return errors;
|
|
3521
3521
|
}
|
|
3522
|
+
function allowedFunctionsChanged(remote, local) {
|
|
3523
|
+
if (local === void 0) return false;
|
|
3524
|
+
return JSON.stringify([...remote ?? []].sort()) !== JSON.stringify([...local].sort());
|
|
3525
|
+
}
|
|
3522
3526
|
async function pullAgents(api, platformDir, filterName, projectId, appName) {
|
|
3523
3527
|
const agentsDir = join2(platformDir, "agents");
|
|
3524
3528
|
mkdirSync(agentsDir, { recursive: true });
|
|
@@ -5025,7 +5029,7 @@ async function diff(args) {
|
|
|
5025
5029
|
console.log(` policy_enabled: ${pc2.red(String(remote.policy_enabled || false))} \u2192 ${pc2.green(String(local.agent.policy_enabled || false))}`);
|
|
5026
5030
|
const promptChanged = (remote.system_prompt || "").trim() !== local.systemPrompt.trim();
|
|
5027
5031
|
const policyChanged = (remote.policy_script || "").trim() !== (local.policyScript || "").trim();
|
|
5028
|
-
const functionsChanged =
|
|
5032
|
+
const functionsChanged = allowedFunctionsChanged(remote.allowed_functions, local.agent.allowed_functions);
|
|
5029
5033
|
if (functionsChanged) console.log(` allowed_functions: ${JSON.stringify(remote.allowed_functions ?? [])} \u2192 ${JSON.stringify(local.agent.allowed_functions ?? [])}`);
|
|
5030
5034
|
const thinkingLevelChanged = local.agent.thinking_level !== void 0 && (remote.thinking_level || "") !== local.agent.thinking_level;
|
|
5031
5035
|
if (!functionsChanged && !promptChanged && !policyChanged && !thinkingLevelChanged && remote.name === local.agent.name && (remote.description || "") === (local.agent.description || "") && (remote.model || "") === (local.agent.model || "") && (remote.idle_reap_timeout_seconds ?? 0) === (local.agent.idle_reap_timeout_seconds ?? 0) && (remote.policy_enabled || false) === (local.agent.policy_enabled || false)) {
|
package/package.json
CHANGED
|
@@ -1,56 +1,38 @@
|
|
|
1
1
|
# {{projectTitle}}
|
|
2
2
|
|
|
3
|
-
> Status: new project — nothing built yet.
|
|
4
|
-
|
|
5
|
-
<!--
|
|
6
|
-
AGENT CONTRACT — keep this file true.
|
|
7
|
-
This is the project's durable memory, shared by every coding agent that works
|
|
8
|
-
here. It records what cannot be re-derived from the code: why things are the
|
|
9
|
-
way they are, what the business needs, what must not break.
|
|
10
|
-
- Update it in the same turn as the change that makes it stale.
|
|
11
|
-
- Small focused edits; delete stale lines rather than appending duplicates.
|
|
12
|
-
- Leave a section empty rather than padding it.
|
|
13
|
-
- Keep this file concise and always under 100 KB. Before an update would cross
|
|
14
|
-
that limit—or if the file is already over it—compact it in the same turn by
|
|
15
|
-
removing stale, superseded, duplicated, transient, and re-derivable detail
|
|
16
|
-
while preserving user-written notes.
|
|
17
|
-
- Do NOT put here: platform documentation (skills and prompts carry that),
|
|
18
|
-
code inventories, secrets/credentials, or transient chat summaries.
|
|
19
|
-
-->
|
|
20
|
-
|
|
21
3
|
## What this is
|
|
22
4
|
|
|
23
|
-
One paragraph: the problem this solves, for whom, and its current shape
|
|
5
|
+
One short paragraph: the problem this solves, for whom, and its current shape
|
|
24
6
|
(app / automation / agent / one-off analysis). Update when scope changes.
|
|
25
7
|
|
|
26
|
-
## Business context
|
|
27
|
-
|
|
28
|
-
- Who uses it, when, and for what workflow (roles, cadence — e.g. month-end)
|
|
29
|
-
- Domain terms with tenant-specific meaning
|
|
30
|
-
- Source-of-truth data and how it arrives (uploads, mailbox, webhooks, integrations)
|
|
31
|
-
|
|
32
|
-
## Data
|
|
33
|
-
|
|
34
|
-
- What each collection represents; non-obvious field/status semantics
|
|
35
|
-
- Identifiers that map to external systems, and their formats
|
|
36
|
-
|
|
37
|
-
## Decisions
|
|
38
|
-
|
|
39
|
-
- YYYY-MM-DD — decision — why.
|
|
40
|
-
|
|
41
8
|
## Working agreements
|
|
42
9
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
##
|
|
46
|
-
|
|
47
|
-
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
-
|
|
10
|
+
Keep critical safety rules and user preferences that apply to every task here.
|
|
11
|
+
|
|
12
|
+
## Managing memory
|
|
13
|
+
|
|
14
|
+
- Keep this file short: ideally a few KB, always under 10 KB. Put detailed
|
|
15
|
+
knowledge in `memories/<topic>.md` and link it from the index below.
|
|
16
|
+
- Save information that helps future agents: useful context, user preferences,
|
|
17
|
+
important decisions and their reasons, proven approaches, and lessons from
|
|
18
|
+
mistakes. Prefer knowledge that saves the user from repeating instructions or
|
|
19
|
+
future agents from rediscovering hard-won solutions. If there is nothing worth
|
|
20
|
+
remembering, do not update memory.
|
|
21
|
+
- Distill what matters, not everything that happened. Keep routine progress and
|
|
22
|
+
temporary task state in the conversation.
|
|
23
|
+
- Include useful paths, commands, and verification steps when they make a lesson
|
|
24
|
+
easier to reuse. For recurring problems, capture the symptom, cause, and proven
|
|
25
|
+
fix. Be honest about uncertainty. Do not turn a one-off request into a standing
|
|
26
|
+
rule. Check changeable facts against their source.
|
|
27
|
+
- Read only relevant topics when needed; search if necessary. Do not load every
|
|
28
|
+
topic or use automatic file imports.
|
|
29
|
+
- Organize by topic, not turn or date. Update existing notes, merge duplicates,
|
|
30
|
+
and remove outdated material. Keep memory files in version control and check
|
|
31
|
+
this file's size and links after changes.
|
|
32
|
+
- Keep secrets out of memory. Link to source documents rather than copying them.
|
|
33
|
+
Data the app needs belongs in collections or app configuration.
|
|
34
|
+
|
|
35
|
+
## Memory index
|
|
36
|
+
|
|
37
|
+
Add one relative Markdown link with a one-line description per topic after
|
|
38
|
+
creating the file. No topics recorded yet.
|
|
File without changes
|