@miniidealab/openlogos 0.7.3 → 0.8.1

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 (68) hide show
  1. package/codex-plugin-template/plugin.json +10 -0
  2. package/codex-plugin-template/session-start.sh +125 -0
  3. package/dist/commands/change.d.ts +1 -1
  4. package/dist/commands/change.d.ts.map +1 -1
  5. package/dist/commands/change.js +75 -6
  6. package/dist/commands/change.js.map +1 -1
  7. package/dist/commands/detect.d.ts.map +1 -1
  8. package/dist/commands/detect.js +15 -1
  9. package/dist/commands/detect.js.map +1 -1
  10. package/dist/commands/init.d.ts +13 -4
  11. package/dist/commands/init.d.ts.map +1 -1
  12. package/dist/commands/init.js +181 -44
  13. package/dist/commands/init.js.map +1 -1
  14. package/dist/commands/launch.d.ts +1 -1
  15. package/dist/commands/launch.d.ts.map +1 -1
  16. package/dist/commands/launch.js +71 -16
  17. package/dist/commands/launch.js.map +1 -1
  18. package/dist/commands/module.d.ts +5 -0
  19. package/dist/commands/module.d.ts.map +1 -0
  20. package/dist/commands/module.js +231 -0
  21. package/dist/commands/module.js.map +1 -0
  22. package/dist/commands/next.d.ts +22 -0
  23. package/dist/commands/next.d.ts.map +1 -0
  24. package/dist/commands/next.js +195 -0
  25. package/dist/commands/next.js.map +1 -0
  26. package/dist/commands/status.d.ts +43 -2
  27. package/dist/commands/status.d.ts.map +1 -1
  28. package/dist/commands/status.js +351 -62
  29. package/dist/commands/status.js.map +1 -1
  30. package/dist/commands/sync.d.ts.map +1 -1
  31. package/dist/commands/sync.js +38 -5
  32. package/dist/commands/sync.js.map +1 -1
  33. package/dist/commands/verify.js +2 -2
  34. package/dist/commands/verify.js.map +1 -1
  35. package/dist/i18n.d.ts +1 -1
  36. package/dist/i18n.d.ts.map +1 -1
  37. package/dist/i18n.js +95 -15
  38. package/dist/i18n.js.map +1 -1
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +48 -8
  41. package/dist/index.js.map +1 -1
  42. package/dist/lib/migrate-lifecycle.d.ts +13 -0
  43. package/dist/lib/migrate-lifecycle.d.ts.map +1 -0
  44. package/dist/lib/migrate-lifecycle.js +55 -0
  45. package/dist/lib/migrate-lifecycle.js.map +1 -0
  46. package/dist/lib/sync-resource-index.js +5 -5
  47. package/dist/lib/sync-resource-index.js.map +1 -1
  48. package/opencode-plugin-template/commands/openlogos-launch.md +8 -3
  49. package/opencode-plugin-template/openlogos.js +10 -1
  50. package/package.json +8 -4
  51. package/skills/architecture-designer/SKILL.en.md +1 -1
  52. package/skills/architecture-designer/SKILL.md +1 -1
  53. package/skills/prd-writer/SKILL.en.md +1 -1
  54. package/skills/prd-writer/SKILL.md +1 -1
  55. package/skills/product-designer/SKILL.en.md +1 -1
  56. package/skills/product-designer/SKILL.md +1 -1
  57. package/skills/scenario-architect/SKILL.en.md +2 -2
  58. package/skills/scenario-architect/SKILL.md +5 -5
  59. package/skills/test-writer/SKILL.en.md +1 -1
  60. package/skills/test-writer/SKILL.md +2 -2
  61. package/spec/change-management.md +5 -0
  62. package/spec/cli-json-output.md +63 -6
  63. package/spec/codex-plugin.md +138 -0
  64. package/spec/directory-convention.md +4 -2
  65. package/spec/logos-project.md +38 -5
  66. package/spec/module-naming-convention.md +72 -0
  67. package/spec/opencode-plugin.md +3 -3
  68. package/spec/workflow.md +1 -1
@@ -0,0 +1,10 @@
1
+ {
2
+ "name": "openlogos",
3
+ "version": "1.0.0",
4
+ "description": "OpenLogos methodology — Why→What→How structured AI-driven development",
5
+ "interface": {
6
+ "display_name": "OpenLogos",
7
+ "short_description": "Structured development: PRD → Design → Scenarios → API → Code",
8
+ "default_prompt": ["What should I do next in the OpenLogos workflow?"]
9
+ }
10
+ }
@@ -0,0 +1,125 @@
1
+ #!/usr/bin/env bash
2
+ # OpenLogos Codex Plugin — SessionStart hook
3
+ # Injects current phase and next-step context into the Codex session.
4
+ # Falls back silently (returns {}) if the CLI is unavailable or project is not initialized.
5
+ #
6
+ # Output format: {"systemMessage": "...", "hookSpecificOutput": {"hookEventName": "SessionStart", "additionalContext": "..."}}
7
+ # Codex uses systemMessage; additionalContext is included for forward compatibility.
8
+
9
+ set -euo pipefail
10
+
11
+ if ! command -v openlogos &>/dev/null; then
12
+ echo "{}"
13
+ exit 0
14
+ fi
15
+
16
+ if [ ! -f "logos/logos.config.json" ]; then
17
+ echo "{}"
18
+ exit 0
19
+ fi
20
+
21
+ STATUS=$(openlogos status --format json 2>/dev/null) || { echo "{}"; exit 0; }
22
+
23
+ # Parse JSON using python3 (preferred) or node
24
+ _py_parse() {
25
+ python3 -c "import sys,json; d=json.load(sys.stdin); $1" 2>/dev/null || echo "$2"
26
+ }
27
+ _node_parse() {
28
+ node -e "let d='';process.stdin.on('data',c=>d+=c);process.stdin.on('end',()=>{try{const r=JSON.parse(d);$1}catch(e){process.stdout.write('$2')}})" 2>/dev/null || echo "$2"
29
+ }
30
+
31
+ if command -v python3 &>/dev/null; then
32
+ LOCALE=$(python3 -c "import json; d=json.load(open('logos/logos.config.json')); print(d.get('locale','en'))" 2>/dev/null || echo "en")
33
+ LIFECYCLE=$(python3 -c "import json; d=json.load(open('logos/logos.config.json')); print(d.get('lifecycle','initial'))" 2>/dev/null || echo "initial")
34
+ PROJECT_NAME=$(python3 -c "import json; d=json.load(open('logos/logos.config.json')); print(d.get('name',''))" 2>/dev/null || echo "")
35
+ CURRENT_PHASE=$(echo "$STATUS" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('data',{}).get('current_phase') or 'all-done')" 2>/dev/null || echo "unknown")
36
+ SUGGESTION=$(echo "$STATUS" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('data',{}).get('suggestion','Run openlogos status for next steps'))" 2>/dev/null || echo "")
37
+ ALL_DONE=$(echo "$STATUS" | python3 -c "import sys,json; d=json.load(sys.stdin); print('true' if d.get('data',{}).get('all_done') else 'false')" 2>/dev/null || echo "false")
38
+ elif command -v node &>/dev/null; then
39
+ LOCALE=$(node -e "const d=JSON.parse(require('fs').readFileSync('logos/logos.config.json','utf-8')); console.log(d.locale||'en')" 2>/dev/null || echo "en")
40
+ LIFECYCLE=$(node -e "const d=JSON.parse(require('fs').readFileSync('logos/logos.config.json','utf-8')); console.log(d.lifecycle||'initial')" 2>/dev/null || echo "initial")
41
+ PROJECT_NAME=$(node -e "const d=JSON.parse(require('fs').readFileSync('logos/logos.config.json','utf-8')); console.log(d.name||'')" 2>/dev/null || echo "")
42
+ CURRENT_PHASE=$(echo "$STATUS" | node -e "let d='';process.stdin.on('data',c=>d+=c);process.stdin.on('end',()=>{try{const r=JSON.parse(d);console.log((r.data||{}).current_phase||'all-done')}catch(e){console.log('unknown')}})" 2>/dev/null || echo "unknown")
43
+ SUGGESTION=$(echo "$STATUS" | node -e "let d='';process.stdin.on('data',c=>d+=c);process.stdin.on('end',()=>{try{const r=JSON.parse(d);console.log((r.data||{}).suggestion||'')}catch(e){console.log('')}})" 2>/dev/null || echo "")
44
+ ALL_DONE=$(echo "$STATUS" | node -e "let d='';process.stdin.on('data',c=>d+=c);process.stdin.on('end',()=>{try{const r=JSON.parse(d);console.log((r.data||{}).all_done?'true':'false')}catch(e){console.log('false')}})" 2>/dev/null || echo "false")
45
+ else
46
+ echo "{}"
47
+ exit 0
48
+ fi
49
+
50
+ # Language policy
51
+ if [ "$LOCALE" = "zh" ]; then
52
+ LANG_POLICY="Language Policy: ALL output MUST be in Chinese (中文)."
53
+ else
54
+ LANG_POLICY="Language Policy: ALL output MUST be in English."
55
+ fi
56
+
57
+ # Change management status
58
+ GUARD_FILE="logos/.openlogos-guard"
59
+ CHANGE_MGMT=""
60
+ GUARD_STATUS=""
61
+
62
+ if [ "$LIFECYCLE" = "active" ] && [ -f "$GUARD_FILE" ]; then
63
+ if command -v python3 &>/dev/null; then
64
+ ACTIVE_CHANGE=$(python3 -c "import json; d=json.load(open('$GUARD_FILE')); print(d.get('activeChange',''))" 2>/dev/null || echo "")
65
+ elif command -v node &>/dev/null; then
66
+ ACTIVE_CHANGE=$(node -e "const d=JSON.parse(require('fs').readFileSync('$GUARD_FILE','utf-8')); console.log(d.activeChange||'')" 2>/dev/null || echo "")
67
+ else
68
+ ACTIVE_CHANGE=""
69
+ fi
70
+
71
+ if [ -n "$ACTIVE_CHANGE" ]; then
72
+ GUARD_STATUS="🔓 Active change: $ACTIVE_CHANGE"
73
+ CHANGE_MGMT="Change Management: ACTIVE — guard file detected. Active change proposal: '$ACTIVE_CHANGE'. Only modify files within the scope of logos/changes/$ACTIVE_CHANGE/proposal.md. When done, run openlogos merge $ACTIVE_CHANGE then openlogos archive $ACTIVE_CHANGE."
74
+ else
75
+ GUARD_STATUS="⛔ NO active change proposal"
76
+ CHANGE_MGMT="Change Management: ACTIVE — ⛔ NO guard file found. Before modifying ANY source code, you MUST first run openlogos change <slug> to create a change proposal."
77
+ fi
78
+ elif [ "$LIFECYCLE" = "active" ]; then
79
+ GUARD_STATUS="⛔ NO active change proposal"
80
+ CHANGE_MGMT="Change Management: ACTIVE — ⛔ NO guard file found. Before modifying ANY source code, you MUST first run openlogos change <slug> to create a change proposal."
81
+ else
82
+ CHANGE_MGMT="Change Management: Initial development — follow Phase progression, no change proposals needed."
83
+ fi
84
+
85
+ # Build system message
86
+ if [ "$ALL_DONE" = "true" ]; then
87
+ STATUS_LINE="📊 OpenLogos: All phases complete"
88
+ elif [ -n "$GUARD_STATUS" ]; then
89
+ STATUS_LINE="📊 OpenLogos: $CURRENT_PHASE | $GUARD_STATUS"
90
+ else
91
+ STATUS_LINE="📊 OpenLogos: $CURRENT_PHASE"
92
+ fi
93
+
94
+ # Build additional context
95
+ CONTEXT="=== OpenLogos Project Context ===
96
+ Project: $PROJECT_NAME
97
+ Locale: $LOCALE
98
+ Lifecycle: $LIFECYCLE
99
+ Current Phase: $CURRENT_PHASE
100
+ Suggested Next: $SUGGESTION
101
+ $LANG_POLICY
102
+ $CHANGE_MGMT
103
+ === End OpenLogos Context ==="
104
+
105
+ # JSON-escape context and status line
106
+ if command -v python3 &>/dev/null; then
107
+ CONTEXT_ESCAPED=$(printf '%s' "$CONTEXT" | python3 -c "import sys,json; print(json.dumps(sys.stdin.read()))" 2>/dev/null || echo '""')
108
+ SYS_MSG_ESCAPED=$(printf '%s' "$STATUS_LINE" | python3 -c "import sys,json; s=sys.stdin.read(); print(json.dumps(s)[1:-1])" 2>/dev/null || echo "$STATUS_LINE")
109
+ elif command -v node &>/dev/null; then
110
+ CONTEXT_ESCAPED=$(printf '%s' "$CONTEXT" | node -e "let d='';process.stdin.on('data',c=>d+=c);process.stdin.on('end',()=>console.log(JSON.stringify(d)))" 2>/dev/null || echo '""')
111
+ SYS_MSG_ESCAPED=$(printf '%s' "$STATUS_LINE" | node -e "let d='';process.stdin.on('data',c=>d+=c);process.stdin.on('end',()=>{const s=JSON.stringify(d);process.stdout.write(s.slice(1,-1))})" 2>/dev/null || echo "$STATUS_LINE")
112
+ else
113
+ CONTEXT_ESCAPED='""'
114
+ SYS_MSG_ESCAPED="$STATUS_LINE"
115
+ fi
116
+
117
+ cat <<ENDJSON
118
+ {
119
+ "systemMessage": "$SYS_MSG_ESCAPED",
120
+ "hookSpecificOutput": {
121
+ "hookEventName": "SessionStart",
122
+ "additionalContext": $CONTEXT_ESCAPED
123
+ }
124
+ }
125
+ ENDJSON
@@ -1,2 +1,2 @@
1
- export declare function change(slug?: string): void;
1
+ export declare function change(slug?: string, moduleArg?: string): void;
2
2
  //# sourceMappingURL=change.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"change.d.ts","sourceRoot":"","sources":["../../src/commands/change.ts"],"names":[],"mappings":"AAIA,wBAAgB,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,QAwDnC"}
1
+ {"version":3,"file":"change.d.ts","sourceRoot":"","sources":["../../src/commands/change.ts"],"names":[],"mappings":"AAkCA,wBAAgB,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,QAiGvD"}
@@ -1,7 +1,32 @@
1
- import { mkdirSync, writeFileSync, existsSync } from 'node:fs';
1
+ import { mkdirSync, writeFileSync, existsSync, readFileSync } from 'node:fs';
2
2
  import { join } from 'node:path';
3
+ import { parse as parseYaml } from 'yaml';
3
4
  import { readLocale, t, proposalTemplate, tasksTemplate } from '../i18n.js';
4
- export function change(slug) {
5
+ function resolveModule(root, moduleArg, locale) {
6
+ const yamlPath = join(root, 'logos', 'logos-project.yaml');
7
+ let modules = [];
8
+ if (existsSync(yamlPath)) {
9
+ try {
10
+ const yaml = parseYaml(readFileSync(yamlPath, 'utf-8'));
11
+ if (Array.isArray(yaml?.modules))
12
+ modules = yaml.modules;
13
+ }
14
+ catch { /* ignore */ }
15
+ }
16
+ if (moduleArg) {
17
+ if (!modules.find(m => m.id === moduleArg)) {
18
+ console.error(t(locale, 'change.moduleNotFound', { module: moduleArg }));
19
+ console.error(t(locale, 'change.moduleNotFoundHint'));
20
+ process.exit(1);
21
+ }
22
+ return moduleArg;
23
+ }
24
+ if (modules.length === 1)
25
+ return modules[0].id;
26
+ const core = modules.find(m => m.id === 'core');
27
+ return core ? 'core' : (modules[0]?.id ?? 'core');
28
+ }
29
+ export function change(slug, moduleArg) {
5
30
  const root = process.cwd();
6
31
  const configPath = join(root, 'logos', 'logos.config.json');
7
32
  if (!existsSync(configPath)) {
@@ -16,25 +41,69 @@ export function change(slug) {
16
41
  process.exit(1);
17
42
  }
18
43
  const changePath = join(root, 'logos', 'changes', slug);
44
+ const locale = readLocale(root);
19
45
  if (existsSync(changePath)) {
20
46
  console.error(`Error: Change proposal '${slug}' already exists.`);
21
47
  process.exit(1);
22
48
  }
23
- const locale = readLocale(root);
24
- console.log(`\n${t(locale, 'change.creating', { slug })}\n`);
49
+ const guardPath = join(root, 'logos', '.openlogos-guard');
50
+ if (existsSync(guardPath)) {
51
+ try {
52
+ const guard = JSON.parse(readFileSync(guardPath, 'utf-8'));
53
+ const activeChange = typeof guard.activeChange === 'string' ? guard.activeChange : null;
54
+ const activeChangePath = activeChange ? join(root, 'logos', 'changes', activeChange) : null;
55
+ const archivedChangePath = activeChange ? join(root, 'logos', 'changes', 'archive', activeChange) : null;
56
+ if (activeChange && activeChangePath && archivedChangePath && existsSync(activeChangePath) && !existsSync(archivedChangePath)) {
57
+ console.error(t(locale, 'change.guardConflict', { activeChange }));
58
+ console.error(t(locale, 'change.guardConflictHint', { activeChange }));
59
+ process.exit(1);
60
+ }
61
+ }
62
+ catch {
63
+ console.error(t(locale, 'change.guardInvalid'));
64
+ console.error(t(locale, 'change.guardInvalidHint'));
65
+ process.exit(1);
66
+ }
67
+ }
68
+ // Resolve module
69
+ const yamlPath = join(root, 'logos', 'logos-project.yaml');
70
+ let allModules = [];
71
+ if (existsSync(yamlPath)) {
72
+ try {
73
+ const yaml = parseYaml(readFileSync(yamlPath, 'utf-8'));
74
+ if (Array.isArray(yaml?.modules))
75
+ allModules = yaml.modules;
76
+ }
77
+ catch { /* ignore */ }
78
+ }
79
+ const moduleId = resolveModule(root, moduleArg, locale);
80
+ // Print module assignment message
81
+ if (moduleArg) {
82
+ console.log(`\n${t(locale, 'change.creating', { slug })}`);
83
+ console.log(t(locale, 'change.moduleAssigned', { module: moduleId }));
84
+ }
85
+ else if (allModules.length === 1) {
86
+ console.log(`\n${t(locale, 'change.creating', { slug })}`);
87
+ console.log(t(locale, 'change.moduleAuto', { module: moduleId }));
88
+ }
89
+ else {
90
+ console.log(`\n${t(locale, 'change.creating', { slug })}`);
91
+ console.log(t(locale, 'change.moduleDefault', { module: moduleId }));
92
+ }
93
+ console.log('');
25
94
  const deltaDirs = ['deltas/prd', 'deltas/api', 'deltas/database', 'deltas/scenario'];
26
95
  mkdirSync(changePath, { recursive: true });
27
96
  for (const dir of deltaDirs) {
28
97
  mkdirSync(join(changePath, dir), { recursive: true });
29
98
  }
30
- writeFileSync(join(changePath, 'proposal.md'), proposalTemplate(locale, slug));
99
+ writeFileSync(join(changePath, 'proposal.md'), proposalTemplate(locale, slug, moduleId));
31
100
  console.log(` ✓ logos/changes/${slug}/proposal.md`);
32
101
  writeFileSync(join(changePath, 'tasks.md'), tasksTemplate(locale));
33
102
  console.log(` ✓ logos/changes/${slug}/tasks.md`);
34
103
  console.log(` ✓ logos/changes/${slug}/deltas/`);
35
- const guardPath = join(root, 'logos', '.openlogos-guard');
36
104
  const guard = JSON.stringify({
37
105
  activeChange: slug,
106
+ module: moduleId,
38
107
  createdAt: new Date().toISOString(),
39
108
  }, null, 2);
40
109
  writeFileSync(guardPath, guard);
@@ -1 +1 @@
1
- {"version":3,"file":"change.js","sourceRoot":"","sources":["../../src/commands/change.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"change.js","sourceRoot":"","sources":["../../src/commands/change.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../src/commands/detect.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE;QACH,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE;YAAE,GAAG,EAAE,MAAM,EAAE,CAAC;YAAC,IAAI,EAAE,MAAM,EAAE,CAAA;SAAE,GAAG,IAAI,CAAC;KACxD,GAAG,IAAI,CAAC;CACV;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAwB1D;AAED,wBAAgB,MAAM,CAAC,MAAM,GAAE,YAAqB,QA4BnD"}
1
+ {"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../src/commands/detect.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE;QACH,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE;YAAE,GAAG,EAAE,MAAM,EAAE,CAAC;YAAC,IAAI,EAAE,MAAM,EAAE,CAAA;SAAE,GAAG,IAAI,CAAC;KACxD,GAAG,IAAI,CAAC;CACV;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAsC1D;AAED,wBAAgB,MAAM,CAAC,MAAM,GAAE,YAAqB,QA4BnD"}
@@ -1,5 +1,6 @@
1
1
  import { existsSync, readFileSync } from 'node:fs';
2
2
  import { join } from 'node:path';
3
+ import { parse as parseYaml } from 'yaml';
3
4
  import { VERSION, makeEnvelope } from '../lib/json-output.js';
4
5
  export function collectDetectData(root) {
5
6
  const configPath = join(root, 'logos', 'logos.config.json');
@@ -7,10 +8,23 @@ export function collectDetectData(root) {
7
8
  if (existsSync(configPath)) {
8
9
  try {
9
10
  const config = JSON.parse(readFileSync(configPath, 'utf-8'));
11
+ // Derive lifecycle from modules
12
+ let lifecycle = 'initial';
13
+ const yamlPath = join(root, 'logos', 'logos-project.yaml');
14
+ if (existsSync(yamlPath)) {
15
+ try {
16
+ const yaml = parseYaml(readFileSync(yamlPath, 'utf-8'));
17
+ if (Array.isArray(yaml?.modules) &&
18
+ yaml.modules.some(m => m.lifecycle === 'launched')) {
19
+ lifecycle = 'launched';
20
+ }
21
+ }
22
+ catch { /* ignore */ }
23
+ }
10
24
  project = {
11
25
  name: config.name ?? '',
12
26
  locale: config.locale ?? 'en',
13
- lifecycle: config.lifecycle ?? 'initial',
27
+ lifecycle,
14
28
  description: config.description ?? '',
15
29
  source_roots: config.sourceRoots ?? null,
16
30
  };
@@ -1 +1 @@
1
- {"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/commands/detect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/commands/detect.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { type Locale } from '../i18n.js';
2
- export type AiTool = 'claude-code' | 'opencode' | 'cursor' | 'other' | 'all';
2
+ export type AiTool = 'claude-code' | 'opencode' | 'codex' | 'cursor' | 'other' | 'all';
3
3
  type NameSource = 'argument' | 'package.json' | 'Cargo.toml' | 'pyproject.toml' | 'directory';
4
4
  interface NameResult {
5
5
  name: string;
@@ -11,6 +11,14 @@ export declare const SKILL_NAMES: readonly ["project-init", "prd-writer", "produ
11
11
  export declare function findSkillsSource(): string | null;
12
12
  export declare function findSpecSource(): string | null;
13
13
  export declare function findOpenCodePluginTemplateSource(): string | null;
14
+ export declare function findCodexPluginTemplateSource(): string | null;
15
+ export declare function deployCodexPlugin(root: string, locale?: Locale): {
16
+ target: string;
17
+ config: {
18
+ created: boolean;
19
+ updated: boolean;
20
+ };
21
+ } | null;
14
22
  export declare function deployOpenCodePlugin(root: string, locale?: Locale): {
15
23
  target: string;
16
24
  config: {
@@ -22,15 +30,16 @@ export declare function deployOpenCodePlugin(root: string, locale?: Locale): {
22
30
  export declare function deploySpecs(root: string): {
23
31
  count: number;
24
32
  } | null;
25
- export declare function generatePolicyMdc(locale: Locale, lifecycle?: Lifecycle): string;
26
- export declare function deploySkills(root: string, aiTool: AiTool, locale?: Locale, lifecycle?: Lifecycle, skillsSource?: string): {
33
+ export declare function generatePolicyMdc(locale: Locale, isLaunched?: boolean): string;
34
+ export declare function deploySkills(root: string, aiTool: AiTool, locale?: Locale, isLaunched?: boolean, skillsSource?: string): {
27
35
  target: string;
28
36
  count: number;
29
37
  } | null;
38
+ /** @deprecated use isLaunched: boolean instead */
30
39
  export type Lifecycle = 'initial' | 'active';
31
40
  export declare function createLogosConfig(name: string, locale: Locale, aiTool?: AiTool): string;
32
41
  export declare function createLogosProject(name: string, locale: Locale): string;
33
- export declare function createAgentsMd(locale: Locale, aiTool?: AiTool, target?: 'agents' | 'claude', lifecycle?: Lifecycle): string;
42
+ export declare function createAgentsMd(locale: Locale, aiTool?: AiTool, target?: 'agents' | 'claude', isLaunched?: boolean): string;
34
43
  export declare function init(name?: string, options?: {
35
44
  locale?: string;
36
45
  aiTool?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,MAAM,EAAiD,MAAM,YAAY,CAAC;AAExF,MAAM,MAAM,MAAM,GAAG,aAAa,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,KAAK,CAAC;AAE7E,KAAK,UAAU,GAAG,UAAU,GAAG,cAAc,GAAG,YAAY,GAAG,gBAAgB,GAAG,WAAW,CAAC;AAE9F,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CA+B9D;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAI1D;AAsFD,eAAO,MAAM,WAAW,uPAcd,CAAC;AAkBX,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAahD;AAED,wBAAgB,cAAc,IAAI,MAAM,GAAG,IAAI,CAW9C;AAED,wBAAgB,gCAAgC,IAAI,MAAM,GAAG,IAAI,CAahE;AAuDD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,GAAE,MAAa,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CA6BzK;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAalE;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,GAAE,SAAqB,GAAG,MAAM,CAkE1F;AAYD,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,MAAa,EACrB,SAAS,GAAE,SAAqB,EAChC,YAAY,CAAC,EAAE,MAAM,GACpB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAkC1C;AA0ID,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE7C,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,MAAiB,GAAG,MAAM,CA4DjG;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAYvE;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,EAAE,SAAS,GAAE,SAAqB,GAAG,MAAM,CAoJtI;AAED,wBAAsB,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,iBA4FvF"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,MAAM,EAAiD,MAAM,YAAY,CAAC;AAExF,MAAM,MAAM,MAAM,GAAG,aAAa,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,KAAK,CAAC;AAEvF,KAAK,UAAU,GAAG,UAAU,GAAG,cAAc,GAAG,YAAY,GAAG,gBAAgB,GAAG,WAAW,CAAC;AAE9F,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CA+B9D;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAI1D;AAwFD,eAAO,MAAM,WAAW,uPAcd,CAAC;AAkBX,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAahD;AAED,wBAAgB,cAAc,IAAI,MAAM,GAAG,IAAI,CAW9C;AAED,wBAAgB,gCAAgC,IAAI,MAAM,GAAG,IAAI,CAahE;AAED,wBAAgB,6BAA6B,IAAI,MAAM,GAAG,IAAI,CAa7D;AAqCD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,GAAE,MAAa,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAA;CAAE,GAAG,IAAI,CAyBhJ;AAuDD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,GAAE,MAAa,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CA6BzK;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAalE;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,GAAE,OAAe,GAAG,MAAM,CAkErF;AAYD,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,MAAa,EACrB,UAAU,GAAE,OAAe,EAC3B,YAAY,CAAC,EAAE,MAAM,GACpB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAgD1C;AA+KD,kDAAkD;AAClD,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE7C,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,MAAiB,GAAG,MAAM,CA2DjG;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAoBvE;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,EAAE,UAAU,GAAE,OAAe,GAAG,MAAM,CAoJjI;AAED,wBAAsB,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,iBAwGvF"}