@oxgeneral/orch 1.0.0 → 1.0.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.
Files changed (27) hide show
  1. package/dist/{App-GJVTVGRU.js → App-YQOT4LBE.js} +13 -3
  2. package/dist/{chunk-UIJYU3J7.js → chunk-INZ4O2RI.js} +2 -2
  3. package/dist/{chunk-UIJYU3J7.js.map → chunk-INZ4O2RI.js.map} +1 -1
  4. package/dist/{chunk-LV6GDBBI.js → chunk-ITLJKMTP.js} +1 -1
  5. package/dist/{chunk-GBXUNDKN.js → chunk-O2OQCSBL.js} +26 -11
  6. package/dist/chunk-O2OQCSBL.js.map +1 -0
  7. package/dist/cli.js +32 -18
  8. package/dist/{container-LUWGNBSS.js → container-IZZVO4AH.js} +4 -4
  9. package/dist/{doctor-XSGQSD57.js → doctor-SETNAS4S.js} +1 -1
  10. package/dist/{goal-FMYYN2FR.js → goal-C6YGSX5D.js} +5 -0
  11. package/dist/index.d.ts +0 -6
  12. package/dist/index.js +6 -6
  13. package/dist/index.js.map +1 -1
  14. package/dist/{init-JU343RXK.js → init-SWAAXP5H.js} +36 -2
  15. package/dist/{orchestrator-QNAD7MFH.js → orchestrator-O6MFMATT.js} +24 -9
  16. package/dist/orchestrator-X2CWGFCL.js +5 -0
  17. package/dist/{orchestrator-IYWBVA7J.js.map → orchestrator-X2CWGFCL.js.map} +1 -1
  18. package/dist/org-JSMMBZHI.js +249 -0
  19. package/dist/{task-3O2OFSP6.js → task-XNYZHPCS.js} +1 -1
  20. package/dist/{tui-LN5XHSQY.js → tui-JW3DOOKH.js} +1 -1
  21. package/dist/{workspace-manager-EVD67GCG.js → workspace-manager-2SFPKPLZ.js} +3 -3
  22. package/dist/{workspace-manager-EVD67GCG.js.map → workspace-manager-2SFPKPLZ.js.map} +1 -1
  23. package/dist/{workspace-manager-JM6U7JOH.js → workspace-manager-ESPU7WOH.js} +1 -1
  24. package/package.json +13 -10
  25. package/readme.md +207 -151
  26. package/dist/chunk-GBXUNDKN.js.map +0 -1
  27. package/dist/orchestrator-IYWBVA7J.js +0 -5
package/dist/cli.js CHANGED
@@ -1,7 +1,8 @@
1
1
  #!/usr/bin/env node
2
- import { findProjectRoot } from './chunk-LV6GDBBI.js';
2
+ import { pathExists, ORCHESTRY_DIR, findProjectRoot } from './chunk-ITLJKMTP.js';
3
3
  import { setAsciiMode, setNoColor, printError } from './chunk-7X2GI5OV.js';
4
4
  import { OrchestryError, NotInitializedError } from './chunk-2C2TFQ7K.js';
5
+ import path from 'path';
5
6
  import { Command } from 'commander';
6
7
 
7
8
  // src/cli/context.ts
@@ -20,7 +21,7 @@ function createContext(opts) {
20
21
  // src/bin/cli.ts
21
22
  var LIGHT_COMMANDS = {
22
23
  task: async (p, c) => {
23
- const m = await import('./task-3O2OFSP6.js');
24
+ const m = await import('./task-XNYZHPCS.js');
24
25
  m.registerTaskCommand(p, c);
25
26
  },
26
27
  agent: async (p, c) => {
@@ -48,12 +49,16 @@ var LIGHT_COMMANDS = {
48
49
  m.registerMsgCommand(p, c);
49
50
  },
50
51
  goal: async (p, c) => {
51
- const m = await import('./goal-FMYYN2FR.js');
52
+ const m = await import('./goal-C6YGSX5D.js');
52
53
  m.registerGoalCommand(p, c);
53
54
  },
54
55
  team: async (p, c) => {
55
56
  const m = await import('./team-PFLP4PPL.js');
56
57
  m.registerTeamCommand(p, c);
58
+ },
59
+ org: async (p, c) => {
60
+ const m = await import('./org-JSMMBZHI.js');
61
+ m.registerOrgCommand(p, c);
57
62
  }
58
63
  };
59
64
  var FULL_COMMANDS = {
@@ -62,16 +67,16 @@ var FULL_COMMANDS = {
62
67
  m.registerRunCommand(p, c);
63
68
  },
64
69
  doctor: async (p, c) => {
65
- const m = await import('./doctor-XSGQSD57.js');
70
+ const m = await import('./doctor-SETNAS4S.js');
66
71
  m.registerDoctorCommand(p, c);
67
72
  },
68
73
  tui: async (p, c) => {
69
- const m = await import('./tui-LN5XHSQY.js');
74
+ const m = await import('./tui-JW3DOOKH.js');
70
75
  m.registerTuiCommand(p, c);
71
76
  }
72
77
  };
73
78
  var program = new Command();
74
- program.name("orchestry").description("Agents Organizations \u2014 CLI orchestrator for AI agents").version("1.0.0").option("--json", "Output as JSON").option("--quiet", "Minimal output (IDs only)").option("--no-color", "Disable colors").option("--ascii", "ASCII-only output (no Unicode)").hook("preAction", async (thisCommand) => {
79
+ program.name("orchestry").description("Agents Organizations \u2014 CLI orchestrator for AI agents").version("1.0.2").option("--json", "Output as JSON").option("--quiet", "Minimal output (IDs only)").option("--no-color", "Disable colors").option("--ascii", "ASCII-only output (no Unicode)").hook("preAction", async (thisCommand) => {
75
80
  const opts = thisCommand.opts();
76
81
  if (opts.ascii) setAsciiMode(true);
77
82
  if (opts.color === false) setNoColor(true);
@@ -86,6 +91,7 @@ var COMMAND_STUBS = [
86
91
  ["msg", "Inter-agent messaging"],
87
92
  ["goal", "Manage goals"],
88
93
  ["team", "Manage teams"],
94
+ ["org", "Pre-built AI companies"],
89
95
  ["run", "Run tasks"],
90
96
  ["doctor", "Check adapters and dependencies"],
91
97
  ["tui", "Launch TUI dashboard"],
@@ -113,14 +119,30 @@ async function main() {
113
119
  return;
114
120
  }
115
121
  if (sub === "init") {
116
- const { registerInitCommand } = await import('./init-JU343RXK.js');
122
+ const { registerInitCommand } = await import('./init-SWAAXP5H.js');
117
123
  registerInitCommand(program);
118
124
  } else if (sub === "update") {
119
125
  const { registerUpdateCommand } = await import('./update-YLP7FPNY.js');
120
126
  registerUpdateCommand(program);
121
127
  }
128
+ const isBareOrch = process.argv.length <= 2;
129
+ if (isBareOrch && !await pathExists(path.join(process.cwd(), ORCHESTRY_DIR))) {
130
+ const { runInit } = await import('./init-SWAAXP5H.js');
131
+ await runInit();
132
+ const freshContext = createContext({
133
+ json: globalOpts.json,
134
+ quiet: globalOpts.quiet,
135
+ noColor: globalOpts.color === false,
136
+ ascii: globalOpts.ascii
137
+ });
138
+ const { buildFullContainer: buildFullContainer2 } = await import('./container-IZZVO4AH.js');
139
+ const freshContainer = await buildFullContainer2(freshContext);
140
+ await FULL_COMMANDS["tui"](program, freshContainer);
141
+ await program.parseAsync([...process.argv, "tui"]);
142
+ return;
143
+ }
122
144
  const needsFull = !sub || sub in FULL_COMMANDS;
123
- const { buildFullContainer, buildLightContainer } = await import('./container-LUWGNBSS.js');
145
+ const { buildFullContainer, buildLightContainer } = await import('./container-IZZVO4AH.js');
124
146
  try {
125
147
  if (needsFull) {
126
148
  const container = await buildFullContainer(context);
@@ -150,17 +172,9 @@ async function main() {
150
172
  } catch (err) {
151
173
  if (err instanceof NotInitializedError) {
152
174
  if (sub === "doctor") {
153
- const { registerDoctorCommand } = await import('./doctor-XSGQSD57.js');
175
+ const { registerDoctorCommand } = await import('./doctor-SETNAS4S.js');
154
176
  registerDoctorCommand(program);
155
177
  }
156
- if (process.argv.length <= 2) {
157
- const { runInit } = await import('./init-JU343RXK.js');
158
- await runInit();
159
- const freshContainer = await buildFullContainer(context);
160
- await FULL_COMMANDS["tui"](program, freshContainer);
161
- await program.parseAsync([...process.argv, "tui"]);
162
- return;
163
- }
164
178
  if (sub === "init" || sub === "doctor" || sub === "update") {
165
179
  await program.parseAsync(process.argv);
166
180
  return;
@@ -170,7 +184,7 @@ async function main() {
170
184
  }
171
185
  throw err;
172
186
  }
173
- if (process.argv.length <= 2) {
187
+ if (isBareOrch) {
174
188
  process.argv.push("tui");
175
189
  }
176
190
  let updateMod;
@@ -3,7 +3,7 @@ import { DEFAULT_CONFIG } from './chunk-I3SMISEF.js';
3
3
  import { isGoalTerminal, GOAL_STATUS_ORDER } from './chunk-HXYAZGLP.js';
4
4
  import { canTransition, isTerminal } from './chunk-U2VDNUZL.js';
5
5
  import { AUTONOMOUS_LABEL } from './chunk-PNE6LQRF.js';
6
- import { Paths, readYaml, writeYaml, ensureDir, listFiles, writeJson, readJson, appendJsonl, readJsonl, readJsonlTail, pathExists } from './chunk-LV6GDBBI.js';
6
+ import { Paths, readYaml, writeYaml, ensureDir, listFiles, writeJson, readJson, appendJsonl, readJsonl, readJsonlTail, pathExists } from './chunk-ITLJKMTP.js';
7
7
  import { InvalidArgumentsError, TeamNotFoundError, GoalNotFoundError, AgentNotFoundError, TaskNotFoundError, InvalidTransitionError } from './chunk-2C2TFQ7K.js';
8
8
  import fs7, { mkdir } from 'fs/promises';
9
9
  import { createReadStream } from 'fs';
@@ -1062,7 +1062,7 @@ var RunService = class {
1062
1062
  const error = failedRun.error ?? "Unknown error";
1063
1063
  let output = "";
1064
1064
  try {
1065
- const events = await this.runStore.readEvents(failedRun.id);
1065
+ const events = await this.runStore.readEventsTail(failedRun.id, 50);
1066
1066
  output = events.filter((e) => e.type === "agent_output" || e.type === "error").map((e) => typeof e.data === "string" ? e.data : JSON.stringify(e.data)).join("\n");
1067
1067
  } catch {
1068
1068
  }
@@ -1540,9 +1540,9 @@ async function buildFullContainer(context) {
1540
1540
  import('./cursor-622RBRHH.js'),
1541
1541
  import('./shell-DVFHHYAZ.js'),
1542
1542
  import('./opencode-WOR53TSC.js'),
1543
- import('./workspace-manager-JM6U7JOH.js'),
1543
+ import('./workspace-manager-ESPU7WOH.js'),
1544
1544
  import('./template-engine-AWIS56BL.js'),
1545
- import('./orchestrator-QNAD7MFH.js'),
1545
+ import('./orchestrator-O6MFMATT.js'),
1546
1546
  import('./doctor-service-TPOMFAIG.js')
1547
1547
  ]);
1548
1548
  const processManager = new ProcessManager();
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { DoctorService } from './chunk-K6DMQERQ.js';
3
- import { Paths } from './chunk-LV6GDBBI.js';
3
+ import { Paths } from './chunk-ITLJKMTP.js';
4
4
  import { amber, getIcon, dim } from './chunk-7X2GI5OV.js';
5
5
  import { AdapterRegistry } from './chunk-45K2XID7.js';
6
6
  import { ClaudeAdapter } from './chunk-4IFIOMCW.js';
@@ -28,6 +28,11 @@ function registerGoalCommand(program, container) {
28
28
  console.log(g.id);
29
29
  } else {
30
30
  printSuccess(`Created goal "${g.title}" (${g.id})`);
31
+ console.log();
32
+ console.log(` ${dim("Tips for better results:")}`);
33
+ console.log(` ${dim("\u2022")} Be specific: ${dim('"Implement OAuth2 with Google" > "Add auth"')}`);
34
+ console.log(` ${dim("\u2022")} Add ${dim("--description")} with success criteria and constraints`);
35
+ console.log(` ${dim("\u2022")} Use ${dim("--assignee")} to focus a specific agent on this goal`);
31
36
  }
32
37
  });
33
38
  goal.command("list").alias("ls").description("List all goals").option("--status <status>", "Filter by status").action(async (opts) => {
package/dist/index.d.ts CHANGED
@@ -704,12 +704,6 @@ interface ITeamStore {
704
704
  delete(id: string): Promise<void>;
705
705
  }
706
706
 
707
- /**
708
- * Path resolution for .orchestry/ directory.
709
- *
710
- * All path construction goes through this module.
711
- * Validates initialization state and sanitizes identifiers.
712
- */
713
707
  declare class Paths {
714
708
  private readonly projectRoot;
715
709
  constructor(projectRoot: string);
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
- import { ensureDir, Paths, readYaml, writeYaml, listFiles, writeJson, readJson, appendJsonl, readJsonl, readJsonlTail, pathExists } from './chunk-UIJYU3J7.js';
2
- import { canTransition, isTerminal } from './chunk-GBXUNDKN.js';
3
- export { Orchestrator, canTransition, isBlocked, isDispatchable, isTerminal, resolveFailureStatus } from './chunk-GBXUNDKN.js';
1
+ import { ensureDir, Paths, readYaml, writeYaml, listFiles, writeJson, readJson, appendJsonl, readJsonl, readJsonlTail, pathExists } from './chunk-INZ4O2RI.js';
2
+ import { canTransition, isTerminal } from './chunk-O2OQCSBL.js';
3
+ export { Orchestrator, canTransition, isBlocked, isDispatchable, isTerminal, resolveFailureStatus } from './chunk-O2OQCSBL.js';
4
4
  import { AUTONOMOUS_LABEL } from './chunk-VG4465AG.js';
5
5
  export { AdapterRegistry } from './chunk-6DWHQPTE.js';
6
6
  export { createTokenUsage } from './chunk-XDVMX2FO.js';
@@ -551,7 +551,7 @@ var RunService = class {
551
551
  const error = failedRun.error ?? "Unknown error";
552
552
  let output = "";
553
553
  try {
554
- const events = await this.runStore.readEvents(failedRun.id);
554
+ const events = await this.runStore.readEventsTail(failedRun.id, 50);
555
555
  output = events.filter((e) => e.type === "agent_output" || e.type === "error").map((e) => typeof e.data === "string" ? e.data : JSON.stringify(e.data)).join("\n");
556
556
  } catch {
557
557
  }
@@ -1771,9 +1771,9 @@ async function buildFullContainer(context) {
1771
1771
  import('./cursor-3YHVD4NP.js'),
1772
1772
  import('./shell-NJNW3O6K.js'),
1773
1773
  import('./opencode-FAMPSA6X.js'),
1774
- import('./workspace-manager-EVD67GCG.js'),
1774
+ import('./workspace-manager-2SFPKPLZ.js'),
1775
1775
  import('./template-engine-5ZKVJMYA.js'),
1776
- import('./orchestrator-IYWBVA7J.js'),
1776
+ import('./orchestrator-X2CWGFCL.js'),
1777
1777
  import('./doctor-service-F2SXDWHS.js')
1778
1778
  ]);
1779
1779
  const processManager = new ProcessManager();