openfeel 1.0.0
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/LICENSE +21 -0
- package/README.en.md +140 -0
- package/README.md +17 -0
- package/README.zh-CN.md +140 -0
- package/bin/openfeel.js +13 -0
- package/dist/cli/index.d.ts +11 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +119 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/repl.d.ts +10 -0
- package/dist/cli/repl.d.ts.map +1 -0
- package/dist/cli/repl.js +74 -0
- package/dist/cli/repl.js.map +1 -0
- package/dist/commands/archive.d.ts +7 -0
- package/dist/commands/archive.d.ts.map +1 -0
- package/dist/commands/archive.js +38 -0
- package/dist/commands/archive.js.map +1 -0
- package/dist/commands/config.d.ts +15 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +208 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/flow.d.ts +24 -0
- package/dist/commands/flow.d.ts.map +1 -0
- package/dist/commands/flow.js +1024 -0
- package/dist/commands/flow.js.map +1 -0
- package/dist/commands/init.d.ts +9 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +62 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/instructions.d.ts +7 -0
- package/dist/commands/instructions.d.ts.map +1 -0
- package/dist/commands/instructions.js +36 -0
- package/dist/commands/instructions.js.map +1 -0
- package/dist/commands/knowledge.d.ts +7 -0
- package/dist/commands/knowledge.d.ts.map +1 -0
- package/dist/commands/knowledge.js +174 -0
- package/dist/commands/knowledge.js.map +1 -0
- package/dist/commands/lint.d.ts +12 -0
- package/dist/commands/lint.d.ts.map +1 -0
- package/dist/commands/lint.js +192 -0
- package/dist/commands/lint.js.map +1 -0
- package/dist/commands/plan.d.ts +7 -0
- package/dist/commands/plan.d.ts.map +1 -0
- package/dist/commands/plan.js +73 -0
- package/dist/commands/plan.js.map +1 -0
- package/dist/commands/project.d.ts +7 -0
- package/dist/commands/project.d.ts.map +1 -0
- package/dist/commands/project.js +189 -0
- package/dist/commands/project.js.map +1 -0
- package/dist/commands/roadmap.d.ts +7 -0
- package/dist/commands/roadmap.d.ts.map +1 -0
- package/dist/commands/roadmap.js +26 -0
- package/dist/commands/roadmap.js.map +1 -0
- package/dist/commands/stage.d.ts +17 -0
- package/dist/commands/stage.d.ts.map +1 -0
- package/dist/commands/stage.js +291 -0
- package/dist/commands/stage.js.map +1 -0
- package/dist/commands/update.d.ts +8 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +87 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/view.d.ts +7 -0
- package/dist/commands/view.d.ts.map +1 -0
- package/dist/commands/view.js +77 -0
- package/dist/commands/view.js.map +1 -0
- package/dist/core/archive/merge.d.ts +20 -0
- package/dist/core/archive/merge.d.ts.map +1 -0
- package/dist/core/archive/merge.js +118 -0
- package/dist/core/archive/merge.js.map +1 -0
- package/dist/core/artifact-graph/graph.d.ts +62 -0
- package/dist/core/artifact-graph/graph.d.ts.map +1 -0
- package/dist/core/artifact-graph/graph.js +184 -0
- package/dist/core/artifact-graph/graph.js.map +1 -0
- package/dist/core/artifact-graph/index.d.ts +10 -0
- package/dist/core/artifact-graph/index.d.ts.map +1 -0
- package/dist/core/artifact-graph/index.js +8 -0
- package/dist/core/artifact-graph/index.js.map +1 -0
- package/dist/core/artifact-graph/instruction-loader.d.ts +35 -0
- package/dist/core/artifact-graph/instruction-loader.d.ts.map +1 -0
- package/dist/core/artifact-graph/instruction-loader.js +358 -0
- package/dist/core/artifact-graph/instruction-loader.js.map +1 -0
- package/dist/core/artifact-graph/resolver.d.ts +10 -0
- package/dist/core/artifact-graph/resolver.d.ts.map +1 -0
- package/dist/core/artifact-graph/resolver.js +32 -0
- package/dist/core/artifact-graph/resolver.js.map +1 -0
- package/dist/core/artifact-graph/state.d.ts +9 -0
- package/dist/core/artifact-graph/state.d.ts.map +1 -0
- package/dist/core/artifact-graph/state.js +24 -0
- package/dist/core/artifact-graph/state.js.map +1 -0
- package/dist/core/artifact-graph/types.d.ts +22 -0
- package/dist/core/artifact-graph/types.d.ts.map +1 -0
- package/dist/core/artifact-graph/types.js +2 -0
- package/dist/core/artifact-graph/types.js.map +1 -0
- package/dist/core/config.d.ts +256 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +393 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/flow-manager.d.ts +492 -0
- package/dist/core/flow-manager.d.ts.map +1 -0
- package/dist/core/flow-manager.js +2379 -0
- package/dist/core/flow-manager.js.map +1 -0
- package/dist/core/i18n-data/en.d.ts +26 -0
- package/dist/core/i18n-data/en.d.ts.map +1 -0
- package/dist/core/i18n-data/en.js +492 -0
- package/dist/core/i18n-data/en.js.map +1 -0
- package/dist/core/i18n-data/types.d.ts +18 -0
- package/dist/core/i18n-data/types.d.ts.map +1 -0
- package/dist/core/i18n-data/types.js +8 -0
- package/dist/core/i18n-data/types.js.map +1 -0
- package/dist/core/i18n-data/zh-CN.d.ts +28 -0
- package/dist/core/i18n-data/zh-CN.d.ts.map +1 -0
- package/dist/core/i18n-data/zh-CN.js +524 -0
- package/dist/core/i18n-data/zh-CN.js.map +1 -0
- package/dist/core/i18n.d.ts +40 -0
- package/dist/core/i18n.d.ts.map +1 -0
- package/dist/core/i18n.js +135 -0
- package/dist/core/i18n.js.map +1 -0
- package/dist/core/init.d.ts +22 -0
- package/dist/core/init.d.ts.map +1 -0
- package/dist/core/init.js +292 -0
- package/dist/core/init.js.map +1 -0
- package/dist/core/metrics.d.ts +60 -0
- package/dist/core/metrics.d.ts.map +1 -0
- package/dist/core/metrics.js +137 -0
- package/dist/core/metrics.js.map +1 -0
- package/dist/core/pipeline-schema.d.ts +78 -0
- package/dist/core/pipeline-schema.d.ts.map +1 -0
- package/dist/core/pipeline-schema.js +57 -0
- package/dist/core/pipeline-schema.js.map +1 -0
- package/dist/core/plan/roadmap.d.ts +17 -0
- package/dist/core/plan/roadmap.d.ts.map +1 -0
- package/dist/core/plan/roadmap.js +71 -0
- package/dist/core/plan/roadmap.js.map +1 -0
- package/dist/core/plan/scheme.d.ts +34 -0
- package/dist/core/plan/scheme.d.ts.map +1 -0
- package/dist/core/plan/scheme.js +262 -0
- package/dist/core/plan/scheme.js.map +1 -0
- package/dist/core/plan/stage.d.ts +20 -0
- package/dist/core/plan/stage.d.ts.map +1 -0
- package/dist/core/plan/stage.js +120 -0
- package/dist/core/plan/stage.js.map +1 -0
- package/dist/core/public-logger.d.ts +84 -0
- package/dist/core/public-logger.d.ts.map +1 -0
- package/dist/core/public-logger.js +344 -0
- package/dist/core/public-logger.js.map +1 -0
- package/dist/core/schema.d.ts +70 -0
- package/dist/core/schema.d.ts.map +1 -0
- package/dist/core/schema.js +61 -0
- package/dist/core/schema.js.map +1 -0
- package/dist/core/template-loader.d.ts +22 -0
- package/dist/core/template-loader.d.ts.map +1 -0
- package/dist/core/template-loader.js +2848 -0
- package/dist/core/template-loader.js.map +1 -0
- package/dist/core/templates.d.ts +18 -0
- package/dist/core/templates.d.ts.map +1 -0
- package/dist/core/templates.js +50 -0
- package/dist/core/templates.js.map +1 -0
- package/dist/core/update.d.ts +40 -0
- package/dist/core/update.d.ts.map +1 -0
- package/dist/core/update.js +1569 -0
- package/dist/core/update.js.map +1 -0
- package/dist/core/view/entry.d.ts +37 -0
- package/dist/core/view/entry.d.ts.map +1 -0
- package/dist/core/view/entry.js +108 -0
- package/dist/core/view/entry.js.map +1 -0
- package/dist/core/workspace/identity.d.ts +60 -0
- package/dist/core/workspace/identity.d.ts.map +1 -0
- package/dist/core/workspace/identity.js +169 -0
- package/dist/core/workspace/identity.js.map +1 -0
- package/dist/core/workspace/knowledge.d.ts +55 -0
- package/dist/core/workspace/knowledge.d.ts.map +1 -0
- package/dist/core/workspace/knowledge.js +230 -0
- package/dist/core/workspace/knowledge.js.map +1 -0
- package/dist/core/workspace/structure.d.ts +9 -0
- package/dist/core/workspace/structure.d.ts.map +1 -0
- package/dist/core/workspace/structure.js +59 -0
- package/dist/core/workspace/structure.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/kb-dedup.d.ts +46 -0
- package/dist/utils/kb-dedup.d.ts.map +1 -0
- package/dist/utils/kb-dedup.js +169 -0
- package/dist/utils/kb-dedup.js.map +1 -0
- package/dist/utils/path.d.ts +22 -0
- package/dist/utils/path.d.ts.map +1 -0
- package/dist/utils/path.js +37 -0
- package/dist/utils/path.js.map +1 -0
- package/package.json +61 -0
- package/schemas/spec-driven/schema.yaml +50 -0
- package/schemas/spec-driven/templates/design.md +43 -0
- package/schemas/spec-driven/templates/plan.md +46 -0
- package/schemas/spec-driven/templates/proposal.md +35 -0
- package/schemas/spec-driven/templates/tasks.md +39 -0
- package/scripts/patch-inquirer.js +70 -0
|
@@ -0,0 +1,492 @@
|
|
|
1
|
+
/* ==================== common ==================== */
|
|
2
|
+
export const common = {
|
|
3
|
+
error: { key: 'common.error', zh: '', en: 'Error' },
|
|
4
|
+
errorTmpl: { key: 'common.errorTmpl', zh: '', en: 'Error: {msg}' },
|
|
5
|
+
ok: { key: 'common.ok', zh: '', en: '✓' },
|
|
6
|
+
none: { key: 'common.none', zh: '', en: '(none)' },
|
|
7
|
+
noData: { key: 'common.noData', zh: '', en: '(no records)' },
|
|
8
|
+
inProgress: { key: 'common.inProgress', zh: '', en: '(in progress)' },
|
|
9
|
+
completed: { key: 'common.completed', zh: '', en: 'Completed' },
|
|
10
|
+
unknown: { key: 'common.unknown', zh: '', en: 'Unknown' },
|
|
11
|
+
cancelled: { key: 'common.cancelled', zh: '', en: 'Cancelled' },
|
|
12
|
+
noInit: { key: 'common.noInit', zh: '', en: 'Pipeline not initialized (flow.json not found)' },
|
|
13
|
+
noConfig: { key: 'common.noConfig', zh: '', en: '(no config)' },
|
|
14
|
+
invalidOpId: { key: 'common.invalidOpId', zh: '', en: 'Invalid opId format, expected stage-xx.op-xxx (e.g. stage-01.op-001)' },
|
|
15
|
+
errorNoInit: { key: 'common.errorNoInit', zh: '', en: 'Error: flow.json not initialized, please run openfeel init first' },
|
|
16
|
+
stage: { key: 'common.stage', zh: '', en: 'Stage' },
|
|
17
|
+
op: { key: 'common.op', zh: '', en: 'Op' },
|
|
18
|
+
status: { key: 'common.status', zh: '', en: 'Status' },
|
|
19
|
+
blockedBy: { key: 'common.blockedBy', zh: '', en: 'Blocked By' },
|
|
20
|
+
retry: { key: 'common.retry', zh: '', en: 'Retry' },
|
|
21
|
+
cancel: { key: 'common.cancel', zh: '', en: 'Cancel' },
|
|
22
|
+
};
|
|
23
|
+
/* ==================== flow ==================== */
|
|
24
|
+
export const flow = {
|
|
25
|
+
'status.title': { key: 'flow.status.title', zh: '', en: 'OpenFeel Pipeline Status' },
|
|
26
|
+
'status.verboseTitle': { key: 'flow.status.verboseTitle', zh: '', en: 'OpenFeel Pipeline Status (verbose)' },
|
|
27
|
+
'status.currentStage': { key: 'flow.status.currentStage', zh: '', en: 'Current Active Stage' },
|
|
28
|
+
'status.stageDuration': { key: 'flow.status.stageDuration', zh: '', en: 'Stage Duration' },
|
|
29
|
+
'status.globalStatus': { key: 'flow.status.globalStatus', zh: '', en: 'Global Status' },
|
|
30
|
+
'status.currentStageLabel': { key: 'flow.status.currentStageLabel', zh: '', en: 'Current Stage' },
|
|
31
|
+
'status.stagePhase': { key: 'flow.status.stagePhase', zh: '', en: 'Stage Phase' },
|
|
32
|
+
'status.currentOp': { key: 'flow.status.currentOp', zh: '', en: 'Current Op' },
|
|
33
|
+
'status.retryCount': { key: 'flow.status.retryCount', zh: '', en: 'Retry Count' },
|
|
34
|
+
'status.stagesCount': { key: 'flow.status.stagesCount', zh: '', en: 'Stages' },
|
|
35
|
+
'status.opsCount': { key: 'flow.status.opsCount', zh: '', en: 'Ops' },
|
|
36
|
+
'status.reviewPending': { key: 'flow.status.reviewPending', zh: '', en: 'Pending Reviews' },
|
|
37
|
+
'status.logTotal': { key: 'flow.status.logTotal', zh: '', en: 'Total Logs' },
|
|
38
|
+
'status.cascadeTitle': { key: 'flow.status.cascadeTitle', zh: '', en: '── Config Cascade Status ──' },
|
|
39
|
+
'status.cascadeHeader': { key: 'flow.status.cascadeHeader', zh: '', en: 'Field config.yaml status.md Effective' },
|
|
40
|
+
'status.cascadeNote': { key: 'flow.status.cascadeNote', zh: '', en: '(* status.md overrides config.yaml defaults)' },
|
|
41
|
+
'status.recentTitleTmpl': { key: 'flow.status.recentTitleTmpl', zh: '', en: '── Recent {n} Status Changes ──' },
|
|
42
|
+
'status.recentHeader': { key: 'flow.status.recentHeader', zh: '', en: 'Time Agent Status Change Note' },
|
|
43
|
+
'status.downstreamTitle': { key: 'flow.status.downstreamTitle', zh: '', en: '── Downstream Agent Readiness ──' },
|
|
44
|
+
'status.noDownstream': { key: 'flow.status.noDownstream', zh: '', en: '(No downstream stages reachable from current stage)' },
|
|
45
|
+
'status.downstreamHeader': { key: 'flow.status.downstreamHeader', zh: '', en: 'Reachable Stage Responsible Agent' },
|
|
46
|
+
'status.lastUpdated': { key: 'flow.status.lastUpdated', zh: '', en: 'Last Updated' },
|
|
47
|
+
'status.recoveryTitle': { key: 'flow.status.recoveryTitle', zh: '', en: '── Cross-Session Recovery Info ──' },
|
|
48
|
+
'status.recoveryMoreTmpl': { key: 'flow.status.recoveryMoreTmpl', zh: '', en: '... {n} more items' },
|
|
49
|
+
'overview.title': { key: 'flow.overview.title', zh: '', en: 'OpenFeel Pipeline Overview' },
|
|
50
|
+
'overview.currentStatus': { key: 'flow.overview.currentStatus', zh: '', en: '📍 Current Status' },
|
|
51
|
+
'overview.stagesOverview': { key: 'flow.overview.stagesOverview', zh: '', en: '📋 Stages Overview' },
|
|
52
|
+
'overview.noStages': { key: 'flow.overview.noStages', zh: '', en: '(No stage data)' },
|
|
53
|
+
'overview.totalStagesTmpl': { key: 'flow.overview.totalStagesTmpl', zh: '', en: '{n} stage(s)' },
|
|
54
|
+
'overview.noOps': { key: 'flow.overview.noOps', zh: '', en: '(no ops)' },
|
|
55
|
+
'overview.reviewSection': { key: 'flow.overview.reviewSection', zh: '', en: '🔍 Reviews (REV)' },
|
|
56
|
+
'overview.noReviews': { key: 'flow.overview.noReviews', zh: '', en: '(No review entries)' },
|
|
57
|
+
'overview.reviewOpen': { key: 'flow.overview.reviewOpen', zh: '', en: 'Open' },
|
|
58
|
+
'overview.reviewResolved': { key: 'flow.overview.reviewResolved', zh: '', en: 'Resolved' },
|
|
59
|
+
'overview.reviewClosed': { key: 'flow.overview.reviewClosed', zh: '', en: 'Closed' },
|
|
60
|
+
'overview.reviewPending': { key: 'flow.overview.reviewPending', zh: '', en: 'Pending Reviews' },
|
|
61
|
+
'overview.bugSection': { key: 'flow.overview.bugSection', zh: '', en: '🐛 Bug Tracker' },
|
|
62
|
+
'overview.bugUnreadable': { key: 'flow.overview.bugUnreadable', zh: '', en: '(Unable to read bug stats)' },
|
|
63
|
+
'overview.bugUninitialized': { key: 'flow.overview.bugUninitialized', zh: '', en: '(Bug tracking not initialized)' },
|
|
64
|
+
'overview.bugOpen': { key: 'flow.overview.bugOpen', zh: '', en: 'Open' },
|
|
65
|
+
'overview.bugClosed': { key: 'flow.overview.bugClosed', zh: '', en: 'Closed' },
|
|
66
|
+
'overview.recentLogs': { key: 'flow.overview.recentLogs', zh: '', en: '📝 Recent Ops (5)' },
|
|
67
|
+
'overview.noLogs': { key: 'flow.overview.noLogs', zh: '', en: '(No log records)' },
|
|
68
|
+
'overview.health': { key: 'flow.overview.health', zh: '', en: '💚 Health Status' },
|
|
69
|
+
'overview.healthStatsTmpl': { key: 'flow.overview.healthStatsTmpl', zh: '', en: '✅ {n} 🟡 {m} ❌ {k}' },
|
|
70
|
+
'current.globalStatus': { key: 'flow.current.globalStatus', zh: '', en: 'Global Status' },
|
|
71
|
+
'current.stagePhase': { key: 'flow.current.stagePhase', zh: '', en: 'Stage Phase' },
|
|
72
|
+
'current.currentOp': { key: 'flow.current.currentOp', zh: '', en: 'Current Op' },
|
|
73
|
+
'current.retryCount': { key: 'flow.current.retryCount', zh: '', en: 'Retry Count' },
|
|
74
|
+
'stage.addedTmpl': { key: 'flow.stage.addedTmpl', zh: '', en: '✓ Stage created: {stage} → plan_pending' },
|
|
75
|
+
'advance.errorNoStage': { key: 'flow.advance.errorNoStage', zh: '', en: 'Error: --stage parameter must specify a stage ID (e.g. stage-03)' },
|
|
76
|
+
'advance.warnAutoCorrect': { key: 'flow.advance.warnAutoCorrect', zh: '', en: '(Non-standard phase auto-corrected, proceeding)' },
|
|
77
|
+
'advance.errorInvalidFormat': { key: 'flow.advance.errorInvalidFormat', zh: '', en: 'Error: flow.json format is invalid' },
|
|
78
|
+
'advance.errorInvalidPhaseTmpl': { key: 'flow.advance.errorInvalidPhaseTmpl', zh: '', en: "Error: '{phase}' is not a valid PipelinePhase." },
|
|
79
|
+
'advance.labelValidPhases': { key: 'flow.advance.labelValidPhases', zh: '', en: 'Valid values' },
|
|
80
|
+
'advance.hintUseForceFuzzy': { key: 'flow.advance.hintUseForceFuzzy', zh: '', en: 'Use --force to force execute (auto fuzzy fix)' },
|
|
81
|
+
'advance.errorPhaseJumpTmpl': { key: 'flow.advance.errorPhaseJumpTmpl', zh: '', en: 'Error: Stage "{stage}" current phase cannot transition to "{to}"' },
|
|
82
|
+
'advance.hintUseForce': { key: 'flow.advance.hintUseForce', zh: '', en: 'Use --force to force execute' },
|
|
83
|
+
'advance.warnSkipReview': { key: 'flow.advance.warnSkipReview', zh: '', en: '[!] Skipping review phase directly to done, confirm to continue' },
|
|
84
|
+
'advance.okTmpl': { key: 'flow.advance.okTmpl', zh: '', en: '✓ Advanced: {stage} → {to}' },
|
|
85
|
+
'advance.opLabelTmpl': { key: 'flow.advance.opLabelTmpl', zh: '', en: 'Op: {op}' },
|
|
86
|
+
'advance.autoRepaired': { key: 'flow.advance.autoRepaired', zh: '', en: 'Stage data inconsistency detected, auto-repaired' },
|
|
87
|
+
'advance.saveError': { key: 'flow.advance.saveError', zh: '', en: 'flow.json save failed' },
|
|
88
|
+
'advance.gitCommitOkTmpl': { key: 'flow.advance.gitCommitOkTmpl', zh: '', en: '✓ Stage {stage} auto git commit archived' },
|
|
89
|
+
'advance.gitCommitSkipTmpl': { key: 'flow.advance.gitCommitSkipTmpl', zh: '', en: '(Skipped auto git commit: not a git repo or no changes) {stage}' },
|
|
90
|
+
'attempt.errorInvalidResult': { key: 'flow.attempt.errorInvalidResult', zh: '', en: 'Error: --result must be pass or fail' },
|
|
91
|
+
'attempt.passTmpl': { key: 'flow.attempt.passTmpl', zh: '', en: '✓ {op} completed successfully' },
|
|
92
|
+
'attempt.failRetryTmpl': { key: 'flow.attempt.failRetryTmpl', zh: '', en: '⚠ {op} failed, will retry (retriable)' },
|
|
93
|
+
'attempt.failReplanTmpl': { key: 'flow.attempt.failReplanTmpl', zh: '', en: '✗ {op} retries exhausted, needs re-planning' },
|
|
94
|
+
'attempt.autoReplan': { key: 'flow.attempt.autoReplan', zh: '', en: '→ Auto reverted to scheme_pending, please re-plan' },
|
|
95
|
+
'log.noInit': { key: 'flow.log.noInit', zh: '', en: 'Pipeline not initialized, no logs' },
|
|
96
|
+
'log.noLogs': { key: 'flow.log.noLogs', zh: '', en: 'No operation logs' },
|
|
97
|
+
'log.recentTitleTmpl': { key: 'flow.log.recentTitleTmpl', zh: '', en: 'Recent {n} operation logs' },
|
|
98
|
+
'log.detail': { key: 'flow.log.detail', zh: '', en: 'Details' },
|
|
99
|
+
'checkpoint.listTitle': { key: 'flow.checkpoint.listTitle', zh: '', en: 'Checkpoint Snapshots' },
|
|
100
|
+
'checkpoint.noSnapshots': { key: 'flow.checkpoint.noSnapshots', zh: '', en: '(No checkpoint snapshots yet)' },
|
|
101
|
+
'checkpoint.noSnapshotsStageTmpl': { key: 'flow.checkpoint.noSnapshotsStageTmpl', zh: '', en: '(No checkpoint snapshots for stage {stage})' },
|
|
102
|
+
'checkpoint.listCountTmpl': { key: 'flow.checkpoint.listCountTmpl', zh: '', en: '{n} snapshot(s) in total' },
|
|
103
|
+
'checkpoint.restoreNeedForce': { key: 'flow.checkpoint.restoreNeedForce', zh: '', en: 'Error: Restore will overwrite the current flow.json, use --force to confirm' },
|
|
104
|
+
'checkpoint.restoreOkTmpl': { key: 'flow.checkpoint.restoreOkTmpl', zh: '', en: '✓ flow.json restored from snapshot {file} (current file backed up as flow.json.bak)' },
|
|
105
|
+
'checkpoint.restoreFailTmpl': { key: 'flow.checkpoint.restoreFailTmpl', zh: '', en: 'Error: Cannot restore from snapshot {file} (missing, invalid name, or bad content)' },
|
|
106
|
+
'review.errorStageNotFoundTmpl': { key: 'flow.review.errorStageNotFoundTmpl', zh: '', en: 'Error: Stage "{stage}" in opId "{opId}" not found in flow.json' },
|
|
107
|
+
'review.errorOpNotFoundTmpl': { key: 'flow.review.errorOpNotFoundTmpl', zh: '', en: 'Error: Op "{op}" in opId "{opId}" not found in stage "{stage}"' },
|
|
108
|
+
'review.labelBlocking': { key: 'flow.review.labelBlocking', zh: '', en: '[Blocking]' },
|
|
109
|
+
'review.labelNonBlocking': { key: 'flow.review.labelNonBlocking', zh: '', en: '[Non-blocking]' },
|
|
110
|
+
'review.addedAutoFixTmpl': { key: 'flow.review.addedAutoFixTmpl', zh: '', en: '✓ {label} [AUTO_FIX] Review entry added and auto-fixed: {revId}' },
|
|
111
|
+
'review.detail': { key: 'flow.review.detail', zh: '', en: 'Detail' },
|
|
112
|
+
'review.autoFixPhase': { key: 'flow.review.autoFixPhase', zh: '', en: 'Pipeline skipped review_failed, advanced directly to exec_running' },
|
|
113
|
+
'review.addedTmpl': { key: 'flow.review.addedTmpl', zh: '', en: '✓ {label} Review entry added: {revId} ({op})' },
|
|
114
|
+
'review.resolvedTmpl': { key: 'flow.review.resolvedTmpl', zh: '', en: '✓ Review entry resolved: {revId}' },
|
|
115
|
+
'review.notFoundTmpl': { key: 'flow.review.notFoundTmpl', zh: '', en: 'Error: Review entry {revId} not found' },
|
|
116
|
+
'retry.errorNoData': { key: 'flow.retry.errorNoData', zh: '', en: 'Error: Unable to read pipeline data' },
|
|
117
|
+
'retry.errorStageNotFoundTmpl': { key: 'flow.retry.errorStageNotFoundTmpl', zh: '', en: 'Error: Stage {stage} not found' },
|
|
118
|
+
'retry.errorOpNotFoundTmpl': { key: 'flow.retry.errorOpNotFoundTmpl', zh: '', en: 'Error: Op {op} not found' },
|
|
119
|
+
'retry.attemptCount': { key: 'flow.retry.attemptCount', zh: '', en: 'Current Attempts' },
|
|
120
|
+
'retry.exhausted': { key: 'flow.retry.exhausted', zh: '', en: '⚠ Retries exhausted' },
|
|
121
|
+
'repair.backupOk': { key: 'flow.repair.backupOk', zh: '', en: 'Backed up: flow.json.bak' },
|
|
122
|
+
'repair.noBackup': { key: 'flow.repair.noBackup', zh: '', en: 'flow.json does not exist, no backup needed' },
|
|
123
|
+
'repair.dryRunTitle': { key: 'flow.repair.dryRunTitle', zh: '', en: '[DRY-RUN Mode] The following issues will be fixed:' },
|
|
124
|
+
'repair.recovered': { key: 'flow.repair.recovered', zh: '', en: '♻ flow.json restored from .bak' },
|
|
125
|
+
'repair.dryRunHint': { key: 'flow.repair.dryRunHint', zh: '', en: 'Issues detected, run without --dry-run to apply fixes.' },
|
|
126
|
+
'repair.fixDone': { key: 'flow.repair.fixDone', zh: '', en: '✓ flow.json repaired' },
|
|
127
|
+
'repair.noFix': { key: 'flow.repair.noFix', zh: '', en: 'No issues detected' },
|
|
128
|
+
'repair.fixFailed': { key: 'flow.repair.fixFailed', zh: '', en: '✗ Some issues could not be auto-fixed, please check flow.json manually' },
|
|
129
|
+
'repair.migrationHint': { key: 'flow.repair.migrationHint', zh: '', en: '💡 Legacy flow.json format detected (global phase), consider running:' },
|
|
130
|
+
'repair.migrationPreview': { key: 'flow.repair.migrationPreview', zh: '', en: ' Preview migration: openfeel flow migrate --dry-run' },
|
|
131
|
+
'migrate.alreadyNew': { key: 'flow.migrate.alreadyNew', zh: '', en: '✓ Already up-to-date format, no migration needed' },
|
|
132
|
+
'migrate.dryRunTitle': { key: 'flow.migrate.dryRunTitle', zh: '', en: '[DRY-RUN Mode] The following changes will be applied:' },
|
|
133
|
+
'migrate.dryRunNote': { key: 'flow.migrate.dryRunNote', zh: '', en: '(No files modified, run without --dry-run to apply migration)' },
|
|
134
|
+
'migrate.complete': { key: 'flow.migrate.complete', zh: '', en: 'Migration complete' },
|
|
135
|
+
'migrate.failed': { key: 'flow.migrate.failed', zh: '', en: '✗ Migration failed' },
|
|
136
|
+
'migrate.done': { key: 'flow.migrate.done', zh: '', en: '✓ flow.json migrated to new format' },
|
|
137
|
+
'health.title': { key: 'flow.health.title', zh: '', en: 'openfeel flow health' },
|
|
138
|
+
'health.pass': { key: 'flow.health.pass', zh: '', en: '🎉 Health check passed' },
|
|
139
|
+
'health.hasFailures': { key: 'flow.health.hasFailures', zh: '', en: '⚠️ There are failures, please check errors above' },
|
|
140
|
+
'health.quickMode': { key: 'flow.health.quickMode', zh: '', en: '(Quick mode: key checks only)' },
|
|
141
|
+
'recover.title': { key: 'flow.recover.title', zh: '', en: '═══ Cross-Session Context Recovery ═══' },
|
|
142
|
+
'recover.globalStatus': { key: 'flow.recover.globalStatus', zh: '', en: 'Global Status' },
|
|
143
|
+
'recover.phase': { key: 'flow.recover.phase', zh: '', en: 'Pipeline Phase' },
|
|
144
|
+
'recover.currentOp': { key: 'flow.recover.currentOp', zh: '', en: 'Current Op' },
|
|
145
|
+
'recover.stageStatus': { key: 'flow.recover.stageStatus', zh: '', en: 'Stage Status' },
|
|
146
|
+
'recover.pendingTasksTmpl': { key: 'flow.recover.pendingTasksTmpl', zh: '', en: 'Pending Tasks ({n})' },
|
|
147
|
+
'recover.noTasks': { key: 'flow.recover.noTasks', zh: '', en: 'No pending tasks' },
|
|
148
|
+
'recover.stageDuration': { key: 'flow.recover.stageDuration', zh: '', en: 'Stage Duration' },
|
|
149
|
+
'recover.statusUninitialized': { key: 'flow.recover.statusUninitialized', zh: '', en: 'Uninitialized' },
|
|
150
|
+
'recover.statusAutoExec': { key: 'flow.recover.statusAutoExec', zh: '', en: 'Auto Execute' },
|
|
151
|
+
'recover.statusManualExec': { key: 'flow.recover.statusManualExec', zh: '', en: 'Manual Execute' },
|
|
152
|
+
'recover.statusUnreadable': { key: 'flow.recover.statusUnreadable', zh: '', en: 'Cannot read status.md' },
|
|
153
|
+
'recover.statusFileMissing': { key: 'flow.recover.statusFileMissing', zh: '', en: 'status.md not found' },
|
|
154
|
+
'recover.statusNoCurrentStage': { key: 'flow.recover.statusNoCurrentStage', zh: '', en: 'No current stage' },
|
|
155
|
+
'wizard.done': { key: 'flow.wizard.done', zh: '', en: '🎉 Pipeline is complete!' },
|
|
156
|
+
'wizard.noStages': { key: 'flow.wizard.noStages', zh: '', en: 'No stages available.' },
|
|
157
|
+
'wizard.selectStage': { key: 'flow.wizard.selectStage', zh: '', en: 'Select stage to advance' },
|
|
158
|
+
'wizard.currentLabel': { key: 'flow.wizard.currentLabel', zh: '', en: '(current)' },
|
|
159
|
+
'wizard.unavailable': { key: 'flow.wizard.unavailable', zh: '', en: 'Selected stage is not available.' },
|
|
160
|
+
'wizard.statusHeader': { key: 'flow.wizard.statusHeader', zh: '', en: '═══ Pipeline Status ═══' },
|
|
161
|
+
'wizard.stagePhase': { key: 'flow.wizard.stagePhase', zh: '', en: 'Stage Phase' },
|
|
162
|
+
'wizard.retryCount': { key: 'flow.wizard.retryCount', zh: '', en: 'Retry Count' },
|
|
163
|
+
'wizard.pendingReviews': { key: 'flow.wizard.pendingReviews', zh: '', en: 'Pending Reviews' },
|
|
164
|
+
'wizard.noNext': { key: 'flow.wizard.noNext', zh: '', en: 'No reachable next action from current stage.' },
|
|
165
|
+
'wizard.exitOption': { key: 'flow.wizard.exitOption', zh: '', en: 'Exit wizard' },
|
|
166
|
+
'wizard.selectAction': { key: 'flow.wizard.selectAction', zh: '', en: 'Select next action' },
|
|
167
|
+
'wizard.exited': { key: 'flow.wizard.exited', zh: '', en: 'Exited wizard.' },
|
|
168
|
+
'wizard.previewTmpl': { key: 'flow.wizard.previewTmpl', zh: '', en: 'Preview: advance stage {stage} from {from} ({fromLabel}) to {to} ({toLabel})' },
|
|
169
|
+
'wizard.confirmTitle': { key: 'flow.wizard.confirmTitle', zh: '', en: 'Confirm this action?' },
|
|
170
|
+
'wizard.confirm': { key: 'flow.wizard.confirm', zh: '', en: 'Confirm advance' },
|
|
171
|
+
'wizard.advancedTmpl': { key: 'flow.wizard.advancedTmpl', zh: '', en: '✓ Advanced: {stage}: {from} → {to}' },
|
|
172
|
+
};
|
|
173
|
+
/* ==================== init ==================== */
|
|
174
|
+
export const init = {
|
|
175
|
+
'errorPathNotExistTmpl': { key: 'init.errorPathNotExistTmpl', zh: '', en: 'Error: Path does not exist — {path}' },
|
|
176
|
+
'initializingTmpl': { key: 'init.initializingTmpl', zh: '', en: 'Initializing OpenFeel workspace: {path}' },
|
|
177
|
+
'created': { key: 'init.created', zh: '', en: 'Created' },
|
|
178
|
+
'updated': { key: 'init.updated', zh: '', en: 'Updated' },
|
|
179
|
+
'alreadyUpToDate': { key: 'init.alreadyUpToDate', zh: '', en: 'Workspace is already up-to-date, no changes needed.' },
|
|
180
|
+
'complete': { key: 'init.complete', zh: '', en: '✓ OpenFeel workspace initialized' },
|
|
181
|
+
'demoCreating': { key: 'init.demoCreating', zh: '', en: '⚙ Creating demo project skeleton...' },
|
|
182
|
+
'demoCreated': { key: 'init.demoCreated', zh: '', en: 'Created demo files' },
|
|
183
|
+
'demoSkipped': { key: 'init.demoSkipped', zh: '', en: 'Skipped (file already exists)' },
|
|
184
|
+
'demoComplete': { key: 'init.demoComplete', zh: '', en: '✅ Demo project created, run npm install && npm test to start' },
|
|
185
|
+
'prompt.nonInteractive': { key: 'init.prompt.nonInteractive', zh: '', en: 'Non-interactive environment, Agent prompt language set to zh-CN by default. Use openfeel update --lang <zh-CN|en> to change.' },
|
|
186
|
+
'prompt.bilingual': { key: 'init.prompt.bilingual', zh: '', en: 'Select Agent prompt language / 选择 Agent 提示词语言:' },
|
|
187
|
+
'agentLangTmpl': { key: 'init.agentLangTmpl', zh: '', en: 'Agent prompt language: {lang}' },
|
|
188
|
+
'invalidLangWarnTmpl': { key: 'init.invalidLangWarnTmpl', zh: '', en: 'Invalid --lang value "{lang}", falling back to interactive selection' },
|
|
189
|
+
// ensureGlobalConfig 非交互环境消息(REV-006)
|
|
190
|
+
'firstUse.nonInteractive': { key: 'init.firstUse.nonInteractive', zh: '', en: 'First time using OpenFeel: Non-interactive environment detected, global default language set to zh-CN.' },
|
|
191
|
+
'firstUse.changeHint': { key: 'init.firstUse.changeHint', zh: '', en: 'Use openfeel config set-lang <zh-CN|en> to change.' },
|
|
192
|
+
// ensureGlobalConfig 交互环境消息
|
|
193
|
+
'firstUse.interactiveWelcome': { key: 'init.firstUse.interactiveWelcome', zh: '', en: '🌐 Welcome to OpenFeel! Please select your global default language:' },
|
|
194
|
+
'firstUse.interactiveOption': { key: 'init.firstUse.interactiveOption', zh: '', en: 'Please enter choice (1/2) / 请输入选项 (1/2) [2]: ' },
|
|
195
|
+
'firstUse.langSetEn': { key: 'init.firstUse.langSetEn', zh: '', en: '✓ Global language set to English. You can change it later with: openfeel config set-lang' },
|
|
196
|
+
'firstUse.langSetZh': { key: 'init.firstUse.langSetZh', zh: '', en: '✓ Global language set to Chinese. You can change it later with: openfeel config set-lang' },
|
|
197
|
+
};
|
|
198
|
+
/* ==================== update ==================== */
|
|
199
|
+
export const update = {
|
|
200
|
+
'errorPathNotExistTmpl': { key: 'update.errorPathNotExistTmpl', zh: '', en: 'Error: Path does not exist — {path}' },
|
|
201
|
+
'errorUnsupportedLangTmpl': { key: 'update.errorUnsupportedLangTmpl', zh: '', en: 'Error: Unsupported language "{lang}". Supported values: zh-CN, en' },
|
|
202
|
+
'autoInitTmpl': { key: 'update.autoInitTmpl', zh: '', en: 'Project not initialized, auto-running openfeel init...' },
|
|
203
|
+
'autoInitCreated': { key: 'update.autoInitCreated', zh: '', en: 'Auto-created' },
|
|
204
|
+
'cancelled': { key: 'update.cancelled', zh: '', en: 'No tool selected, cancelled.' },
|
|
205
|
+
'deployingTmpl': { key: 'update.deployingTmpl', zh: '', en: 'Deploying adapter files to: {path}' },
|
|
206
|
+
'selectedToolsTmpl': { key: 'update.selectedToolsTmpl', zh: '', en: 'Selected tools: {tools}' },
|
|
207
|
+
'created': { key: 'update.created', zh: '', en: 'Created' },
|
|
208
|
+
'updated': { key: 'update.updated', zh: '', en: 'Updated' },
|
|
209
|
+
'skipped': { key: 'update.skipped', zh: '', en: 'Skipped (content unchanged)' },
|
|
210
|
+
'alreadyUpToDate': { key: 'update.alreadyUpToDate', zh: '', en: 'All adapter files are up-to-date, no changes needed.' },
|
|
211
|
+
'complete': { key: 'update.complete', zh: '', en: '✓ Adapter files deployed' },
|
|
212
|
+
'errorDeployFailedTmpl': { key: 'update.errorDeployFailedTmpl', zh: '', en: 'Error: Deployment failed — {message}' },
|
|
213
|
+
'langConflict': { key: 'update.langConflict', zh: '', en: '⚠️ AGENTS.md language mismatch: project is {projectLang}, requested is {requestedLang}. Use --force to override or adjust manually.' },
|
|
214
|
+
};
|
|
215
|
+
/* ==================== project ==================== */
|
|
216
|
+
export const project = {
|
|
217
|
+
'overview.title': { key: 'project.overview.title', zh: '', en: 'OpenFeel Project Overview' },
|
|
218
|
+
'overview.basicInfo': { key: 'project.overview.basicInfo', zh: '', en: '📋 Basic Info' },
|
|
219
|
+
'overview.projectName': { key: 'project.overview.projectName', zh: '', en: 'Project Name' },
|
|
220
|
+
'overview.description': { key: 'project.overview.description', zh: '', en: 'Description' },
|
|
221
|
+
'overview.language': { key: 'project.overview.language', zh: '', en: 'Language' },
|
|
222
|
+
'overview.dirStructure': { key: 'project.overview.dirStructure', zh: '', en: '📁 Directory Structure' },
|
|
223
|
+
'overview.dirNotExist': { key: 'project.overview.dirNotExist', zh: '', en: '(Directory does not exist)' },
|
|
224
|
+
'overview.stats': { key: 'project.overview.stats', zh: '', en: '📊 Statistics' },
|
|
225
|
+
'overview.entryPath': { key: 'project.overview.entryPath', zh: '', en: '🚪 Entry Path' },
|
|
226
|
+
'overview.noSrc': { key: 'project.overview.noSrc', zh: '', en: '(No project structure detected — missing src/ directory)' },
|
|
227
|
+
'overview.techStack': { key: 'project.overview.techStack', zh: '', en: '🔧 Tech Stack' },
|
|
228
|
+
// 目录结构 — 描述模板(带 {n} 变量插值)
|
|
229
|
+
'dir.cliTmpl': { key: 'project.dir.cliTmpl', zh: '', en: '— CLI Entry ({n} file(s))' },
|
|
230
|
+
'dir.commandsTmpl': { key: 'project.dir.commandsTmpl', zh: '', en: '— CLI Commands ({n})' },
|
|
231
|
+
'dir.coreTmpl': { key: 'project.dir.coreTmpl', zh: '', en: '— Core Logic ({n} file(s))' },
|
|
232
|
+
'dir.utilsTmpl': { key: 'project.dir.utilsTmpl', zh: '', en: '— Utilities ({n} file(s))' },
|
|
233
|
+
'dir.agentsTmpl': { key: 'project.dir.agentsTmpl', zh: '', en: '— Agent Definitions ({n})' },
|
|
234
|
+
'dir.skillsTmpl': { key: 'project.dir.skillsTmpl', zh: '', en: '— Skill Definitions ({n})' },
|
|
235
|
+
'dir.kbTmpl': { key: 'project.dir.kbTmpl', zh: '', en: '— Knowledge Base ({n} file(s))' },
|
|
236
|
+
'dir.planTmpl': { key: 'project.dir.planTmpl', zh: '', en: '— Work Plans ({n} version(s))' },
|
|
237
|
+
'dir.codeReviewTmpl': { key: 'project.dir.codeReviewTmpl', zh: '', en: '— Code Reviews ({n} file(s))' },
|
|
238
|
+
'dir.bugs': { key: 'project.dir.bugs', zh: '', en: '— Bug Tracking' },
|
|
239
|
+
'dir.bugsNotInit': { key: 'project.dir.bugsNotInit', zh: '', en: ' (not initialized)' },
|
|
240
|
+
// 统计信息标签
|
|
241
|
+
'stats.tsSource': { key: 'project.stats.tsSource', zh: '', en: 'TS Source Files' },
|
|
242
|
+
'stats.agentDefs': { key: 'project.stats.agentDefs', zh: '', en: 'Agent Definitions' },
|
|
243
|
+
'stats.cliModules': { key: 'project.stats.cliModules', zh: '', en: 'CLI Command Modules' },
|
|
244
|
+
'stats.kbEntries': { key: 'project.stats.kbEntries', zh: '', en: 'KB Entries' },
|
|
245
|
+
'stats.planVersions': { key: 'project.stats.planVersions', zh: '', en: 'Plan Versions' },
|
|
246
|
+
// 入口路径标签
|
|
247
|
+
'entry.cli': { key: 'project.entry.cli', zh: '', en: 'CLI Entry' },
|
|
248
|
+
'entry.pkg': { key: 'project.entry.pkg', zh: '', en: 'Package Entry' },
|
|
249
|
+
'entry.build': { key: 'project.entry.build', zh: '', en: 'Build Output' },
|
|
250
|
+
// 技术栈标签
|
|
251
|
+
'tech.runtime': { key: 'project.tech.runtime', zh: '', en: 'Runtime' },
|
|
252
|
+
'tech.language': { key: 'project.tech.language', zh: '', en: 'Language' },
|
|
253
|
+
'tech.cliFramework': { key: 'project.tech.cliFramework', zh: '', en: 'CLI Framework' },
|
|
254
|
+
'tech.validation': { key: 'project.tech.validation', zh: '', en: 'Validation' },
|
|
255
|
+
'tech.config': { key: 'project.tech.config', zh: '', en: 'Config' },
|
|
256
|
+
'tech.fileMatch': { key: 'project.tech.fileMatch', zh: '', en: 'File Matching' },
|
|
257
|
+
'tech.test': { key: 'project.tech.test', zh: '', en: 'Testing' },
|
|
258
|
+
};
|
|
259
|
+
/* ==================== stage ==================== */
|
|
260
|
+
export const stage = {
|
|
261
|
+
'status.noStages': { key: 'stage.status.noStages', zh: '', en: 'No stages found (no status.md in .openfeel/plan/)' },
|
|
262
|
+
'status.foundTmpl': { key: 'stage.status.foundTmpl', zh: '', en: 'Found {n} stage(s)' },
|
|
263
|
+
'status.hint': { key: 'stage.status.hint', zh: '', en: 'Use openfeel stage status <stageId> to view detailed status' },
|
|
264
|
+
'errorStageNotFoundTmpl': { key: 'stage.errorStageNotFoundTmpl', zh: '', en: 'Error: status.md not found for stage "{stageId}"' },
|
|
265
|
+
'errorCheckStageId': { key: 'stage.errorCheckStageId', zh: '', en: 'Please verify the stage ID is correct (e.g. v4-stage-04)' },
|
|
266
|
+
'set.errorFieldNotFoundTmpl': { key: 'stage.set.errorFieldNotFoundTmpl', zh: '', en: 'Error: "status" field not found in {stageId} status.md' },
|
|
267
|
+
'set.updatedTmpl': { key: 'stage.set.updatedTmpl', zh: '', en: '✓ Updated {stageId} status: → {status}' },
|
|
268
|
+
'task.errorMutualExclusive': { key: 'stage.task.errorMutualExclusive', zh: '', en: 'Error: Must specify --done or --undone (mutually exclusive)' },
|
|
269
|
+
'task.errorInvalidTaskNo': { key: 'stage.task.errorInvalidTaskNo', zh: '', en: 'Error: Task number must be a positive integer' },
|
|
270
|
+
'task.errorTaskNotFoundTmpl': { key: 'stage.task.errorTaskNotFoundTmpl', zh: '', en: 'Error: Task {taskNo} not found in {stageId} status.md' },
|
|
271
|
+
'task.done': { key: 'stage.task.done', zh: '', en: '✓ Checked' },
|
|
272
|
+
'task.undone': { key: 'stage.task.undone', zh: '', en: '○ Unchecked' },
|
|
273
|
+
'task.taskListTmpl': { key: 'stage.task.taskListTmpl', zh: '', en: 'Task list ({done}/{total} complete)' },
|
|
274
|
+
'task.taskItemTmpl': { key: 'stage.task.taskItemTmpl', zh: '', en: 'Task {number}: {desc}' },
|
|
275
|
+
'task.blockedByTmpl': { key: 'stage.task.blockedByTmpl', zh: '', en: 'Blocked by: {reason}' },
|
|
276
|
+
'task.actionLabelTmpl': { key: 'stage.task.actionLabelTmpl', zh: '', en: '{label} {stageId} Task {taskNo}' },
|
|
277
|
+
};
|
|
278
|
+
/* ==================== plan ==================== */
|
|
279
|
+
export const plan = {
|
|
280
|
+
'stage.createdTmpl': { key: 'plan.stage.createdTmpl', zh: '', en: 'Stage created: {name}' },
|
|
281
|
+
'stage.empty': { key: 'plan.stage.empty', zh: '', en: 'No working stages yet' },
|
|
282
|
+
'scheme.createdTmpl': { key: 'plan.scheme.createdTmpl', zh: '', en: 'Op created: {opId} ({stage})' },
|
|
283
|
+
'scheme.empty': { key: 'plan.scheme.empty', zh: '', en: 'No ops yet' },
|
|
284
|
+
};
|
|
285
|
+
/* ==================== knowledge ==================== */
|
|
286
|
+
export const knowledge = {
|
|
287
|
+
'list.empty': { key: 'knowledge.list.empty', zh: '', en: 'No knowledge entries' },
|
|
288
|
+
'list.enabled': { key: 'knowledge.list.enabled', zh: '', en: 'Enabled' },
|
|
289
|
+
'list.disabled': { key: 'knowledge.list.disabled', zh: '', en: 'Disabled' },
|
|
290
|
+
'add.errorInvalidCategoryTmpl': { key: 'knowledge.add.errorInvalidCategoryTmpl', zh: '', en: 'Error: Invalid category "{category}", valid values: {valid}' },
|
|
291
|
+
'add.errorNoContent': { key: 'knowledge.add.errorNoContent', zh: '', en: 'Error: Please use --content to provide content, or pipe content via stdin.' },
|
|
292
|
+
'add.errorEmptyContent': { key: 'knowledge.add.errorEmptyContent', zh: '', en: 'Error: Content cannot be empty.' },
|
|
293
|
+
'add.okTmpl': { key: 'knowledge.add.okTmpl', zh: '', en: '✓ Knowledge entry added: [{category}] {title}' },
|
|
294
|
+
'search.noResultsTmpl': { key: 'knowledge.search.noResultsTmpl', zh: '', en: 'No knowledge entries found matching "{query}".' },
|
|
295
|
+
'search.offsetOutOfBoundsTmpl': { key: 'knowledge.search.offsetOutOfBoundsTmpl', zh: '', en: '(Offset {offset} out of bounds)' },
|
|
296
|
+
'search.foundTmpl': { key: 'knowledge.search.foundTmpl', zh: '', en: 'Found {n} match(es)' },
|
|
297
|
+
'index.categoryOverview': { key: 'knowledge.index.categoryOverview', zh: '', en: '=== Category Overview ===' },
|
|
298
|
+
'index.noCategories': { key: 'knowledge.index.noCategories', zh: '', en: '(No categories)' },
|
|
299
|
+
'index.recentUpdates': { key: 'knowledge.index.recentUpdates', zh: '', en: '=== Recent Updates ===' },
|
|
300
|
+
'index.noUpdates': { key: 'knowledge.index.noUpdates', zh: '', en: 'No updates yet.' },
|
|
301
|
+
// knowledge list 表头列名
|
|
302
|
+
'list.colCategory': { key: 'knowledge.list.colCategory', zh: '', en: 'Category' },
|
|
303
|
+
'list.colTitle': { key: 'knowledge.list.colTitle', zh: '', en: 'Title' },
|
|
304
|
+
'list.colDate': { key: 'knowledge.list.colDate', zh: '', en: 'Date' },
|
|
305
|
+
// knowledge index 表头列名
|
|
306
|
+
'index.colDate': { key: 'knowledge.index.colDate', zh: '', en: 'Date' },
|
|
307
|
+
'index.colCategory': { key: 'knowledge.index.colCategory', zh: '', en: 'Category' },
|
|
308
|
+
'index.colTitle': { key: 'knowledge.index.colTitle', zh: '', en: 'Title' },
|
|
309
|
+
};
|
|
310
|
+
/* ==================== archive ==================== */
|
|
311
|
+
export const archive = {
|
|
312
|
+
'errorArchiveFailedTmpl': { key: 'archive.errorArchiveFailedTmpl', zh: '', en: 'Error: Archive failed, please confirm stage "{stage}" exists and flow.json is initialized.' },
|
|
313
|
+
'okTmpl': { key: 'archive.okTmpl', zh: '', en: '✓ Stage archived: {stage}' },
|
|
314
|
+
'opsCount': { key: 'archive.opsCount', zh: '', en: 'Ops' },
|
|
315
|
+
'reviewsCount': { key: 'archive.reviewsCount', zh: '', en: 'Review Entries' },
|
|
316
|
+
'knowledgeExtracts': { key: 'archive.knowledgeExtracts', zh: '', en: 'Knowledge Extracts' },
|
|
317
|
+
'archivePath': { key: 'archive.archivePath', zh: '', en: 'Archive File' },
|
|
318
|
+
};
|
|
319
|
+
/* ==================== roadmap ==================== */
|
|
320
|
+
export const roadmap = {};
|
|
321
|
+
/* ==================== view ==================== */
|
|
322
|
+
export const view = {
|
|
323
|
+
'list.empty': { key: 'view.list.empty', zh: '', en: 'No review entries' },
|
|
324
|
+
'list.filedBy': { key: 'view.list.filedBy', zh: '', en: 'Filed By' },
|
|
325
|
+
'list.filedAt': { key: 'view.list.filedAt', zh: '', en: 'Time' },
|
|
326
|
+
'add.errorInvalidPriorityTmpl': { key: 'view.add.errorInvalidPriorityTmpl', zh: '', en: 'Error: Invalid priority "{priority}", options: high / medium / low' },
|
|
327
|
+
'add.okTmpl': { key: 'view.add.okTmpl', zh: '', en: '✓ Review entry added: {id} ({op}) — {title}' },
|
|
328
|
+
'accept.okTmpl': { key: 'view.accept.okTmpl', zh: '', en: '✓ Review entry accepted: {id} → closed' },
|
|
329
|
+
'accept.errorNotFoundTmpl': { key: 'view.accept.errorNotFoundTmpl', zh: '', en: 'Error: Review entry {id} not found' },
|
|
330
|
+
};
|
|
331
|
+
/* ==================== instructions ==================== */
|
|
332
|
+
export const instructions = {};
|
|
333
|
+
/* ==================== lint ==================== */
|
|
334
|
+
export const lint = {
|
|
335
|
+
'i18n.okTmpl': { key: 'lint.i18n.okTmpl', zh: '', en: '✅ {n} key(s) consistent' },
|
|
336
|
+
'i18n.failTitleTmpl': { key: 'lint.i18n.failTitleTmpl', zh: '', en: '❌ {m} problem(s)' },
|
|
337
|
+
'i18n.consistentTmpl': { key: 'lint.i18n.consistentTmpl', zh: '', en: '({n} consistent / {total} total keys)' },
|
|
338
|
+
'i18n.emptyZhTmpl': { key: 'lint.i18n.emptyZhTmpl', zh: '', en: '[empty zh-CN] {key}' },
|
|
339
|
+
'i18n.emptyEnTmpl': { key: 'lint.i18n.emptyEnTmpl', zh: '', en: '[empty en] {key}' },
|
|
340
|
+
'i18n.zhOnlyTmpl': { key: 'lint.i18n.zhOnlyTmpl', zh: '', en: '[zh-CN only] {key}' },
|
|
341
|
+
'i18n.enOnlyTmpl': { key: 'lint.i18n.enOnlyTmpl', zh: '', en: '[en only] {key}' },
|
|
342
|
+
'kb.noDir': { key: 'lint.kb.noDir', zh: '', en: '(.openfeel/kb/ directory does not exist)' },
|
|
343
|
+
'kb.scanTmpl': { key: 'lint.kb.scanTmpl', zh: '', en: 'Scanning file references in {n} kb file(s)...' },
|
|
344
|
+
'kb.okTmpl': { key: 'lint.kb.okTmpl', zh: '', en: '✅ No stale references (checked {n} reference(s))' },
|
|
345
|
+
'kb.staleTmpl': { key: 'lint.kb.staleTmpl', zh: '', en: '❌ Found {n} stale reference(s)' },
|
|
346
|
+
'kb.staleItemTmpl': { key: 'lint.kb.staleItemTmpl', zh: '', en: ' {file} L{line}: "{ref}" → file not found' },
|
|
347
|
+
};
|
|
348
|
+
/* ==================== help ==================== */
|
|
349
|
+
export const help = {
|
|
350
|
+
'openfeel': { key: 'help.openfeel', zh: '', en: 'AI Agent development workflow governance CLI tool' },
|
|
351
|
+
'openfeel.version': { key: 'help.openfeel.version', zh: '', en: 'Output version number' },
|
|
352
|
+
'init': { key: 'help.init', zh: '', en: 'Initialize project workspace, create .openfeel/ directory structure and config files' },
|
|
353
|
+
'init.demo': { key: 'help.init.demo', zh: '', en: 'Create demo project skeleton (NumKit style)' },
|
|
354
|
+
'init.lang': { key: 'help.init.lang', zh: '', en: 'Agent prompt language (zh-CN or en), defaults to zh-CN in non-interactive mode' },
|
|
355
|
+
'update': { key: 'help.update', zh: '', en: 'Deploy OpenFeel adapter files to target project (interactive tool selection when no args)' },
|
|
356
|
+
'update.lang': { key: 'help.update.lang', zh: '', en: 'Agent prompt language (zh-CN or en)' },
|
|
357
|
+
'update.force': { key: 'help.update.force', zh: '', en: 'Skip AGENTS.md overwrite confirmation, force overwrite' },
|
|
358
|
+
'flow': { key: 'help.flow', zh: '', en: 'Pipeline status management' },
|
|
359
|
+
'flow.status': { key: 'help.flow.status', zh: '', en: 'Show pipeline status summary' },
|
|
360
|
+
'flow.status.verbose': { key: 'help.flow.status.verbose', zh: '', en: 'Enhanced output: config cascade, recent changes, downstream agent readiness' },
|
|
361
|
+
'flow.status.lines': { key: 'help.flow.status.lines', zh: '', en: 'Number of recent status changes (default 5)' },
|
|
362
|
+
'flow.overview': { key: 'help.flow.overview', zh: '', en: 'Full status visualization (/opfx:status backend)' },
|
|
363
|
+
'flow.current': { key: 'help.flow.current', zh: '', en: 'Show current stage and operation' },
|
|
364
|
+
'flow.metrics': { key: 'help.flow.metrics', zh: '', en: 'Show Agent performance metrics' },
|
|
365
|
+
'flow.stage': { key: 'help.flow.stage', zh: '', en: 'Stage management' },
|
|
366
|
+
'flow.stage.add': { key: 'help.flow.stage.add', zh: '', en: 'Add pipeline stage' },
|
|
367
|
+
'flow.advance': { key: 'help.flow.advance', zh: '', en: 'Advance pipeline stage' },
|
|
368
|
+
'flow.advance.op': { key: 'help.flow.advance.op', zh: '', en: 'Operation ID (e.g. stage-01.op-001), for logging/display only' },
|
|
369
|
+
'flow.advance.to': { key: 'help.flow.advance.to', zh: '', en: 'Target phase (e.g. exec_running)' },
|
|
370
|
+
'flow.advance.stage': { key: 'help.flow.advance.stage', zh: '', en: 'Stage ID (e.g. stage-03), required' },
|
|
371
|
+
'flow.advance.force': { key: 'help.flow.advance.force', zh: '', en: 'Force execution (skip invalid phase check and phase jump check, but not REV block check)' },
|
|
372
|
+
'flow.attempt': { key: 'help.flow.attempt', zh: '', en: 'Record operation execution result' },
|
|
373
|
+
'flow.attempt.op': { key: 'help.flow.attempt.op', zh: '', en: 'Operation ID (e.g. stage-01.op-001)' },
|
|
374
|
+
'flow.attempt.result': { key: 'help.flow.attempt.result', zh: '', en: 'Execution result (pass or fail)' },
|
|
375
|
+
'flow.log': { key: 'help.flow.log', zh: '', en: 'Show recent operation logs' },
|
|
376
|
+
'flow.log.last': { key: 'help.flow.log.last', zh: '', en: 'Show last n entries (default 10)' },
|
|
377
|
+
'flow.review': { key: 'help.flow.review', zh: '', en: 'Manage review entries' },
|
|
378
|
+
'flow.review.add': { key: 'help.flow.review.add', zh: '', en: 'Add review entry' },
|
|
379
|
+
'flow.review.add.op': { key: 'help.flow.review.add.op', zh: '', en: 'Operation ID (e.g. stage-01.op-001)' },
|
|
380
|
+
'flow.review.add.title': { key: 'help.flow.review.add.title', zh: '', en: 'Review title' },
|
|
381
|
+
'flow.review.add.autoFix': { key: 'help.flow.review.add.autoFix', zh: '', en: 'Auto-fix detail, when set skips scheme_pending and advances directly to exec_running' },
|
|
382
|
+
'flow.review.add.blocking': { key: 'help.flow.review.add.blocking', zh: '', en: 'Whether to block pipeline (default true)' },
|
|
383
|
+
'flow.review.resolve': { key: 'help.flow.review.resolve', zh: '', en: 'Resolve review entry' },
|
|
384
|
+
'flow.retry': { key: 'help.flow.retry', zh: '', en: 'Query operation retry status' },
|
|
385
|
+
'flow.retry.op': { key: 'help.flow.retry.op', zh: '', en: 'Operation ID (e.g. stage-01.op-001)' },
|
|
386
|
+
'flow.repair': { key: 'help.flow.repair', zh: '', en: 'Auto-detect and fix common issues in flow.json' },
|
|
387
|
+
'flow.repair.dryRun': { key: 'help.flow.repair.dryRun', zh: '', en: 'Detect only, do not fix' },
|
|
388
|
+
'flow.repair.backup': { key: 'help.flow.repair.backup', zh: '', en: 'Backup as .bak before repair' },
|
|
389
|
+
'flow.migrate': { key: 'help.flow.migrate', zh: '', en: 'Migrate legacy flow.json (v4.0 global phase) to new format (v4.1 stage-level phase)' },
|
|
390
|
+
'flow.migrate.dryRun': { key: 'help.flow.migrate.dryRun', zh: '', en: 'Preview only, do not write files' },
|
|
391
|
+
'flow.migrate.noBackup': { key: 'help.flow.migrate.noBackup', zh: '', en: 'Skip .bak file generation (default generates flow.json.v4.0.bak)' },
|
|
392
|
+
'flow.health': { key: 'help.flow.health', zh: '', en: 'Comprehensive health check: flow.json / cross-file consistency / zombie states / config.yaml etc.' },
|
|
393
|
+
'flow.health.quick': { key: 'help.flow.health.quick', zh: '', en: 'Key checks only (phase/current validity, skip other checks)' },
|
|
394
|
+
'flow.checkpoint': { key: 'help.flow.checkpoint', zh: '', en: 'Checkpoint snapshot management (auto-saves flow.json snapshots on phase advance)' },
|
|
395
|
+
'flow.checkpoint.list': { key: 'help.flow.checkpoint.list', zh: '', en: 'List all (or stage-filtered) checkpoint snapshots' },
|
|
396
|
+
'flow.checkpoint.restore': { key: 'help.flow.checkpoint.restore', zh: '', en: 'Restore flow.json from a checkpoint snapshot (overwrites current file, requires --force)' },
|
|
397
|
+
'flow.checkpoint.restore.force': { key: 'help.flow.checkpoint.restore.force', zh: '', en: 'Confirm restore operation (overwrites current flow.json)' },
|
|
398
|
+
'flow.recover': { key: 'help.flow.recover', zh: '', en: 'Cross-session context recovery: pipeline status, blockers, and pending tasks' },
|
|
399
|
+
'flow.wizard': { key: 'help.flow.wizard', zh: '', en: 'Interactive pipeline wizard, advance stage by stage' },
|
|
400
|
+
'config.get-lang': { key: 'help.config.get-lang', zh: '', en: 'Show global default language' },
|
|
401
|
+
'config.set-lang': { key: 'help.config.set-lang', zh: '', en: 'Change global default language (zh-CN or en)' },
|
|
402
|
+
'config.list-projects': { key: 'help.config.list-projects', zh: '', en: 'List all recorded project path→language mappings' },
|
|
403
|
+
'config.get': { key: 'help.config.get', zh: '', en: 'Read a config value (project config; --global reads global profile)' },
|
|
404
|
+
'config.get.global': { key: 'help.config.get.global', zh: '', en: 'Operate on global profile (~/.config/openfeel/profile.yaml)' },
|
|
405
|
+
'config.set': { key: 'help.config.set', zh: '', en: 'Set a config value (project config; --global writes global profile)' },
|
|
406
|
+
'config.set.global': { key: 'help.config.set.global', zh: '', en: 'Operate on global profile (~/.config/openfeel/profile.yaml)' },
|
|
407
|
+
'project': { key: 'help.project', zh: '', en: 'Project management and overview' },
|
|
408
|
+
'project.overview': { key: 'help.project.overview', zh: '', en: 'Scan project structure in real-time, output structured overview' },
|
|
409
|
+
'plan': { key: 'help.plan', zh: '', en: 'Plan management' },
|
|
410
|
+
'plan.stage': { key: 'help.plan.stage', zh: '', en: 'Work stage management' },
|
|
411
|
+
'plan.stage.add': { key: 'help.plan.stage.add', zh: '', en: 'Add work stage' },
|
|
412
|
+
'plan.stage.list': { key: 'help.plan.stage.list', zh: '', en: 'List all work stages' },
|
|
413
|
+
'plan.scheme': { key: 'help.plan.scheme', zh: '', en: 'Operation scheme management' },
|
|
414
|
+
'plan.scheme.create': { key: 'help.plan.scheme.create', zh: '', en: 'Create operation scheme' },
|
|
415
|
+
'plan.scheme.list': { key: 'help.plan.scheme.list', zh: '', en: 'List operation schemes (optionally filter by stage)' },
|
|
416
|
+
'stage': { key: 'help.stage', zh: '', en: 'Work stage status management (status.md atomic operations)' },
|
|
417
|
+
'stage.status': { key: 'help.stage.status', zh: '', en: 'View stage status (list all stages when no arg)' },
|
|
418
|
+
'stage.set': { key: 'help.stage.set', zh: '', en: 'Set stage status field (atomic update, preserve rest)' },
|
|
419
|
+
'stage.set.status': { key: 'help.stage.set.status', zh: '', en: 'Status value (e.g. exec_running)' },
|
|
420
|
+
'stage.task': { key: 'help.stage.task', zh: '', en: 'Check or uncheck task checkbox' },
|
|
421
|
+
'stage.task.done': { key: 'help.stage.task.done', zh: '', en: 'Mark task as done' },
|
|
422
|
+
'stage.task.undone': { key: 'help.stage.task.undone', zh: '', en: 'Mark task as not done' },
|
|
423
|
+
'view': { key: 'help.view', zh: '', en: 'Review entry management' },
|
|
424
|
+
'view.list': { key: 'help.view.list', zh: '', en: 'List review entries' },
|
|
425
|
+
'view.list.op': { key: 'help.view.list.op', zh: '', en: 'Filter by operation ID' },
|
|
426
|
+
'view.add': { key: 'help.view.add', zh: '', en: 'Add review entry' },
|
|
427
|
+
'view.add.op': { key: 'help.view.add.op', zh: '', en: 'Operation ID (e.g. stage-01.op-001)' },
|
|
428
|
+
'view.add.title': { key: 'help.view.add.title', zh: '', en: 'Review title' },
|
|
429
|
+
'view.add.priority': { key: 'help.view.add.priority', zh: '', en: 'Priority (high/medium/low, default medium)' },
|
|
430
|
+
'view.accept': { key: 'help.view.accept', zh: '', en: 'Accept review entry (mark as closed)' },
|
|
431
|
+
'knowledge': { key: 'help.knowledge', zh: '', en: 'Knowledge base management' },
|
|
432
|
+
'knowledge.list': { key: 'help.knowledge.list', zh: '', en: 'List knowledge entries' },
|
|
433
|
+
'knowledge.list.type': { key: 'help.knowledge.list.type', zh: '', en: 'Filter by category' },
|
|
434
|
+
'knowledge.add': { key: 'help.knowledge.add', zh: '', en: 'Add knowledge entry' },
|
|
435
|
+
'knowledge.add.content': { key: 'help.knowledge.add.content', zh: '', en: 'Entry content (can also be piped via stdin)' },
|
|
436
|
+
'knowledge.search': { key: 'help.knowledge.search', zh: '', en: 'Search knowledge base' },
|
|
437
|
+
'knowledge.search.limit': { key: 'help.knowledge.search.limit', zh: '', en: 'Max results (default 10)' },
|
|
438
|
+
'knowledge.search.offset': { key: 'help.knowledge.search.offset', zh: '', en: 'Result offset (default 0)' },
|
|
439
|
+
'knowledge.index': { key: 'help.knowledge.index', zh: '', en: 'Show knowledge base index overview' },
|
|
440
|
+
'archive': { key: 'help.archive', zh: '', en: 'Archive stage (summarize output, generate summary, extract knowledge)' },
|
|
441
|
+
'roadmap': { key: 'help.roadmap', zh: '', en: 'Roadmap management' },
|
|
442
|
+
'roadmap.create': { key: 'help.roadmap.create', zh: '', en: 'Create roadmap (version number like 1.0, 2.0)' },
|
|
443
|
+
'roadmap.show': { key: 'help.roadmap.show', zh: '', en: 'Show roadmap content (list all if no version)' },
|
|
444
|
+
'instructions': { key: 'help.instructions', zh: '', en: 'Generate structured instructions (XML or JSON) for an artifact' },
|
|
445
|
+
'instructions.change': { key: 'help.instructions.change', zh: '', en: 'Change name (e.g. feat-login)' },
|
|
446
|
+
'instructions.json': { key: 'help.instructions.json', zh: '', en: 'Output JSON format instead of XML' },
|
|
447
|
+
'instructions.schema': { key: 'help.instructions.schema', zh: '', en: 'Schema name (default spec-driven)' },
|
|
448
|
+
'lint': { key: 'help.lint', zh: '', en: 'Project health checks (i18n key consistency, kb reference validity)' },
|
|
449
|
+
'lint.i18n': { key: 'help.lint.i18n', zh: '', en: 'Validate i18n key consistency (empty values / zh-CN-only / en-only keys)' },
|
|
450
|
+
'lint.kb': { key: 'help.lint.kb', zh: '', en: 'Detect stale file references in .openfeel/kb/' },
|
|
451
|
+
};
|
|
452
|
+
/* ==================== config ==================== */
|
|
453
|
+
export const config = {
|
|
454
|
+
'get.lang': { key: 'config.get.lang', zh: '', en: 'Global language: {lang}' },
|
|
455
|
+
'set.ok': { key: 'config.set.ok', zh: '', en: 'Global language set to: {lang}' },
|
|
456
|
+
'set.invalidLang': { key: 'config.set.invalidLang', zh: '', en: 'Invalid language "{val}". Supported: zh-CN and en' },
|
|
457
|
+
'list.title': { key: 'config.list.title', zh: '', en: 'Recorded project language mappings:' },
|
|
458
|
+
'list.empty': { key: 'config.list.empty', zh: '', en: '(No projects recorded)' },
|
|
459
|
+
'list.item': { key: 'config.list.item', zh: '', en: ' {path} → {lang}' },
|
|
460
|
+
'get.result': { key: 'config.get.result', zh: '', en: '{key}: {value}' },
|
|
461
|
+
'get.noProject': { key: 'config.get.noProject', zh: '', en: 'Failed to read project config: {err}' },
|
|
462
|
+
'get.globalProfileNotFound': { key: 'config.get.globalProfileNotFound', zh: '', en: 'Global profile not set (using defaults)' },
|
|
463
|
+
'get.globalKeyNotFound': { key: 'config.get.globalKeyNotFound', zh: '', en: '{key}: not set' },
|
|
464
|
+
'get.globalResult': { key: 'config.get.globalResult', zh: '', en: '{key}: {value}' },
|
|
465
|
+
'set.valueOk': { key: 'config.set.valueOk', zh: '', en: '{key} set to: {value}' },
|
|
466
|
+
'set.invalidKey': { key: 'config.set.invalidKey', zh: '', en: 'Invalid config key "{val}". Currently supported: {keys}' },
|
|
467
|
+
'set.invalidValue': { key: 'config.set.invalidValue', zh: '', en: 'Invalid value "{val}". {key} only supports: {values}' },
|
|
468
|
+
'set.error': { key: 'config.set.error', zh: '', en: 'Failed to write project config: {err}' },
|
|
469
|
+
'set.globalInvalidKey': { key: 'config.set.globalInvalidKey', zh: '', en: 'Invalid global config key "{val}"' },
|
|
470
|
+
'set.globalInvalidValue': { key: 'config.set.globalInvalidValue', zh: '', en: 'Invalid value "{val}". {key} only supports: {values}' },
|
|
471
|
+
'set.globalValueOk': { key: 'config.set.globalValueOk', zh: '', en: '✓ Global config set: {key} = {value}' },
|
|
472
|
+
'set.globalAllowedKeys': { key: 'config.set.globalAllowedKeys', zh: '', en: 'Supported global config keys: {keys}' },
|
|
473
|
+
};
|
|
474
|
+
/* ==================== 聚合导出 ==================== */
|
|
475
|
+
export const allDomains = [
|
|
476
|
+
{ name: 'common', domain: common },
|
|
477
|
+
{ name: 'help', domain: help },
|
|
478
|
+
{ name: 'flow', domain: flow },
|
|
479
|
+
{ name: 'init', domain: init },
|
|
480
|
+
{ name: 'update', domain: update },
|
|
481
|
+
{ name: 'project', domain: project },
|
|
482
|
+
{ name: 'stage', domain: stage },
|
|
483
|
+
{ name: 'plan', domain: plan },
|
|
484
|
+
{ name: 'knowledge', domain: knowledge },
|
|
485
|
+
{ name: 'archive', domain: archive },
|
|
486
|
+
{ name: 'roadmap', domain: roadmap },
|
|
487
|
+
{ name: 'view', domain: view },
|
|
488
|
+
{ name: 'instructions', domain: instructions },
|
|
489
|
+
{ name: 'lint', domain: lint },
|
|
490
|
+
{ name: 'config', domain: config },
|
|
491
|
+
];
|
|
492
|
+
//# sourceMappingURL=en.js.map
|