@brimveyn/aimux-config 0.6.4 → 0.6.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/index.ts +2 -0
- package/src/resolver.ts +9 -0
- package/src/status-bar-runtime.ts +22 -0
- package/src/types.ts +31 -0
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -29,6 +29,7 @@ export { getDefaultKeymapConfig } from './defaults'
|
|
|
29
29
|
export { resolveConfig } from './resolver'
|
|
30
30
|
export { isAutoCommitEnabled, setAutoCommitEnabled } from './auto-commit-runtime'
|
|
31
31
|
export { getMultiRepoConfig, setMultiRepoConfig } from './multi-repo-runtime'
|
|
32
|
+
export { getStatusBarSeparator, setStatusBarSeparator } from './status-bar-runtime'
|
|
32
33
|
export {
|
|
33
34
|
DEFAULT_EDITOR_ARGS,
|
|
34
35
|
getExternalEditorConfig,
|
|
@@ -84,5 +85,6 @@ export type {
|
|
|
84
85
|
SnippetVar,
|
|
85
86
|
SplitDirection,
|
|
86
87
|
StatusBarConfig,
|
|
88
|
+
StatusBarSeparator,
|
|
87
89
|
TabSession,
|
|
88
90
|
} from './types'
|
package/src/resolver.ts
CHANGED
|
@@ -39,6 +39,7 @@ export function resolveConfig(userConfig: AimuxUserConfig): ResolvedConfig {
|
|
|
39
39
|
externalEditor: userConfig.externalEditor ?? {},
|
|
40
40
|
gitPane: resolveGitPane(userConfig.gitPane),
|
|
41
41
|
hooks: userConfig.hooks ?? {},
|
|
42
|
+
integrations: resolveIntegrations(userConfig.integrations),
|
|
42
43
|
keymaps,
|
|
43
44
|
multiRepo,
|
|
44
45
|
sessionBar: resolveSessionBar(userConfig.sessionBar),
|
|
@@ -50,6 +51,14 @@ export function resolveConfig(userConfig: AimuxUserConfig): ResolvedConfig {
|
|
|
50
51
|
}
|
|
51
52
|
}
|
|
52
53
|
|
|
54
|
+
function resolveIntegrations(
|
|
55
|
+
userConfig: AimuxUserConfig['integrations']
|
|
56
|
+
): ResolvedConfig['integrations'] {
|
|
57
|
+
return {
|
|
58
|
+
claudeHooks: userConfig?.claudeHooks === true,
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
53
62
|
function resolveSnippetTriggerChar(value: string | undefined): string {
|
|
54
63
|
return typeof value === 'string' && value.length === 1 ? value : ':'
|
|
55
64
|
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Module-level singleton mirroring `statusBar.separator` from the resolved
|
|
3
|
+
* config. The status bar component reads this each render; the app sets it
|
|
4
|
+
* once at startup so the value is stable for the session.
|
|
5
|
+
*
|
|
6
|
+
* Same pattern as `auto-commit-runtime` / `external-editor-runtime` — avoids
|
|
7
|
+
* threading config through React props or contexts.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import type { StatusBarSeparator } from './types'
|
|
11
|
+
|
|
12
|
+
const DEFAULT_SEPARATOR: StatusBarSeparator = 'arrow'
|
|
13
|
+
|
|
14
|
+
let separator: StatusBarSeparator = DEFAULT_SEPARATOR
|
|
15
|
+
|
|
16
|
+
export function setStatusBarSeparator(value: StatusBarSeparator | undefined): void {
|
|
17
|
+
separator = value ?? DEFAULT_SEPARATOR
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export function getStatusBarSeparator(): StatusBarSeparator {
|
|
21
|
+
return separator
|
|
22
|
+
}
|
package/src/types.ts
CHANGED
|
@@ -964,8 +964,21 @@ export interface AIUsageToolConfig {
|
|
|
964
964
|
tools?: AIUsageTool[]
|
|
965
965
|
}
|
|
966
966
|
|
|
967
|
+
export type StatusBarSeparator = 'arrow' | 'round' | 'slant' | 'flame' | 'none'
|
|
968
|
+
|
|
967
969
|
export interface StatusBarConfig {
|
|
968
970
|
aiUsage?: AIUsageToolConfig
|
|
971
|
+
/**
|
|
972
|
+
* Powerline-style glyph used between status bar sections.
|
|
973
|
+
* - `arrow` (default): solid triangles ( / )
|
|
974
|
+
* - `round`: solid semicircles ( / )
|
|
975
|
+
* - `slant`: solid slopes ( / )
|
|
976
|
+
* - `flame`: solid flame ribbons ( / )
|
|
977
|
+
* - `none`: no glyph, sections snap via background colour only
|
|
978
|
+
*
|
|
979
|
+
* All non-`none` options require a nerd-font / powerline-capable font.
|
|
980
|
+
*/
|
|
981
|
+
separator?: StatusBarSeparator
|
|
969
982
|
}
|
|
970
983
|
|
|
971
984
|
export interface ExternalEditorConfig {
|
|
@@ -991,6 +1004,20 @@ export interface ExternalEditorConfig {
|
|
|
991
1004
|
terminal?: string[]
|
|
992
1005
|
}
|
|
993
1006
|
|
|
1007
|
+
export interface AimuxIntegrationsConfig {
|
|
1008
|
+
/**
|
|
1009
|
+
* Opt-in: install Claude Code lifecycle hooks into `~/.claude/settings.json`
|
|
1010
|
+
* so per-tab activity (working / waiting-input / idle) is driven by Claude's
|
|
1011
|
+
* own events rather than visual scraping of the terminal. Off by default.
|
|
1012
|
+
*
|
|
1013
|
+
* When enabled, aimux writes six entries marked `__aimux: true` into the
|
|
1014
|
+
* user's settings file at startup, and the daemon publishes a hook URL on
|
|
1015
|
+
* `127.0.0.1` for Claude to call back into. Unrelated hooks the user has
|
|
1016
|
+
* configured are preserved. See `docs/guide/claude-integration.md`.
|
|
1017
|
+
*/
|
|
1018
|
+
claudeHooks?: boolean
|
|
1019
|
+
}
|
|
1020
|
+
|
|
994
1021
|
export interface AimuxUserConfig {
|
|
995
1022
|
theme?: AimuxThemeConfig
|
|
996
1023
|
keymaps?: (k: KeymapBuilderApi) => KeymapBuilderApi
|
|
@@ -1010,6 +1037,7 @@ export interface AimuxUserConfig {
|
|
|
1010
1037
|
multiRepo?: Partial<MultiRepoConfig>
|
|
1011
1038
|
statusBar?: StatusBarConfig
|
|
1012
1039
|
externalEditor?: ExternalEditorConfig
|
|
1040
|
+
integrations?: AimuxIntegrationsConfig
|
|
1013
1041
|
}
|
|
1014
1042
|
|
|
1015
1043
|
// ─── Resolved config (internal) ───────────────────────────────────────────────
|
|
@@ -1083,4 +1111,7 @@ export interface ResolvedConfig {
|
|
|
1083
1111
|
multiRepo: MultiRepoConfig
|
|
1084
1112
|
statusBar: StatusBarConfig
|
|
1085
1113
|
externalEditor: ExternalEditorConfig
|
|
1114
|
+
integrations: {
|
|
1115
|
+
claudeHooks: boolean
|
|
1116
|
+
}
|
|
1086
1117
|
}
|