tycono 0.1.96-beta.4 → 0.1.96-beta.6
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 +5 -1
- package/bin/tycono.ts +21 -11
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<img src=".github/assets/
|
|
2
|
+
<img src=".github/assets/wave-org-propagation.png" alt="Tycono — CEO dispatches through org hierarchy in real time" width="720" />
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
5
|
<h1 align="center">tycono</h1>
|
|
@@ -45,6 +45,10 @@ dispatch → watch → relay → quality gate → re-dispatch (if needed)
|
|
|
45
45
|
|
|
46
46
|
CEO delegates to C-levels, C-levels dispatch to their teams. Authority is enforced — engineers can't make CEO decisions, PMs can't merge code. The org chart isn't decoration, it's the execution engine.
|
|
47
47
|
|
|
48
|
+
<p align="center">
|
|
49
|
+
<img src=".github/assets/wave-org-propagation.png" alt="Wave Center — org propagation with real-time status" width="640" />
|
|
50
|
+
</p>
|
|
51
|
+
|
|
48
52
|
### 2. Observability — See everything, intervene anytime
|
|
49
53
|
|
|
50
54
|
Your AI team isn't a black box. Watch every agent work in real time, inject directives mid-execution, and drill down to any level.
|
package/bin/tycono.ts
CHANGED
|
@@ -213,6 +213,27 @@ async function startServerForTui(): Promise<void> {
|
|
|
213
213
|
const port = process.env.PORT ? Number(process.env.PORT) : await findFreePort();
|
|
214
214
|
process.env.PORT = String(port);
|
|
215
215
|
|
|
216
|
+
// Suppress ALL server output BEFORE creating server — hijack process streams
|
|
217
|
+
const logFile = path.resolve(process.env.COMPANY_ROOT || process.cwd(), '.tycono', 'server.log');
|
|
218
|
+
try { fs.mkdirSync(path.dirname(logFile), { recursive: true }); } catch {}
|
|
219
|
+
const logFd = fs.openSync(logFile, 'a');
|
|
220
|
+
const logStream = fs.createWriteStream(logFile, { fd: logFd });
|
|
221
|
+
const origStdoutWrite = process.stdout.write.bind(process.stdout);
|
|
222
|
+
const origStderrWrite = process.stderr.write.bind(process.stderr);
|
|
223
|
+
// Intercept all stdout/stderr — only allow Ink's output (ANSI escape sequences)
|
|
224
|
+
const isInkOutput = (s: string) => s.includes('\x1b[') || s.includes('\x1b(');
|
|
225
|
+
process.stdout.write = ((chunk: any, ...args: any[]) => {
|
|
226
|
+
const str = typeof chunk === 'string' ? chunk : chunk.toString();
|
|
227
|
+
if (isInkOutput(str)) return origStdoutWrite(chunk, ...args);
|
|
228
|
+
logStream.write(str);
|
|
229
|
+
return true;
|
|
230
|
+
}) as any;
|
|
231
|
+
process.stderr.write = ((chunk: any, ...args: any[]) => {
|
|
232
|
+
logStream.write(typeof chunk === 'string' ? chunk : chunk.toString());
|
|
233
|
+
return true;
|
|
234
|
+
}) as any;
|
|
235
|
+
const origLog = (...args: unknown[]) => origStdoutWrite(args.join(' ') + '\n');
|
|
236
|
+
|
|
216
237
|
const { createHttpServer } = await import('../src/api/src/create-server.js');
|
|
217
238
|
const server = createHttpServer();
|
|
218
239
|
|
|
@@ -222,17 +243,6 @@ async function startServerForTui(): Promise<void> {
|
|
|
222
243
|
server.listen(port, host, () => resolve());
|
|
223
244
|
});
|
|
224
245
|
|
|
225
|
-
// Suppress API server logs in TUI mode — redirect to file
|
|
226
|
-
const logFile = path.resolve(process.env.COMPANY_ROOT || process.cwd(), '.tycono', 'server.log');
|
|
227
|
-
try { fs.mkdirSync(path.dirname(logFile), { recursive: true }); } catch {}
|
|
228
|
-
const logStream = fs.createWriteStream(logFile, { flags: 'a' });
|
|
229
|
-
const origLog = console.log;
|
|
230
|
-
const origErr = console.error;
|
|
231
|
-
const origWarn = console.warn;
|
|
232
|
-
console.log = (...args: unknown[]) => logStream.write(args.join(' ') + '\n');
|
|
233
|
-
console.error = (...args: unknown[]) => logStream.write('[ERROR] ' + args.join(' ') + '\n');
|
|
234
|
-
console.warn = (...args: unknown[]) => logStream.write('[WARN] ' + args.join(' ') + '\n');
|
|
235
|
-
|
|
236
246
|
origLog(` API server started on port ${port}`);
|
|
237
247
|
origLog(` Logs: ${logFile}`);
|
|
238
248
|
|