teamix-evo 0.10.1 → 0.11.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/dist/core/index.d.ts +38 -293
- package/dist/core/index.js +627 -2724
- package/dist/core/index.js.map +1 -1
- package/dist/index.js +1020 -2101
- package/dist/index.js.map +1 -1
- package/package.json +17 -17
- package/LICENSE +0 -21
package/dist/core/index.d.ts
CHANGED
|
@@ -104,10 +104,12 @@ type RunSkillsInitResult = {
|
|
|
104
104
|
addedSkillIds: string[];
|
|
105
105
|
skippedSkillIds: string[];
|
|
106
106
|
/**
|
|
107
|
-
*
|
|
108
|
-
*
|
|
109
|
-
|
|
110
|
-
|
|
107
|
+
* Skill ids that were auto-upgraded because their locked version was
|
|
108
|
+
* older than the manifest version.
|
|
109
|
+
*/
|
|
110
|
+
autoUpdatedSkillIds: string[];
|
|
111
|
+
/**
|
|
112
|
+
* @deprecated Outdated skills are now auto-upgraded; kept for compat.
|
|
111
113
|
*/
|
|
112
114
|
outdatedSkills: OutdatedSkillInfo[];
|
|
113
115
|
} | {
|
|
@@ -168,14 +170,17 @@ type RunSkillsAddResult = {
|
|
|
168
170
|
addedSkillIds: string[];
|
|
169
171
|
/**
|
|
170
172
|
* Skill ids that were requested but already installed at the latest version;
|
|
171
|
-
* nothing to do.
|
|
172
|
-
* {@link outdatedSkills}.
|
|
173
|
+
* nothing to do.
|
|
173
174
|
*/
|
|
174
175
|
skippedSkillIds: string[];
|
|
175
176
|
/**
|
|
176
|
-
* Skill ids that were
|
|
177
|
-
*
|
|
178
|
-
|
|
177
|
+
* Skill ids that were auto-upgraded because their locked version was older
|
|
178
|
+
* than the manifest version.
|
|
179
|
+
*/
|
|
180
|
+
autoUpdatedSkillIds: string[];
|
|
181
|
+
/**
|
|
182
|
+
* @deprecated Outdated skills are now auto-upgraded; this array is always
|
|
183
|
+
* empty. Kept for backward-compatible callers; will be removed in next major.
|
|
179
184
|
*/
|
|
180
185
|
outdatedSkills: OutdatedSkillInfo[];
|
|
181
186
|
};
|
|
@@ -670,63 +675,6 @@ interface ConflictReport {
|
|
|
670
675
|
*/
|
|
671
676
|
declare function detectConflicts(cwd: string): Promise<ConflictReport>;
|
|
672
677
|
|
|
673
|
-
/**
|
|
674
|
-
* Final answers produced by the init wizard. Every consumer of `teamix-evo
|
|
675
|
-
* init` (orchestrator + later sub-commands) reads from this object exclusively
|
|
676
|
-
* — flags / prompts must not be re-evaluated downstream (silent sub-commands).
|
|
677
|
-
*/
|
|
678
|
-
interface InitWizardAnswers {
|
|
679
|
-
variant: string;
|
|
680
|
-
ides: SkillIde[];
|
|
681
|
-
scope: SkillScope;
|
|
682
|
-
withLint: boolean;
|
|
683
|
-
withUi: boolean;
|
|
684
|
-
/** 'baseline' = preset 推荐组件子集;'all' = 全量装 */
|
|
685
|
-
uiSelection: 'baseline' | 'all';
|
|
686
|
-
withBizUi: boolean;
|
|
687
|
-
/**
|
|
688
|
-
* 每类冲突文件的最终策略。键是 6 类 ConflictKey,值是 user-chosen
|
|
689
|
-
* `ConflictStrategy`。当对应 ConflictItem.exists === false 时,值默认为
|
|
690
|
-
* `'overwrite'`(即首次写入)。
|
|
691
|
-
*/
|
|
692
|
-
conflictDecisions: Record<ConflictKey, ConflictStrategy>;
|
|
693
|
-
}
|
|
694
|
-
|
|
695
|
-
interface UiConflictEntry {
|
|
696
|
-
/** UI entry id from manifest (e.g. "button") */
|
|
697
|
-
id: string;
|
|
698
|
-
/** Absolute path on disk that conflicts */
|
|
699
|
-
targetPath: string;
|
|
700
|
-
/** Project-relative posix path for display */
|
|
701
|
-
relativePath: string;
|
|
702
|
-
/**
|
|
703
|
-
* Heuristic guess: true when the existing file looks like an unmodified
|
|
704
|
-
* shadcn/ui original (no `data-slot` attribute from teamix-evo).
|
|
705
|
-
* v1 uses filename + content heuristics; future versions may hash-compare.
|
|
706
|
-
*/
|
|
707
|
-
isShadcnOriginal: boolean;
|
|
708
|
-
}
|
|
709
|
-
interface UiConflictReport {
|
|
710
|
-
/** Entries whose target file already exists on disk */
|
|
711
|
-
conflictEntries: UiConflictEntry[];
|
|
712
|
-
/** Number of manifest entries with no on-disk conflict */
|
|
713
|
-
unconflictedTargets: number;
|
|
714
|
-
/** Total manifest entries checked */
|
|
715
|
-
totalEntries: number;
|
|
716
|
-
/** True when at least one conflict exists — caller should block */
|
|
717
|
-
shouldBlock: boolean;
|
|
718
|
-
/** Distinct target alias directories that have conflicts */
|
|
719
|
-
conflictDirs: string[];
|
|
720
|
-
}
|
|
721
|
-
|
|
722
|
-
/** Result of `createSnapshot` when a snapshot was actually taken. */
|
|
723
|
-
interface SnapshotResult {
|
|
724
|
-
/** Filesystem-safe UTC timestamp identifier (e.g. `2026-06-11T20-59-03-000Z`). */
|
|
725
|
-
ts: string;
|
|
726
|
-
/** Absolute path to the snapshot directory. */
|
|
727
|
-
path: string;
|
|
728
|
-
}
|
|
729
|
-
|
|
730
678
|
type FileChangeKind = 'created' | 'modified' | 'backed-up' | 'deleted';
|
|
731
679
|
interface FileChange {
|
|
732
680
|
kind: FileChangeKind;
|
|
@@ -739,267 +687,62 @@ interface FileChange {
|
|
|
739
687
|
}
|
|
740
688
|
|
|
741
689
|
/**
|
|
742
|
-
* Programmatic orchestrator for `teamix-evo init` (
|
|
743
|
-
*
|
|
744
|
-
* Consumes {@link InitWizardAnswers} produced by `runInitWizard` and drives
|
|
745
|
-
* the existing core sub-commands (`runTokensInit`, `runSkillsAdd`,
|
|
746
|
-
* `runGenerateAgentsMd`, `runUiInit`, `runUiAdd`, `runLintInit`) in a fixed
|
|
747
|
-
* order. Sub-commands are invoked silently — no interactive prompts here.
|
|
690
|
+
* Programmatic orchestrator for `teamix-evo init` (ADR 0043).
|
|
748
691
|
*
|
|
749
|
-
*
|
|
750
|
-
*
|
|
751
|
-
*
|
|
752
|
-
* - `'merge-managed'` (agents-md) is implemented today via
|
|
753
|
-
* `runGenerateAgentsMd` which writes managed regions natively.
|
|
754
|
-
* - `'skip-existing'` (shadcn-source) maps to `runUiAdd({ overwrite: false })`,
|
|
755
|
-
* the existing default.
|
|
756
|
-
* - All other strategies (`diff-prompt`, `backup-overwrite`, `migrate`,
|
|
757
|
-
* `coexist`, `append`, `per-file-prompt`) require the managed-region engine
|
|
758
|
-
* from batch 4 — they are recorded to `pendingConflictWork` so the CLI
|
|
759
|
-
* surface can guide the user to the followup `teamix-evo conflict resolve`
|
|
760
|
-
* step (post-batch-4).
|
|
692
|
+
* Drives the 8-step pipeline that installs the full teamix-evo suite into an
|
|
693
|
+
* existing project. Each step is idempotent — re-running `init` picks up from
|
|
694
|
+
* where it left off.
|
|
761
695
|
*
|
|
762
|
-
*
|
|
696
|
+
* Conflict handling is intentionally thin (ADR 0043 §3): detect → terminate →
|
|
697
|
+
* structured output → AI decides. The orchestrator only checks `force` — when
|
|
698
|
+
* true, it skips conflict detection entirely.
|
|
763
699
|
*/
|
|
764
700
|
|
|
765
|
-
|
|
766
|
-
* Strategy for handling UI component conflicts when existing shadcn/ui
|
|
767
|
-
* components are found in the target project.
|
|
768
|
-
*
|
|
769
|
-
* - `isolate-progressive` (Path A): move existing → shadcn-ui/, install
|
|
770
|
-
* fresh teamix-evo components into ui/, rewrite imports, let user
|
|
771
|
-
* migrate at their own pace.
|
|
772
|
-
* - `isolate-aggressive` (Path C): same as A + immediately generate
|
|
773
|
-
* upgrade staging so user can batch-replace.
|
|
774
|
-
* - `frozen-skip`: legacy behaviour — skip existing files, no migration.
|
|
775
|
-
*/
|
|
776
|
-
type UiConflictStrategy = 'isolate-progressive' | 'isolate-aggressive' | 'frozen-skip';
|
|
777
|
-
type ProjectInitStepName = 'tokens' | 'skills' | 'agents-md' | 'ui-init' | 'ui-add' | 'lint' | 'gitignore';
|
|
701
|
+
type ProjectInitStepName = 'tokens' | 'skills' | 'agents-md' | 'ui-init' | 'ui-add' | 'biz-ui-add' | 'lint' | 'gitignore';
|
|
778
702
|
type ProjectInitStepStatus = 'ok' | 'skip' | 'fail' | 'planned';
|
|
779
703
|
interface ProjectInitStep {
|
|
780
704
|
name: ProjectInitStepName;
|
|
781
705
|
status: ProjectInitStepStatus;
|
|
782
706
|
detail?: string;
|
|
783
|
-
/**
|
|
784
|
-
* Files this step touched (Phase 1.A1). Empty when the step skipped or
|
|
785
|
-
* failed before any I/O. The `kind` is `created` by default; the orchestrator
|
|
786
|
-
* upgrades entries to `modified` post-hoc by checking the backup ledger
|
|
787
|
-
* (`.teamix-evo/.backups/`).
|
|
788
|
-
*/
|
|
707
|
+
/** Files this step touched. */
|
|
789
708
|
changes?: FileChange[];
|
|
790
709
|
}
|
|
791
|
-
interface PendingConflictWork {
|
|
792
|
-
key: ConflictKey;
|
|
793
|
-
strategy: ConflictStrategy;
|
|
794
|
-
reason: string;
|
|
795
|
-
}
|
|
796
710
|
interface ResumeHint {
|
|
797
|
-
/** The first step that failed (caller resumes from here). */
|
|
798
711
|
failedAt: ProjectInitStepName;
|
|
799
|
-
/** Steps already finished (status === 'ok'); will short-circuit on resume. */
|
|
800
712
|
completed: ProjectInitStepName[];
|
|
801
|
-
/** All steps that ended in fail status. */
|
|
802
713
|
failed: ProjectInitStepName[];
|
|
803
|
-
/** Human-readable error from the first failed step. */
|
|
804
714
|
error: string;
|
|
805
|
-
/**
|
|
806
|
-
* Suggested CLI command to resume. Today this is just `teamix-evo init`
|
|
807
|
-
* itself — every sub-step is idempotent (returns `already-initialized`
|
|
808
|
-
* when the matching state file already exists), so a re-run continues
|
|
809
|
-
* from the failure point automatically. Future batches may grow a
|
|
810
|
-
* dedicated `--resume` flag with a richer recovery model (batch 3).
|
|
811
|
-
*/
|
|
812
715
|
resumeCommand: string;
|
|
813
716
|
}
|
|
814
717
|
interface RunProjectInitOptions {
|
|
815
718
|
/** Absolute project root (existing repo to adopt teamix-evo into). */
|
|
816
719
|
projectRoot: string;
|
|
817
|
-
/**
|
|
818
|
-
|
|
819
|
-
/**
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
*/
|
|
824
|
-
uiEntries?: string[];
|
|
720
|
+
/** Tokens variant (e.g. "opentrek" / "uni-manager"). */
|
|
721
|
+
variant: string;
|
|
722
|
+
/** Target IDEs (at least one). */
|
|
723
|
+
ides: SkillIde[];
|
|
724
|
+
/** Skill install scope. Defaults to 'project'. */
|
|
725
|
+
scope?: SkillScope;
|
|
825
726
|
/**
|
|
826
|
-
*
|
|
827
|
-
*
|
|
828
|
-
* everything in one batch.
|
|
727
|
+
* When true, skip conflict detection and overwrite everything.
|
|
728
|
+
* Distinction: init --force = skip conflict check; create --force = overwrite directory.
|
|
829
729
|
*/
|
|
730
|
+
force?: boolean;
|
|
731
|
+
/** Skip `npm install` for lint deps. */
|
|
830
732
|
skipInstall?: boolean;
|
|
831
|
-
/**
|
|
832
|
-
* Legacy token CSS files (paths relative to `projectRoot`) detected by
|
|
833
|
-
* `detectConflicts` for the `tokens` key. When `conflictDecisions.tokens`
|
|
834
|
-
* is `'migrate'` and this list is non-empty, the orchestrator appends
|
|
835
|
-
* each file's content into `tokens/tokens.overrides.css` and backs the
|
|
836
|
-
* legacy files up to `.teamix-evo/.backups/` (W1.4 of the manage-entry
|
|
837
|
-
* plan; see [`legacy-tokens-migrate`](./legacy-tokens-migrate.ts)).
|
|
838
|
-
*
|
|
839
|
-
* Ignored for any other `tokens` decision. The caller (init command) is
|
|
840
|
-
* responsible for filtering out paths already inside `tokens/`.
|
|
841
|
-
*/
|
|
842
|
-
legacyTokensPaths?: string[];
|
|
843
|
-
/**
|
|
844
|
-
* Phase 3.E: existing ESLint config paths (relative to `projectRoot`)
|
|
845
|
-
* detected by `detectConflicts` for the `eslint-config` key. Used to
|
|
846
|
-
* back up the consumer's file before writing the teamix-evo template,
|
|
847
|
-
* and to gate the `merge` / `backup-overwrite` / `skip` strategies in
|
|
848
|
-
* `runLintInit`.
|
|
849
|
-
*/
|
|
850
|
-
legacyEslintPaths?: string[];
|
|
851
|
-
/**
|
|
852
|
-
* Phase 3.E: existing Stylelint config paths (relative to `projectRoot`).
|
|
853
|
-
*/
|
|
854
|
-
legacyStylelintPaths?: string[];
|
|
855
|
-
/**
|
|
856
|
-
* UI conflict resolution strategy. When omitted AND conflicts are
|
|
857
|
-
* detected, the orchestrator returns `uiDecisionRequired` so the
|
|
858
|
-
* caller can prompt the user. When `-y` (non-interactive), defaults
|
|
859
|
-
* to `'isolate-progressive'`.
|
|
860
|
-
*/
|
|
861
|
-
uiConflictStrategy?: UiConflictStrategy;
|
|
862
|
-
/**
|
|
863
|
-
* When true, treat the invocation as non-interactive (`-y` flag).
|
|
864
|
-
* Affects default conflict strategy selection.
|
|
865
|
-
*/
|
|
866
|
-
nonInteractive?: boolean;
|
|
867
|
-
/** Step-level progress hook (caller controls presentation). */
|
|
733
|
+
/** Step-level progress hook. */
|
|
868
734
|
onStep?: (step: ProjectInitStep) => void;
|
|
869
|
-
/**
|
|
870
|
-
* If true, plan-only mode: compute the full step list without running any
|
|
871
|
-
* sub-command. Returns each step with `status: 'planned'`.
|
|
872
|
-
*/
|
|
735
|
+
/** Plan-only mode: compute steps without running sub-commands. */
|
|
873
736
|
dryRun?: boolean;
|
|
874
737
|
}
|
|
875
|
-
/**
|
|
876
|
-
* Returned when UI conflicts are detected and no `uiConflictStrategy` was
|
|
877
|
-
* provided. The caller should present the options to the user and re-invoke
|
|
878
|
-
* `runProjectInit` with the chosen strategy.
|
|
879
|
-
*/
|
|
880
|
-
interface UiDecisionRequired {
|
|
881
|
-
/** The full conflict report for display */
|
|
882
|
-
report: UiConflictReport;
|
|
883
|
-
/** Available strategies with human-readable descriptions */
|
|
884
|
-
options: Array<{
|
|
885
|
-
strategy: UiConflictStrategy;
|
|
886
|
-
label: string;
|
|
887
|
-
description: string;
|
|
888
|
-
}>;
|
|
889
|
-
}
|
|
890
738
|
interface RunProjectInitResult {
|
|
891
739
|
status: 'installed' | 'partial' | 'dry-run';
|
|
892
740
|
steps: ProjectInitStep[];
|
|
893
|
-
/** Conflicts whose strategy needs the post-batch-4 managed-region engine. */
|
|
894
|
-
pendingConflictWork: PendingConflictWork[];
|
|
895
|
-
/**
|
|
896
|
-
* Aggregated, classified file-change ledger covering every step
|
|
897
|
-
* (Phase 1.A1). Backup entries are surfaced as `kind: 'backed-up'` so the
|
|
898
|
-
* CLI can render a four-bucket summary (新建 / 修改 / 备份 / 删除).
|
|
899
|
-
*/
|
|
900
741
|
changes: FileChange[];
|
|
901
|
-
/**
|
|
902
|
-
* Present when at least one step ended in `fail`. Lets the CLI surface a
|
|
903
|
-
* structured recovery message instead of just a stack-trace, and gives
|
|
904
|
-
* programmatic consumers a deterministic field to branch on.
|
|
905
|
-
*/
|
|
906
742
|
resumeHint?: ResumeHint;
|
|
907
|
-
/**
|
|
908
|
-
* Pre-init snapshot of `.teamix-evo/`, captured automatically before any
|
|
909
|
-
* file is written ([ADR 0019](../../../../docs/adr/0019-project-upgrade-flow.md) §2).
|
|
910
|
-
*
|
|
911
|
-
* - `null` on first-ever init (`.teamix-evo/` did not yet exist) and on
|
|
912
|
-
* `dryRun`.
|
|
913
|
-
* - Failure to capture a snapshot is **non-fatal** — surfaced via
|
|
914
|
-
* {@link snapshotError} so the CLI can warn the user. The init pipeline
|
|
915
|
-
* itself still runs.
|
|
916
|
-
*/
|
|
917
|
-
snapshot?: SnapshotResult | null;
|
|
918
|
-
/** Reason a snapshot capture failed (best-effort — never blocks init). */
|
|
919
|
-
snapshotError?: string;
|
|
920
|
-
/**
|
|
921
|
-
* Present when UI conflicts are detected and no `uiConflictStrategy`
|
|
922
|
-
* was provided (interactive mode). Caller should prompt the user with
|
|
923
|
-
* `options`, then re-invoke with the chosen strategy.
|
|
924
|
-
*/
|
|
925
|
-
uiDecisionRequired?: UiDecisionRequired;
|
|
926
743
|
}
|
|
927
|
-
/**
|
|
928
|
-
* Existing-project init pipeline.
|
|
929
|
-
*
|
|
930
|
-
* Order:
|
|
931
|
-
* 1. tokens init (auto-installs `teamix-evo-design-${variant}` skill)
|
|
932
|
-
* 2. skills add (`teamix-evo-code-${variant}`; entry skill is global, ADR 0033)
|
|
933
|
-
* 3. AGENTS.md (skill trigger fallback, ADR 0038)
|
|
934
|
-
* 4. ui init + ui add (gated by `withUi`)
|
|
935
|
-
* 5. lint init (gated by `withLint`)
|
|
936
|
-
*/
|
|
937
744
|
declare function runProjectInit(options: RunProjectInitOptions): Promise<RunProjectInitResult>;
|
|
938
745
|
|
|
939
|
-
type ProjectUpdateStepName = 'tokens' | 'skills' | 'ui' | 'biz-ui';
|
|
940
|
-
type ProjectUpdateStepStatus = 'ok' | 'skip' | 'fail' | 'planned';
|
|
941
|
-
interface ProjectUpdateStep {
|
|
942
|
-
name: ProjectUpdateStepName;
|
|
943
|
-
status: ProjectUpdateStepStatus;
|
|
944
|
-
detail?: string;
|
|
945
|
-
}
|
|
946
|
-
interface ProjectUpdateResumeHint {
|
|
947
|
-
/** The first step that failed (caller resumes from here). */
|
|
948
|
-
failedAt: ProjectUpdateStepName;
|
|
949
|
-
/** Steps already finished (status === 'ok'); will short-circuit on resume. */
|
|
950
|
-
completed: ProjectUpdateStepName[];
|
|
951
|
-
/** All steps that ended in fail status. */
|
|
952
|
-
failed: ProjectUpdateStepName[];
|
|
953
|
-
/** Human-readable error from the first failed step. */
|
|
954
|
-
error: string;
|
|
955
|
-
/**
|
|
956
|
-
* Suggested CLI command to resume. Today this is just `teamix-evo update`
|
|
957
|
-
* itself — every sub-step is idempotent (version-diff short-circuits when
|
|
958
|
-
* up-to-date), so a re-run continues from the failure point automatically.
|
|
959
|
-
*/
|
|
960
|
-
resumeCommand: string;
|
|
961
|
-
}
|
|
962
|
-
interface RunProjectUpdateOptions {
|
|
963
|
-
/** Absolute project root (must already be teamix-evo-installed). */
|
|
964
|
-
projectRoot: string;
|
|
965
|
-
/**
|
|
966
|
-
* If true, plan-only mode: compute version deltas without writing any
|
|
967
|
-
* file. Returns each step with `status: 'planned'`.
|
|
968
|
-
*/
|
|
969
|
-
dryRun?: boolean;
|
|
970
|
-
/** Step-level progress hook (caller controls presentation). */
|
|
971
|
-
onStep?: (step: ProjectUpdateStep) => void;
|
|
972
|
-
/** Override the tokens package name (defaults to `@teamix-evo/tokens`). */
|
|
973
|
-
tokensPackageName?: string;
|
|
974
|
-
/** Override the skills package name (defaults to `@teamix-evo/skills`). */
|
|
975
|
-
skillsPackageName?: string;
|
|
976
|
-
}
|
|
977
|
-
type RunProjectUpdateResult = {
|
|
978
|
-
status: 'not-initialized';
|
|
979
|
-
} | {
|
|
980
|
-
status: 'up-to-date' | 'updated' | 'partial' | 'dry-run';
|
|
981
|
-
steps: ProjectUpdateStep[];
|
|
982
|
-
resumeHint?: ProjectUpdateResumeHint;
|
|
983
|
-
/**
|
|
984
|
-
* Pre-update snapshot of `.teamix-evo/` ([ADR 0019](../../../../docs/adr/0019-project-upgrade-flow.md) §2).
|
|
985
|
-
* `null` on `dryRun`. Best-effort — capture failures surface via
|
|
986
|
-
* {@link snapshotError} but never abort the pipeline.
|
|
987
|
-
*/
|
|
988
|
-
snapshot?: SnapshotResult | null;
|
|
989
|
-
/** Reason a snapshot capture failed (best-effort — never blocks update). */
|
|
990
|
-
snapshotError?: string;
|
|
991
|
-
};
|
|
992
|
-
/**
|
|
993
|
-
* Post-init refresh pipeline.
|
|
994
|
-
*
|
|
995
|
-
* Order:
|
|
996
|
-
* 1. tokens update (regenerable rewrite + frozen preserved — ADR 0003 三态)
|
|
997
|
-
* 2. skills update (lock ∩ scope ∩ version-diff short-circuit — ADR 0035)
|
|
998
|
-
*
|
|
999
|
-
* Re-runs are safe: each sub-step short-circuits when already at latest.
|
|
1000
|
-
*/
|
|
1001
|
-
declare function runProjectUpdate(options: RunProjectUpdateOptions): Promise<RunProjectUpdateResult>;
|
|
1002
|
-
|
|
1003
746
|
interface InstallOptions {
|
|
1004
747
|
/** Project root directory */
|
|
1005
748
|
projectRoot: string;
|
|
@@ -1157,6 +900,8 @@ interface UiInstallOptions {
|
|
|
1157
900
|
requested: string[];
|
|
1158
901
|
/** When true, skip writing entries whose target file already exists (frozen-on-add). */
|
|
1159
902
|
skipExisting?: boolean;
|
|
903
|
+
/** When false, preserve directory structure in import paths (skip flattenRestPath). Defaults to true. */
|
|
904
|
+
flatten?: boolean;
|
|
1160
905
|
}
|
|
1161
906
|
interface UiInstallResult {
|
|
1162
907
|
/** Ordered list of entry ids that were processed (deps + requested) */
|
|
@@ -1247,4 +992,4 @@ declare function readInstalledManifest(projectRoot: string): Promise<InstalledMa
|
|
|
1247
992
|
*/
|
|
1248
993
|
declare function writeInstalledManifest(projectRoot: string, manifest: InstalledManifest): Promise<void>;
|
|
1249
994
|
|
|
1250
|
-
export { type ConflictItem, type ConflictKey, type ConflictReport, type ConflictStrategy, DEFAULT_UI_ALIASES, DEFAULT_UI_ICON_LIBRARY, type InstallOptions, type InstallResult, type ListVariantUiEntriesResult, type ListVariantUiResult, type ListVariantsResult, type
|
|
995
|
+
export { type ConflictItem, type ConflictKey, type ConflictReport, type ConflictStrategy, DEFAULT_UI_ALIASES, DEFAULT_UI_ICON_LIBRARY, type InstallOptions, type InstallResult, type ListVariantUiEntriesResult, type ListVariantUiResult, type ListVariantsResult, type ProjectInitStep, type ProjectInitStepName, type ProjectInitStepStatus, type ProjectState, type ProjectStateReport, type ResumeHint, type RunGenerateAgentsMdOptions, type RunGenerateAgentsMdResult, type RunLintInitOptions, type RunLintInitResult, type RunProjectInitOptions, type RunProjectInitResult, type RunSkillsAddOptions, type RunSkillsAddResult, type RunSkillsInitOptions, type RunSkillsInitResult, type RunSkillsUpdateOptions, type RunSkillsUpdateResult, type RunTokensInitOptions, type RunTokensInitResult, type RunUiAddOptions, type RunUiAddResult, type RunUiInitOptions, type RunUiInitResult, type RunUiListOptions, type RunUiListResult, type RunVariantUiAddOptions, type RunVariantUiAddResult, type SkillInstallOptions, type SkillInstallResult, type SkillSyncOptions, type SkillSyncResult, type SkillUpdateOptions, type SkillUpdateResult, type UiEntryListItem, type UiInstallOptions, type UiInstallResult, type UpdatePlanItem, detectConflicts, detectProjectState, ensureTeamixDir, extractDescriptionParts, getTeamixDir, installResources, installSkills, installUiEntries, listBizUiEntries, listBizUiVariants, listTemplatesEntries, listTemplatesVariants, listTokenVariants, loadSkillsData, loadUiData, loadVariantData, readInstalledManifest, readProjectConfig, removeSkillFiles, removeUiFiles, runBizUiAdd, runGenerateAgentsMd, runLintInit, runProjectInit, runSkillsAdd, runSkillsInit, runSkillsUpdate, runTemplatesAdd, runTokensInit, runUiAdd, runUiInit, runUiList, syncSkillsToIdes, updateSkills, writeInstalledManifest, writeProjectConfig };
|