@flowapt/flowiq-cli 0.1.8 → 0.1.9

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 CHANGED
@@ -283,6 +283,11 @@ flowiq agent config <org> --agent <agent_id> --model gpt-5.4-mini
283
283
  `pull` records the agent id in the JSON, so `push` always writes back to the exact
284
284
  agent you pulled from (never "whatever is active now").
285
285
 
286
+ **Filenames:** the active agent saves to `<org-slug>.json`; a non-active agent
287
+ (pulled with `--agent`) saves to `<org-slug>-<agent-slug>.json`. So pulling
288
+ multiple agents from one org produces distinct files that don't overwrite each
289
+ other. (Fixed in 0.1.9 — before that, both used `<org-slug>.json`.)
290
+
286
291
  ### Agent config — `flowiq agent config <organization_id> [flags]`
287
292
 
288
293
  Set an allowlisted set of the active agent's config fields (the prompt-builder
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flowapt/flowiq-cli",
3
- "version": "0.1.8",
3
+ "version": "0.1.9",
4
4
  "description": "Command-line tool for FlowIQ staff: round-trip agent prompts, questionnaires, fine-tuning, pin-board tasks, webhooks, templates, agent-updates, chat exports, and live agent testing without ever touching service-role credentials.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -67,7 +67,12 @@ export async function pull(orgId, opts = {}) {
67
67
  }
68
68
 
69
69
  await fs.mkdir(FT_DIR, { recursive: true });
70
- const slug = slugify(resp.organization_name, resp.organization_id);
70
+ // Non-active agents get an agent-suffixed filename so pulling multiple agents
71
+ // from the same org doesn't clobber each other's working copy.
72
+ const orgSlug = slugify(resp.organization_name, resp.organization_id);
73
+ const slug = resp.is_active === false
74
+ ? `${orgSlug}-${slugify(resp.agent_name, resp.agent_id.slice(0, 8))}`
75
+ : orgSlug;
71
76
  const filePath = path.join(FT_DIR, `${slug}.json`);
72
77
  const overwriting = await fileExists(filePath);
73
78
  await fs.writeFile(filePath, JSON.stringify(resp, null, 2) + "\n", "utf8");
@@ -54,7 +54,13 @@ export async function pull(orgId, opts = {}) {
54
54
  }
55
55
 
56
56
  await fs.mkdir(PROMPTS_DIR, { recursive: true });
57
- const slug = slugify(resp.organization_name, resp.organization_id);
57
+ // Non-active agents get an agent-suffixed filename so pulling multiple agents
58
+ // from the same org doesn't clobber each other's working copy. The active
59
+ // agent keeps the plain <org>.json name (backwards-compatible).
60
+ const orgSlug = slugify(resp.organization_name, resp.organization_id);
61
+ const slug = resp.is_active === false
62
+ ? `${orgSlug}-${slugify(resp.agent_name, resp.agent_id.slice(0, 8))}`
63
+ : orgSlug;
58
64
  const filePath = path.join(PROMPTS_DIR, `${slug}.json`);
59
65
  const overwriting = await fileExists(filePath);
60
66
  await fs.writeFile(filePath, JSON.stringify(resp, null, 2) + "\n", "utf8");
@@ -67,7 +67,12 @@ export async function pull(orgId, opts = {}) {
67
67
  }
68
68
 
69
69
  await fs.mkdir(QS_DIR, { recursive: true });
70
- const slug = slugify(resp.organization_name, resp.organization_id);
70
+ // Non-active agents get an agent-suffixed filename so pulling multiple agents
71
+ // from the same org doesn't clobber each other's working copy.
72
+ const orgSlug = slugify(resp.organization_name, resp.organization_id);
73
+ const slug = resp.is_active === false
74
+ ? `${orgSlug}-${slugify(resp.agent_name, resp.agent_id.slice(0, 8))}`
75
+ : orgSlug;
71
76
  const filePath = path.join(QS_DIR, `${slug}.json`);
72
77
  const overwriting = await fileExists(filePath);
73
78
  await fs.writeFile(filePath, JSON.stringify(resp, null, 2) + "\n", "utf8");