agentic-orchestrator 0.2.0 → 0.2.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.
@@ -135,6 +135,7 @@ export class DashboardCommandHandler {
135
135
  PORT: String(port),
136
136
  HOSTNAME: '0.0.0.0',
137
137
  AOP_ROOT: projectRoot,
138
+ AOP_PACKAGE_ROOT: repoRoot,
138
139
  AOP_DASHBOARD_RUNTIME_INSTANCE_ID: instanceId,
139
140
  };
140
141
 
@@ -100,6 +100,7 @@ export class DashboardCommandHandler {
100
100
  PORT: String(port),
101
101
  HOSTNAME: '0.0.0.0',
102
102
  AOP_ROOT: projectRoot,
103
+ AOP_PACKAGE_ROOT: repoRoot,
103
104
  AOP_DASHBOARD_RUNTIME_INSTANCE_ID: instanceId,
104
105
  };
105
106
  await ensureDashboardDependencies(repoRoot, env);
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard-command-handler.js","sourceRoot":"","sources":["../../../../apps/control-plane/src/cli/dashboard-command-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dashboard-command-handler.js","sourceRoot":"","sources":["../../../../apps/control-plane/src/cli/dashboard-command-handler.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentic-orchestrator",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "private": false,
5
5
  "workspaces": [
6
6
  "packages/*"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aop/web-dashboard",
3
- "version": "0.1.0",
3
+ "version": "0.2.1",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "scripts": {
@@ -51,15 +51,20 @@ function createDraftId(): string {
51
51
  return `launch-draft-${draftSequence}`;
52
52
  }
53
53
 
54
+ function stripMarkdownExtension(filename: string): string {
55
+ return filename.endsWith('.md') ? filename.slice(0, -3) : filename;
56
+ }
57
+
54
58
  function createDraft(
55
59
  name: string,
56
60
  markdown = '',
57
61
  sourceType: 'upload' | 'paste' = 'paste',
58
62
  ): LaunchDraftCardState {
63
+ const displayName = sourceType === 'upload' ? stripMarkdownExtension(name) : name;
59
64
  return {
60
65
  draft_id: createDraftId(),
61
66
  source_type: sourceType,
62
- name,
67
+ name: displayName,
63
68
  markdown,
64
69
  source_path: name,
65
70
  feature_id: null,
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
 
3
- import React from 'react';
3
+ import React, { useState } from 'react';
4
4
  import styles from '@/styles/dashboard.module.css';
5
5
 
6
6
  export interface LaunchDraftCardState {
@@ -21,6 +21,7 @@ export interface LaunchDraftCardState {
21
21
  interface LaunchDraftCardProps {
22
22
  draft: LaunchDraftCardState;
23
23
  submitting: boolean;
24
+ defaultExpanded?: boolean;
24
25
  onChange: (draftId: string, field: 'name' | 'markdown', value: string) => void;
25
26
  onRemove: (draftId: string) => void;
26
27
  onSubmit: (draftId: string) => void;
@@ -29,26 +30,41 @@ interface LaunchDraftCardProps {
29
30
  export function LaunchDraftCard({
30
31
  draft,
31
32
  submitting,
33
+ defaultExpanded = false,
32
34
  onChange,
33
35
  onRemove,
34
36
  onSubmit,
35
37
  }: LaunchDraftCardProps) {
38
+ const [expanded, setExpanded] = useState(defaultExpanded);
36
39
  const canSubmit = draft.errors.length === 0 && draft.markdown.trim().length > 0 && !submitting;
40
+ const issueCount = draft.errors.length + draft.warnings.length;
37
41
 
38
42
  return (
39
43
  <article className={styles.launchDraftCard}>
40
- <div className={styles.panelHeader}>
41
- <div>
42
- <h2 className={styles.panelTitle}>{draft.name}</h2>
43
- <p className={styles.metaText}>
44
- {draft.feature_id ? `Feature ${draft.feature_id}` : 'Feature id pending preview'}
45
- </p>
44
+ <div className={styles.collapsibleSummary} onClick={() => setExpanded((prev) => !prev)}>
45
+ <div className={styles.collapsibleSummaryTitleGroup}>
46
+ <h2 className={styles.collapsibleSummaryHeading}>{draft.name}</h2>
47
+ <div className={styles.collapsibleSummaryMeta}>
48
+ {issueCount > 0 ? (
49
+ <span className={`${styles.badge} ${styles.badgeFail}`}>
50
+ {issueCount} issue{issueCount === 1 ? '' : 's'}
51
+ </span>
52
+ ) : (
53
+ <span className={`${styles.badge} ${styles.badgePass}`}>Ready</span>
54
+ )}
55
+ {draft.feature_id ? (
56
+ <span className={`${styles.badge} ${styles.badgeNeutral}`}>{draft.feature_id}</span>
57
+ ) : null}
58
+ </div>
46
59
  </div>
47
60
  <div className={styles.inlineActions}>
48
61
  <button
49
62
  type="button"
50
63
  className={styles.button}
51
- onClick={() => onSubmit(draft.draft_id)}
64
+ onClick={(event) => {
65
+ event.stopPropagation();
66
+ onSubmit(draft.draft_id);
67
+ }}
52
68
  disabled={!canSubmit}
53
69
  >
54
70
  {submitting ? 'Submitting...' : 'Submit Draft'}
@@ -56,76 +72,83 @@ export function LaunchDraftCard({
56
72
  <button
57
73
  type="button"
58
74
  className={`${styles.button} ${styles.buttonGhost}`}
59
- onClick={() => onRemove(draft.draft_id)}
75
+ onClick={(event) => {
76
+ event.stopPropagation();
77
+ onRemove(draft.draft_id);
78
+ }}
60
79
  >
61
80
  Remove
62
81
  </button>
63
82
  </div>
64
83
  </div>
65
84
 
66
- <div className={styles.launchDraftGrid}>
67
- <div className={styles.section}>
68
- <label className={styles.label} htmlFor={`launch-name-${draft.draft_id}`}>
69
- Draft name
70
- </label>
71
- <input
72
- id={`launch-name-${draft.draft_id}`}
73
- className={styles.input}
74
- value={draft.name}
75
- onChange={(event) => onChange(draft.draft_id, 'name', event.target.value)}
76
- />
85
+ {expanded ? (
86
+ <div className={styles.collapsibleBody}>
87
+ <div className={styles.launchDraftGrid}>
88
+ <div className={styles.section}>
89
+ <label className={styles.label} htmlFor={`launch-name-${draft.draft_id}`}>
90
+ Draft name
91
+ </label>
92
+ <input
93
+ id={`launch-name-${draft.draft_id}`}
94
+ className={styles.input}
95
+ value={draft.name}
96
+ onChange={(event) => onChange(draft.draft_id, 'name', event.target.value)}
97
+ />
77
98
 
78
- <label className={styles.label} htmlFor={`launch-markdown-${draft.draft_id}`}>
79
- Markdown
80
- </label>
81
- <textarea
82
- id={`launch-markdown-${draft.draft_id}`}
83
- className={styles.textarea}
84
- rows={18}
85
- value={draft.markdown}
86
- onChange={(event) => onChange(draft.draft_id, 'markdown', event.target.value)}
87
- placeholder="# Feature name"
88
- />
89
- </div>
99
+ <label className={styles.label} htmlFor={`launch-markdown-${draft.draft_id}`}>
100
+ Markdown
101
+ </label>
102
+ <textarea
103
+ id={`launch-markdown-${draft.draft_id}`}
104
+ className={styles.textarea}
105
+ rows={18}
106
+ value={draft.markdown}
107
+ onChange={(event) => onChange(draft.draft_id, 'markdown', event.target.value)}
108
+ placeholder="# Feature name"
109
+ />
110
+ </div>
90
111
 
91
- <div className={styles.section}>
92
- <div className={styles.badgeRow}>
93
- <span className={`${styles.badge} ${styles.badgeNeutral}`}>
94
- {draft.preview_mode === 'fallback' ? 'Fallback Preview' : 'Rendered Preview'}
95
- </span>
96
- {draft.canonical_spec_path ? (
97
- <span className={`${styles.badge} ${styles.badgeNeutral}`}>
98
- {draft.canonical_spec_path}
99
- </span>
100
- ) : null}
101
- {draft.last_request_id ? (
102
- <span className={`${styles.badge} ${styles.badgePass}`}>
103
- Request {draft.last_request_id}
104
- </span>
105
- ) : null}
106
- </div>
112
+ <div className={styles.section}>
113
+ <div className={styles.badgeRow}>
114
+ <span className={`${styles.badge} ${styles.badgeNeutral}`}>
115
+ {draft.preview_mode === 'fallback' ? 'Fallback Preview' : 'Rendered Preview'}
116
+ </span>
117
+ {draft.canonical_spec_path ? (
118
+ <span className={`${styles.badge} ${styles.badgeNeutral}`}>
119
+ {draft.canonical_spec_path}
120
+ </span>
121
+ ) : null}
122
+ {draft.last_request_id ? (
123
+ <span className={`${styles.badge} ${styles.badgePass}`}>
124
+ Request {draft.last_request_id}
125
+ </span>
126
+ ) : null}
127
+ </div>
107
128
 
108
- {draft.errors.length > 0 ? (
109
- <div className={styles.banner}>
110
- {draft.errors.map((error) => (
111
- <p key={error}>{error}</p>
112
- ))}
113
- </div>
114
- ) : null}
115
- {draft.warnings.length > 0 ? (
116
- <div className={styles.banner}>
117
- {draft.warnings.map((warning) => (
118
- <p key={warning}>{warning}</p>
119
- ))}
120
- </div>
121
- ) : null}
129
+ {draft.errors.length > 0 ? (
130
+ <div className={styles.banner}>
131
+ {draft.errors.map((error) => (
132
+ <p key={error}>{error}</p>
133
+ ))}
134
+ </div>
135
+ ) : null}
136
+ {draft.warnings.length > 0 ? (
137
+ <div className={styles.banner}>
138
+ {draft.warnings.map((warning) => (
139
+ <p key={warning}>{warning}</p>
140
+ ))}
141
+ </div>
142
+ ) : null}
122
143
 
123
- <div
124
- className={`${styles.launchPreview} ${styles.markdownPreview}`}
125
- dangerouslySetInnerHTML={{ __html: draft.preview_html }}
126
- />
144
+ <div
145
+ className={`${styles.launchPreview} ${styles.markdownPreview}`}
146
+ dangerouslySetInnerHTML={{ __html: draft.preview_html }}
147
+ />
148
+ </div>
149
+ </div>
127
150
  </div>
128
- </div>
151
+ ) : null}
129
152
  </article>
130
153
  );
131
154
  }
@@ -57,7 +57,7 @@ export function validateLaunchDraftInput(draft: LaunchDraftInput): string[] {
57
57
  errors.push('Draft markdown is required.');
58
58
  }
59
59
 
60
- if (draft.source_type === 'upload' && !hasSupportedExtension(draft.name)) {
60
+ if (draft.source_type === 'upload' && !hasSupportedExtension(draft.source_path ?? draft.name)) {
61
61
  errors.push('Only .md draft uploads are supported.');
62
62
  }
63
63
 
@@ -86,10 +86,6 @@ export interface MarkdownPreviewResult {
86
86
  export function renderLaunchMarkdown(markdown: string): MarkdownPreviewResult {
87
87
  const warnings: string[] = [];
88
88
 
89
- if (markdown.includes('<') || markdown.includes('>')) {
90
- warnings.push('Raw HTML was escaped in preview.');
91
- }
92
-
93
89
  const fenceCount = (markdown.match(/```/g) ?? []).length;
94
90
  if (fenceCount % 2 !== 0) {
95
91
  return {
@@ -1,6 +1,7 @@
1
1
  import { randomUUID } from 'node:crypto';
2
+ import { existsSync } from 'node:fs';
2
3
  import path from 'node:path';
3
- import { pathToFileURL } from 'node:url';
4
+ import { fileURLToPath, pathToFileURL } from 'node:url';
4
5
  import { getAopRoot } from '@/lib/aop-client.js';
5
6
  import {
6
7
  submitDashboardRuntimeCommand,
@@ -329,13 +330,54 @@ function resolveBlockedRetryStatus(mode: string): 'building' | 'qa' | 'ready_to_
329
330
  return null;
330
331
  }
331
332
 
333
+ function resolveControlPlaneModulePath(): string {
334
+ const distRelative = path.join('dist', 'apps', 'control-plane', 'index.js');
335
+
336
+ // Strategy 1: Explicit package root env var (set by `aop dashboard`)
337
+ const packageRoot = process.env.AOP_PACKAGE_ROOT;
338
+ if (packageRoot) {
339
+ const candidate = path.join(packageRoot, distRelative);
340
+ if (existsSync(candidate)) {
341
+ return candidate;
342
+ }
343
+ }
344
+
345
+ // Strategy 2: AOP_ROOT / cwd (works when run from the monorepo directly)
346
+ const fromAopRoot = path.join(getAopRoot(), distRelative);
347
+ if (existsSync(fromAopRoot)) {
348
+ return fromAopRoot;
349
+ }
350
+
351
+ // Strategy 3: Walk up from this file's compiled location (handles .next chunks
352
+ // within the installed package tree, e.g. packages/web-dashboard/.next/dev/...)
353
+ try {
354
+ let dir = path.dirname(fileURLToPath(import.meta.url));
355
+ for (let i = 0; i < 10; i++) {
356
+ const candidate = path.join(dir, distRelative);
357
+ if (existsSync(candidate)) {
358
+ return candidate;
359
+ }
360
+ const parent = path.dirname(dir);
361
+ if (parent === dir) {
362
+ break;
363
+ }
364
+ dir = parent;
365
+ }
366
+ } catch {
367
+ // import.meta.url may not resolve to a file path in all bundler contexts
368
+ }
369
+
370
+ // Fallback: return the AOP_ROOT-based path (will fail at import time with a clear error)
371
+ return fromAopRoot;
372
+ }
373
+
332
374
  async function loadRuntimeBridge(): Promise<RuntimeBridge> {
333
375
  if (runtimeBridgePromise) {
334
376
  return runtimeBridgePromise;
335
377
  }
336
378
 
337
379
  runtimeBridgePromise = (async () => {
338
- const modulePath = path.join(getAopRoot(), 'dist', 'apps', 'control-plane', 'index.js');
380
+ const modulePath = resolveControlPlaneModulePath();
339
381
  const moduleUrl = pathToFileURL(modulePath).href;
340
382
  const loaded = (await import(/* webpackIgnore: true */ moduleUrl)) as Partial<RuntimeBridge>;
341
383
  if (
@@ -39,6 +39,7 @@ across lines.
39
39
  last_request_id: null,
40
40
  }}
41
41
  submitting={false}
42
+ defaultExpanded
42
43
  onChange={vi.fn()}
43
44
  onRemove={vi.fn()}
44
45
  onSubmit={vi.fn()}
@@ -51,4 +52,63 @@ across lines.
51
52
  expect(markup).toContain('<ol>');
52
53
  expect(markup).toContain('<code>const x = 1;</code>');
53
54
  });
55
+
56
+ it('renders collapsed by default showing only name and issue count', () => {
57
+ const markup = renderToStaticMarkup(
58
+ <LaunchDraftCard
59
+ draft={{
60
+ draft_id: 'draft-2',
61
+ source_type: 'paste',
62
+ name: 'Collapsed Draft',
63
+ markdown: '# Draft',
64
+ source_path: 'Collapsed Draft',
65
+ feature_id: null,
66
+ canonical_spec_path: null,
67
+ preview_html: '<p>Preview</p>',
68
+ preview_mode: 'rendered',
69
+ warnings: [],
70
+ errors: ['Some validation error'],
71
+ last_request_id: null,
72
+ }}
73
+ submitting={false}
74
+ onChange={vi.fn()}
75
+ onRemove={vi.fn()}
76
+ onSubmit={vi.fn()}
77
+ />,
78
+ );
79
+
80
+ expect(markup).toContain('Collapsed Draft');
81
+ expect(markup).toContain('1 issue');
82
+ expect(markup).not.toContain('launchPreview');
83
+ expect(markup).not.toContain('<textarea');
84
+ });
85
+
86
+ it('shows Ready badge when no issues and collapsed', () => {
87
+ const markup = renderToStaticMarkup(
88
+ <LaunchDraftCard
89
+ draft={{
90
+ draft_id: 'draft-3',
91
+ source_type: 'paste',
92
+ name: 'Clean Draft',
93
+ markdown: '# Draft',
94
+ source_path: 'Clean Draft',
95
+ feature_id: 'clean_draft',
96
+ canonical_spec_path: '.aop/features/clean_draft/spec.md',
97
+ preview_html: '<p>Preview</p>',
98
+ preview_mode: 'rendered',
99
+ warnings: [],
100
+ errors: [],
101
+ last_request_id: null,
102
+ }}
103
+ submitting={false}
104
+ onChange={vi.fn()}
105
+ onRemove={vi.fn()}
106
+ onSubmit={vi.fn()}
107
+ />,
108
+ );
109
+
110
+ expect(markup).toContain('Clean Draft');
111
+ expect(markup).toContain('Ready');
112
+ expect(markup).not.toContain('launchPreview');
113
+ });
54
114
  });
@@ -28,7 +28,7 @@ across two lines.
28
28
  '<script>alert(1)</script>\n\n[Docs](https://example.com/docs)',
29
29
  );
30
30
 
31
- expect(rendered.warnings).toContain('Raw HTML was escaped in preview.');
31
+ expect(rendered.warnings).toHaveLength(0);
32
32
  expect(rendered.html).toContain('&lt;script&gt;alert(1)&lt;/script&gt;');
33
33
  expect(rendered.html).toContain('href="https://example.com/docs"');
34
34
  expect(rendered.html).toContain('target="_blank"');