@sequenceholdings/studio-cli 0.1.18 → 0.1.21

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/main.js CHANGED
@@ -5,6 +5,7 @@
5
5
  * seq-studio process <sub> manage Lattice processes
6
6
  * seq-studio artifact <sub> manage Artifact Studio apps
7
7
  * seq-studio functions <sub> manage Managed Functions
8
+ * seq-studio agents <sub> manage typed agent definitions
8
9
  * seq-studio secrets <sub> manage org-owned Managed Secrets
9
10
  * seq-studio repos <sub> manage platform git-service repos
10
11
  * seq-studio pipeline <sub> author + validate Data Pipelines stage specs
@@ -23,6 +24,7 @@ const TOP_LEVEL_USAGE = `usage:
23
24
  seq-studio process <sub> [args] lint | plan | apply | test | simulate | bundle | init
24
25
  seq-studio artifact <sub> [args] init | build | plan | deploy | dev | list | show | pull | promote | rollback
25
26
  seq-studio functions <sub> [args] init | build | deploy | list | show | logs | promote | rollback | delete
27
+ seq-studio agents <sub> [args] init | validate | plan | apply | list | show
26
28
  seq-studio secrets <sub> [args] create | set | list | attach | detach | apply
27
29
  seq-studio repos <sub> [args] list | namespaces | show | create | clone | pull | delete
28
30
  seq-studio pipeline <sub> [args] init | validate — Data Pipelines stage specs
@@ -73,6 +75,10 @@ export async function run(argv = process.argv.slice(2)) {
73
75
  const { runFunctionsCommand } = await import('./functions/commands.js');
74
76
  return runFunctionsCommand(sub, parseArgs(rest));
75
77
  }
78
+ case 'agents': {
79
+ const { runAgentsCommand } = await import('./agents/commands.js');
80
+ return runAgentsCommand(sub, parseArgs(rest));
81
+ }
76
82
  case 'secrets': {
77
83
  const { runSecretsCommand } = await import('./secrets/commands.js');
78
84
  return runSecretsCommand(sub, parseArgs(rest));
@@ -9,14 +9,19 @@ import { getAccessToken, tryGetAccessToken } from '../auth.js';
9
9
  import { resolveEnvWithDiscovery } from '../config.js';
10
10
  import { normalizeShortEnvFlag, readEnvFromArgv } from '../env-flags.js';
11
11
  import { REQUIRE_EXPLICIT_ENV_MESSAGE } from '../env-flags.js';
12
- /** ORM subcommands that talk to Atlas — must not silently target `local`. */
12
+ /**
13
+ * ORM subcommands that talk to Atlas — must not silently target `local`.
14
+ * `init`, `generate`, `validate`, `diff`, and `migrate-from-yaml` are offline.
15
+ */
13
16
  const ORM_NETWORK_SUBS = new Set(['plan', 'apply']);
14
17
  const ORM_USAGE = `usage:
15
- seq-studio orm init <dir> scaffold a namespace directory
16
- seq-studio orm validate [dir] parse + validate definitions and verify committed migrations are in sync
17
- seq-studio orm plan [dir] -e <env> compile definitions and diff against the registry
18
- seq-studio orm apply [dir] -e <env> author the migration, register, apply, and refresh types.gen.ts (the everyday command)
19
- seq-studio orm diff [dir] write/verify the committed migration standalone (--check is the offline CI gate; --allow-destructive consents)
18
+ seq-studio orm init <dir> scaffold a namespace package (v2: TypeScript schema + GraphQL documents)
19
+ seq-studio orm generate [dir] write schema.graphql + operations.manifest.json + typePolicies.gen.ts (offline; runs consumer codegen when codegen.ts is present)
20
+ seq-studio orm validate [dir] parse + validate definitions and verify committed migrations are in sync
21
+ seq-studio orm plan [dir] -e <env> compile definitions and diff against the registry
22
+ seq-studio orm apply [dir] -e <env> author the migration, register, apply, and refresh the generated outputs (the everyday command)
23
+ seq-studio orm diff [dir] write/verify the committed migration standalone (--check is the offline CI gate; --allow-destructive consents; --rebase records a v1 -> v2 conversion)
24
+ seq-studio orm migrate-from-yaml <dir> convert a v1 YAML namespace to the v2 TypeScript format (offline; migrations/ preserved)
20
25
 
21
26
  Environments: see \`seq-studio envs list\` (built-in: local; more are
22
27
  discovered after you authenticate).
@@ -190,8 +190,9 @@ function serializeNodeMetadata(node) {
190
190
  const human = node;
191
191
  const meta = {
192
192
  metadata: human.metadata ?? {},
193
- timeout: human.timeout ?? '7d',
194
193
  };
194
+ if (human.timeout !== undefined)
195
+ meta.timeout = human.timeout;
195
196
  if (human.on_timeout_edge_id)
196
197
  meta.on_timeout_edge_id = human.on_timeout_edge_id;
197
198
  if (human.completeLabel)
@@ -549,6 +549,14 @@ function lintHuman(processId, node, errors, warnings) {
549
549
  }
550
550
  }
551
551
  if (node.on_timeout_edge_id) {
552
+ if (node.timeout === undefined) {
553
+ errors.push({
554
+ process_id: processId,
555
+ node_id: node.id,
556
+ message: `on_timeout_edge_id "${node.on_timeout_edge_id}" requires timeout — ` +
557
+ `omit on_timeout_edge_id for an indefinite wait, or set timeout to enable the timeout edge`,
558
+ });
559
+ }
552
560
  const ok = node.outgoing_edges.some((e) => e.id === node.on_timeout_edge_id);
553
561
  if (!ok) {
554
562
  errors.push({
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@sequenceholdings/studio-cli",
3
- "version": "0.1.18",
4
- "description": "Unified Sequence Studio CLI — `seq-studio process` (Lattice), `seq-studio artifact` (Artifact Studio), `seq-studio functions` / `secrets`, `seq-studio repos` (platform git-service), and `seq-studio auth pat` (git-service PATs). Includes Auth0 browser login shared with seqapi.",
3
+ "version": "0.1.21",
4
+ "description": "Unified Sequence Studio CLI — `seq-studio agents` (typed agent definitions), `seq-studio process` (Lattice), `seq-studio artifact` (Artifact Studio), `seq-studio functions` / `secrets`, `seq-studio repos` (platform git-service), and `seq-studio auth pat` (git-service PATs). Includes Auth0 browser login shared with seqapi.",
5
5
  "license": "UNLICENSED",
6
6
  "repository": {
7
7
  "type": "git",
@@ -40,12 +40,13 @@
40
40
  "smol-toml": "^1.4.2",
41
41
  "tsx": "^4.20.3",
42
42
  "zod": "^4.1.13",
43
- "@sequenceholdings/artifact-studio": "0.1.15",
43
+ "@sequenceholdings/agent-spec": "0.1.0",
44
+ "@sequenceholdings/artifact-studio": "0.2.0",
44
45
  "@sequenceholdings/lattice": "0.1.2"
45
46
  },
46
47
  "peerDependencies": {
47
- "@sequenceholdings/pipeline-spec": "0.1.0",
48
- "@sequenceholdings/orm": "0.1.1"
48
+ "@sequenceholdings/orm": "0.1.2",
49
+ "@sequenceholdings/pipeline-spec": "0.1.0"
49
50
  },
50
51
  "peerDependenciesMeta": {
51
52
  "@sequenceholdings/orm": {
@@ -60,7 +61,7 @@
60
61
  "@types/node": "^22.0.0",
61
62
  "typescript": "^5.6.0",
62
63
  "vitest": "^4.1.5",
63
- "@sequenceholdings/orm": "0.1.1",
64
+ "@sequenceholdings/orm": "0.1.2",
64
65
  "@sequenceholdings/pipeline-spec": "0.1.0"
65
66
  },
66
67
  "engines": {
@@ -70,6 +71,7 @@
70
71
  "studio",
71
72
  "sequence",
72
73
  "lattice",
74
+ "agents",
73
75
  "process",
74
76
  "artifact",
75
77
  "cli"