claude-scope 0.1.2 → 0.1.4
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/constants.d.ts +56 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +57 -0
- package/dist/constants.js.map +1 -0
- package/dist/core/renderer.d.ts +33 -3
- package/dist/core/renderer.d.ts.map +1 -1
- package/dist/core/renderer.js +49 -7
- package/dist/core/renderer.js.map +1 -1
- package/dist/core/stdin-data-widget.d.ts +85 -0
- package/dist/core/stdin-data-widget.d.ts.map +1 -0
- package/dist/core/stdin-data-widget.js +75 -0
- package/dist/core/stdin-data-widget.js.map +1 -0
- package/dist/core/widget-types.d.ts +30 -0
- package/dist/core/widget-types.d.ts.map +1 -0
- package/dist/core/widget-types.js +30 -0
- package/dist/core/widget-types.js.map +1 -0
- package/dist/data/stdin-provider.d.ts +44 -0
- package/dist/data/stdin-provider.d.ts.map +1 -0
- package/dist/data/stdin-provider.js +83 -0
- package/dist/data/stdin-provider.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +64 -21
- package/dist/index.js.map +1 -1
- package/dist/providers/git-provider.d.ts +55 -32
- package/dist/providers/git-provider.d.ts.map +1 -1
- package/dist/providers/git-provider.js +63 -40
- package/dist/providers/git-provider.js.map +1 -1
- package/dist/providers/stdin-provider.d.ts +16 -15
- package/dist/providers/stdin-provider.d.ts.map +1 -1
- package/dist/providers/stdin-provider.js +35 -66
- package/dist/providers/stdin-provider.js.map +1 -1
- package/dist/schemas/stdin-schema.d.ts +123 -0
- package/dist/schemas/stdin-schema.d.ts.map +1 -0
- package/dist/schemas/stdin-schema.js +81 -0
- package/dist/schemas/stdin-schema.js.map +1 -0
- package/dist/types.d.ts +13 -15
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -1
- package/dist/ui/utils/colors.d.ts +52 -0
- package/dist/ui/utils/colors.d.ts.map +1 -0
- package/dist/ui/utils/colors.js +54 -0
- package/dist/ui/utils/colors.js.map +1 -0
- package/dist/ui/utils/formatters.d.ts +56 -0
- package/dist/ui/utils/formatters.d.ts.map +1 -0
- package/dist/ui/utils/formatters.js +114 -0
- package/dist/ui/utils/formatters.js.map +1 -0
- package/dist/utils/colors.d.ts +16 -0
- package/dist/utils/colors.d.ts.map +1 -1
- package/dist/utils/colors.js +18 -0
- package/dist/utils/colors.js.map +1 -1
- package/dist/utils/formatters.d.ts +56 -0
- package/dist/utils/formatters.d.ts.map +1 -0
- package/dist/utils/formatters.js +114 -0
- package/dist/utils/formatters.js.map +1 -0
- package/dist/widgets/context-widget.d.ts +13 -0
- package/dist/widgets/context-widget.d.ts.map +1 -0
- package/dist/widgets/context-widget.js +31 -0
- package/dist/widgets/context-widget.js.map +1 -0
- package/dist/widgets/core/stdin-data-widget.d.ts +93 -0
- package/dist/widgets/core/stdin-data-widget.d.ts.map +1 -0
- package/dist/widgets/core/stdin-data-widget.js +84 -0
- package/dist/widgets/core/stdin-data-widget.js.map +1 -0
- package/dist/widgets/cost-widget.d.ts +13 -0
- package/dist/widgets/cost-widget.d.ts.map +1 -0
- package/dist/widgets/cost-widget.js +18 -0
- package/dist/widgets/cost-widget.js.map +1 -0
- package/dist/widgets/duration-widget.d.ts +13 -0
- package/dist/widgets/duration-widget.d.ts.map +1 -0
- package/dist/widgets/duration-widget.js +18 -0
- package/dist/widgets/duration-widget.js.map +1 -0
- package/dist/widgets/git/git-changes-widget.d.ts +38 -0
- package/dist/widgets/git/git-changes-widget.d.ts.map +1 -0
- package/dist/widgets/git/git-changes-widget.js +91 -0
- package/dist/widgets/git/git-changes-widget.js.map +1 -0
- package/dist/widgets/git/git-widget.d.ts +37 -0
- package/dist/widgets/git/git-widget.d.ts.map +1 -0
- package/dist/widgets/git/git-widget.js +67 -0
- package/dist/widgets/git/git-widget.js.map +1 -0
- package/dist/widgets/git-changes-widget.d.ts +16 -0
- package/dist/widgets/git-changes-widget.d.ts.map +1 -0
- package/dist/widgets/git-changes-widget.js +37 -0
- package/dist/widgets/git-changes-widget.js.map +1 -0
- package/dist/widgets/git-widget.d.ts +8 -2
- package/dist/widgets/git-widget.d.ts.map +1 -1
- package/dist/widgets/git-widget.js +9 -9
- package/dist/widgets/git-widget.js.map +1 -1
- package/dist/widgets/model-widget.d.ts +13 -0
- package/dist/widgets/model-widget.d.ts.map +1 -0
- package/dist/widgets/model-widget.js +15 -0
- package/dist/widgets/model-widget.js.map +1 -0
- package/package.json +14 -6
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git status widget
|
|
3
|
+
* Displays current git branch
|
|
4
|
+
*
|
|
5
|
+
* NOTE: This widget implements IWidget directly (not extending StdinDataWidget)
|
|
6
|
+
* because it requires async git operations with custom lifecycle management.
|
|
7
|
+
*/
|
|
8
|
+
import type { IWidget, WidgetContext, RenderContext, StdinData } from '../../core/types.js';
|
|
9
|
+
import type { IGit } from '../../providers/git-provider.js';
|
|
10
|
+
/**
|
|
11
|
+
* Widget displaying git branch information
|
|
12
|
+
*
|
|
13
|
+
* Uses Dependency Injection for IGit to enable:
|
|
14
|
+
* - Easy testing with MockGit
|
|
15
|
+
* - No tight coupling to git implementation
|
|
16
|
+
* - Clean separation of concerns
|
|
17
|
+
*/
|
|
18
|
+
export declare class GitWidget implements IWidget {
|
|
19
|
+
readonly id = "git";
|
|
20
|
+
readonly metadata: import("../../core/types.js").IWidgetMetadata;
|
|
21
|
+
private gitFactory;
|
|
22
|
+
private git;
|
|
23
|
+
private enabled;
|
|
24
|
+
private cwd;
|
|
25
|
+
/**
|
|
26
|
+
* @param gitFactory - Optional factory function for creating IGit instances
|
|
27
|
+
* If not provided, uses default createGit (production)
|
|
28
|
+
* Tests can inject MockGit factory here
|
|
29
|
+
*/
|
|
30
|
+
constructor(gitFactory?: (cwd: string) => IGit);
|
|
31
|
+
initialize(context: WidgetContext): Promise<void>;
|
|
32
|
+
render(context: RenderContext): Promise<string | null>;
|
|
33
|
+
update(data: StdinData): Promise<void>;
|
|
34
|
+
isEnabled(): boolean;
|
|
35
|
+
cleanup(): Promise<void>;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=git-widget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-widget.d.ts","sourceRoot":"","sources":["../../../src/widgets/git/git-widget.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAE5F,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iCAAiC,CAAC;AAG5D;;;;;;;GAOG;AACH,qBAAa,SAAU,YAAW,OAAO;IACvC,QAAQ,CAAC,EAAE,SAAS;IACpB,QAAQ,CAAC,QAAQ,gDAGf;IAEF,OAAO,CAAC,UAAU,CAAwB;IAC1C,OAAO,CAAC,GAAG,CAAqB;IAChC,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,GAAG,CAAuB;IAElC;;;;OAIG;gBACS,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI;IAIxC,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjD,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAoBtD,MAAM,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ5C,SAAS,IAAI,OAAO;IAId,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git status widget
|
|
3
|
+
* Displays current git branch
|
|
4
|
+
*
|
|
5
|
+
* NOTE: This widget implements IWidget directly (not extending StdinDataWidget)
|
|
6
|
+
* because it requires async git operations with custom lifecycle management.
|
|
7
|
+
*/
|
|
8
|
+
import { createWidgetMetadata } from '../../core/widget-types.js';
|
|
9
|
+
import { createGit } from '../../providers/git-provider.js';
|
|
10
|
+
/**
|
|
11
|
+
* Widget displaying git branch information
|
|
12
|
+
*
|
|
13
|
+
* Uses Dependency Injection for IGit to enable:
|
|
14
|
+
* - Easy testing with MockGit
|
|
15
|
+
* - No tight coupling to git implementation
|
|
16
|
+
* - Clean separation of concerns
|
|
17
|
+
*/
|
|
18
|
+
export class GitWidget {
|
|
19
|
+
id = 'git';
|
|
20
|
+
metadata = createWidgetMetadata('Git Widget', 'Displays current git branch');
|
|
21
|
+
gitFactory;
|
|
22
|
+
git = null;
|
|
23
|
+
enabled = true;
|
|
24
|
+
cwd = null;
|
|
25
|
+
/**
|
|
26
|
+
* @param gitFactory - Optional factory function for creating IGit instances
|
|
27
|
+
* If not provided, uses default createGit (production)
|
|
28
|
+
* Tests can inject MockGit factory here
|
|
29
|
+
*/
|
|
30
|
+
constructor(gitFactory) {
|
|
31
|
+
this.gitFactory = gitFactory || createGit;
|
|
32
|
+
}
|
|
33
|
+
async initialize(context) {
|
|
34
|
+
this.enabled = context.config?.enabled !== false;
|
|
35
|
+
}
|
|
36
|
+
async render(context) {
|
|
37
|
+
if (!this.enabled || !this.git || !this.cwd) {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
try {
|
|
41
|
+
const status = await this.git.status();
|
|
42
|
+
const branch = status.current || null;
|
|
43
|
+
if (!branch) {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
return ` ${branch}`;
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
// Log specific error for debugging but return null (graceful degradation)
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
async update(data) {
|
|
54
|
+
// Re-initialize git if cwd changed
|
|
55
|
+
if (data.cwd !== this.cwd) {
|
|
56
|
+
this.cwd = data.cwd;
|
|
57
|
+
this.git = this.gitFactory(data.cwd);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
isEnabled() {
|
|
61
|
+
return this.enabled;
|
|
62
|
+
}
|
|
63
|
+
async cleanup() {
|
|
64
|
+
// No cleanup needed for native git implementation
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=git-widget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-widget.js","sourceRoot":"","sources":["../../../src/widgets/git/git-widget.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAE5D;;;;;;;GAOG;AACH,MAAM,OAAO,SAAS;IACX,EAAE,GAAG,KAAK,CAAC;IACX,QAAQ,GAAG,oBAAoB,CACtC,YAAY,EACZ,6BAA6B,CAC9B,CAAC;IAEM,UAAU,CAAwB;IAClC,GAAG,GAAgB,IAAI,CAAC;IACxB,OAAO,GAAG,IAAI,CAAC;IACf,GAAG,GAAkB,IAAI,CAAC;IAElC;;;;OAIG;IACH,YAAY,UAAkC;QAC5C,IAAI,CAAC,UAAU,GAAG,UAAU,IAAI,SAAS,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAsB;QACrC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,OAAO,KAAK,KAAK,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAsB;QACjC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAC5C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;YACvC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC;YAEtC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO,IAAI,MAAM,EAAE,CAAC;QACtB,CAAC;QAAC,MAAM,CAAC;YACP,0EAA0E;YAC1E,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAe;QAC1B,mCAAmC;QACnC,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC;YAC1B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;YACpB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,OAAO;QACX,kDAAkD;IACpD,CAAC;CACF"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git Changes Widget
|
|
3
|
+
*
|
|
4
|
+
* Displays git diff statistics
|
|
5
|
+
*/
|
|
6
|
+
import { StdinDataWidget } from '../core/stdin-data-widget.js';
|
|
7
|
+
import type { IGit } from '../providers/git-provider.js';
|
|
8
|
+
import type { RenderContext } from '../core/types.js';
|
|
9
|
+
export declare class GitChangesWidget extends StdinDataWidget {
|
|
10
|
+
private gitProvider;
|
|
11
|
+
readonly id = "git-changes";
|
|
12
|
+
readonly metadata: import("../core/types.js").IWidgetMetadata;
|
|
13
|
+
constructor(gitProvider: IGit);
|
|
14
|
+
render(context: RenderContext): Promise<string | null>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=git-changes-widget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-changes-widget.d.ts","sourceRoot":"","sources":["../../src/widgets/git-changes-widget.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,qBAAa,gBAAiB,SAAQ,eAAe;IAOvC,OAAO,CAAC,WAAW;IAN/B,QAAQ,CAAC,EAAE,iBAAiB;IAC5B,QAAQ,CAAC,QAAQ,6CAGf;gBAEkB,WAAW,EAAE,IAAI;IAI/B,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAoB7D"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git Changes Widget
|
|
3
|
+
*
|
|
4
|
+
* Displays git diff statistics
|
|
5
|
+
*/
|
|
6
|
+
import { StdinDataWidget } from '../core/stdin-data-widget.js';
|
|
7
|
+
import { createWidgetMetadata } from '../core/widget-types.js';
|
|
8
|
+
export class GitChangesWidget extends StdinDataWidget {
|
|
9
|
+
gitProvider;
|
|
10
|
+
id = 'git-changes';
|
|
11
|
+
metadata = createWidgetMetadata('Git Changes', 'Displays git diff statistics');
|
|
12
|
+
constructor(gitProvider) {
|
|
13
|
+
super();
|
|
14
|
+
this.gitProvider = gitProvider;
|
|
15
|
+
}
|
|
16
|
+
async render(context) {
|
|
17
|
+
let changes;
|
|
18
|
+
try {
|
|
19
|
+
changes = await this.gitProvider.diffStats();
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
if (!changes)
|
|
25
|
+
return null;
|
|
26
|
+
if (changes.insertions === 0 && changes.deletions === 0) {
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
const parts = [];
|
|
30
|
+
if (changes.insertions > 0)
|
|
31
|
+
parts.push(`+${changes.insertions}`);
|
|
32
|
+
if (changes.deletions > 0)
|
|
33
|
+
parts.push(`-${changes.deletions}`);
|
|
34
|
+
return parts.join(',');
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=git-changes-widget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-changes-widget.js","sourceRoot":"","sources":["../../src/widgets/git-changes-widget.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAI/D,MAAM,OAAO,gBAAiB,SAAQ,eAAe;IAO/B;IANX,EAAE,GAAG,aAAa,CAAC;IACnB,QAAQ,GAAG,oBAAoB,CACtC,aAAa,EACb,8BAA8B,CAC/B,CAAC;IAEF,YAAoB,WAAiB;QACnC,KAAK,EAAE,CAAC;QADU,gBAAW,GAAX,WAAW,CAAM;IAErC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAsB;QACjC,IAAI,OAAO,CAAC;QACZ,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;QAC/C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAE1B,IAAI,OAAO,CAAC,UAAU,KAAK,CAAC,IAAI,OAAO,CAAC,SAAS,KAAK,CAAC,EAAE,CAAC;YACxD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,OAAO,CAAC,UAAU,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QACjE,IAAI,OAAO,CAAC,SAAS,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAE/D,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;CACF"}
|
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Git status widget
|
|
3
3
|
* Displays current git branch
|
|
4
|
+
*
|
|
5
|
+
* NOTE: This widget implements IWidget directly (not extending StdinDataWidget)
|
|
6
|
+
* because it has different lifecycle requirements:
|
|
7
|
+
* - Uses GitProvider instead of transforming StdinData directly
|
|
8
|
+
* - Maintains internal state (currentCwd) for change detection
|
|
9
|
+
* - Needs to reinitialize GitProvider when cwd changes
|
|
4
10
|
*/
|
|
5
|
-
import type { IWidget,
|
|
11
|
+
import type { IWidget, WidgetContext, RenderContext, StdinData } from '../core/types.js';
|
|
6
12
|
import type { GitProviderDeps } from '../providers/git-provider.js';
|
|
7
13
|
/**
|
|
8
14
|
* Git widget dependencies
|
|
@@ -15,7 +21,7 @@ export interface GitWidgetDeps {
|
|
|
15
21
|
*/
|
|
16
22
|
export declare class GitWidget implements IWidget {
|
|
17
23
|
readonly id = "git";
|
|
18
|
-
readonly metadata: IWidgetMetadata;
|
|
24
|
+
readonly metadata: import("../core/types.js").IWidgetMetadata;
|
|
19
25
|
private gitProvider;
|
|
20
26
|
private enabled;
|
|
21
27
|
private currentCwd;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-widget.d.ts","sourceRoot":"","sources":["../../src/widgets/git-widget.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"git-widget.d.ts","sourceRoot":"","sources":["../../src/widgets/git-widget.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACzF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAIpE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC;CAC7B;AAED;;GAEG;AACH,qBAAa,SAAU,YAAW,OAAO;IACvC,QAAQ,CAAC,EAAE,SAAS;IACpB,QAAQ,CAAC,QAAQ,6CAGf;IAEF,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,UAAU,CAAM;gBAEZ,IAAI,EAAE,aAAa;IAIzB,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjD,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAatD,MAAM,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAO5C,SAAS,IAAI,OAAO;IAId,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
|
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Git status widget
|
|
3
3
|
* Displays current git branch
|
|
4
|
+
*
|
|
5
|
+
* NOTE: This widget implements IWidget directly (not extending StdinDataWidget)
|
|
6
|
+
* because it has different lifecycle requirements:
|
|
7
|
+
* - Uses GitProvider instead of transforming StdinData directly
|
|
8
|
+
* - Maintains internal state (currentCwd) for change detection
|
|
9
|
+
* - Needs to reinitialize GitProvider when cwd changes
|
|
4
10
|
*/
|
|
5
11
|
import { GitProvider } from '../providers/git-provider.js';
|
|
12
|
+
import { createWidgetMetadata } from '../core/widget-types.js';
|
|
6
13
|
/**
|
|
7
14
|
* Widget displaying git branch information
|
|
8
15
|
*/
|
|
9
16
|
export class GitWidget {
|
|
10
17
|
id = 'git';
|
|
11
|
-
metadata =
|
|
12
|
-
name: 'Git Widget',
|
|
13
|
-
description: 'Displays current git branch',
|
|
14
|
-
version: '1.0.0',
|
|
15
|
-
author: 'claude-scope'
|
|
16
|
-
};
|
|
18
|
+
metadata = createWidgetMetadata('Git Widget', 'Displays current git branch');
|
|
17
19
|
gitProvider;
|
|
18
20
|
enabled = true;
|
|
19
21
|
currentCwd = '';
|
|
@@ -21,8 +23,7 @@ export class GitWidget {
|
|
|
21
23
|
this.gitProvider = new GitProvider({ git: deps.git });
|
|
22
24
|
}
|
|
23
25
|
async initialize(context) {
|
|
24
|
-
|
|
25
|
-
this.enabled = context.config.enabled !== false;
|
|
26
|
+
this.enabled = context.config?.enabled !== false;
|
|
26
27
|
}
|
|
27
28
|
async render(context) {
|
|
28
29
|
if (!this.enabled || !this.gitProvider.isRepo()) {
|
|
@@ -32,7 +33,6 @@ export class GitWidget {
|
|
|
32
33
|
if (!branch) {
|
|
33
34
|
return null;
|
|
34
35
|
}
|
|
35
|
-
// Simple format: branch-name
|
|
36
36
|
return ` ${branch}`;
|
|
37
37
|
}
|
|
38
38
|
async update(data) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-widget.js","sourceRoot":"","sources":["../../src/widgets/git-widget.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"git-widget.js","sourceRoot":"","sources":["../../src/widgets/git-widget.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAS/D;;GAEG;AACH,MAAM,OAAO,SAAS;IACX,EAAE,GAAG,KAAK,CAAC;IACX,QAAQ,GAAG,oBAAoB,CACtC,YAAY,EACZ,6BAA6B,CAC9B,CAAC;IAEM,WAAW,CAAc;IACzB,OAAO,GAAG,IAAI,CAAC;IACf,UAAU,GAAG,EAAE,CAAC;IAExB,YAAY,IAAmB;QAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAsB;QACrC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,OAAO,KAAK,KAAK,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAsB;QACjC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;YAChD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;QAClD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,MAAM,EAAE,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAe;QAC1B,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;YACjC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC;YAC3B,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,OAAO;QACX,2BAA2B;IAC7B,CAAC;CACF"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model Widget
|
|
3
|
+
*
|
|
4
|
+
* Displays the current Claude model name
|
|
5
|
+
*/
|
|
6
|
+
import { StdinDataWidget } from './core/stdin-data-widget.js';
|
|
7
|
+
import type { RenderContext, StdinData } from '../types.js';
|
|
8
|
+
export declare class ModelWidget extends StdinDataWidget {
|
|
9
|
+
readonly id = "model";
|
|
10
|
+
readonly metadata: import("../core/types.js").IWidgetMetadata;
|
|
11
|
+
protected renderWithData(data: StdinData, context: RenderContext): string | null;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=model-widget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-widget.d.ts","sourceRoot":"","sources":["../../src/widgets/model-widget.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE5D,qBAAa,WAAY,SAAQ,eAAe;IAC9C,QAAQ,CAAC,EAAE,WAAW;IACtB,QAAQ,CAAC,QAAQ,6CAGf;IAEF,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI;CAGjF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model Widget
|
|
3
|
+
*
|
|
4
|
+
* Displays the current Claude model name
|
|
5
|
+
*/
|
|
6
|
+
import { StdinDataWidget } from './core/stdin-data-widget.js';
|
|
7
|
+
import { createWidgetMetadata } from '../core/widget-types.js';
|
|
8
|
+
export class ModelWidget extends StdinDataWidget {
|
|
9
|
+
id = 'model';
|
|
10
|
+
metadata = createWidgetMetadata('Model', 'Displays the current Claude model name');
|
|
11
|
+
renderWithData(data, context) {
|
|
12
|
+
return data.model.display_name;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=model-widget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-widget.js","sourceRoot":"","sources":["../../src/widgets/model-widget.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAG/D,MAAM,OAAO,WAAY,SAAQ,eAAe;IACrC,EAAE,GAAG,OAAO,CAAC;IACb,QAAQ,GAAG,oBAAoB,CACtC,OAAO,EACP,wCAAwC,CACzC,CAAC;IAEQ,cAAc,CAAC,IAAe,EAAE,OAAsB;QAC9D,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;IACjC,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claude-scope",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"description": "Claude Code plugin for session status and analytics",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "dist/index.js",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"types": "./dist/index.d.ts"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
8
14
|
"bin": {
|
|
9
15
|
"claude-scope": "./dist/index.js"
|
|
10
16
|
},
|
|
@@ -15,14 +21,16 @@
|
|
|
15
21
|
],
|
|
16
22
|
"scripts": {
|
|
17
23
|
"build": "tsc",
|
|
18
|
-
"test": "tsx --test tests
|
|
19
|
-
"test:unit": "tsx --test tests/unit
|
|
20
|
-
"test:integration": "tsx --test tests/integration
|
|
21
|
-
"test:coverage": "c8 --reporter=text --reporter=html --exclude='tests/**' --exclude='**/*.test.ts' tsx --test tests
|
|
24
|
+
"test": "tsx --test tests/e2e/stdin-flow.test.ts tests/integration/cli-flow.integration.test.ts tests/integration/five-widgets.integration.test.ts tests/unit/cli.test.ts tests/unit/types.test.ts tests/unit/core/*.test.ts tests/unit/data/*.test.ts tests/unit/utils/*.test.ts tests/unit/widgets/*.test.ts",
|
|
25
|
+
"test:unit": "tsx --test tests/unit/cli.test.ts tests/unit/types.test.ts tests/unit/core/*.test.ts tests/unit/data/*.test.ts tests/unit/utils/*.test.ts tests/unit/widgets/*.test.ts",
|
|
26
|
+
"test:integration": "tsx --test tests/e2e/stdin-flow.test.ts tests/integration/cli-flow.integration.test.ts tests/integration/five-widgets.integration.test.ts",
|
|
27
|
+
"test:coverage": "c8 --reporter=text --reporter=html --exclude='tests/**' --exclude='**/*.test.ts' tsx --test tests/e2e/stdin-flow.test.ts tests/integration/cli-flow.integration.test.ts tests/integration/five-widgets.integration.test.ts tests/unit/cli.test.ts tests/unit/types.test.ts tests/unit/core/*.test.ts tests/unit/data/*.test.ts tests/unit/utils/*.test.ts tests/unit/widgets/*.test.ts",
|
|
28
|
+
"test:snapshot": "SNAPSHOT_UPDATE=true tsx --test tests/e2e/stdin-flow.test.ts tests/integration/cli-flow.integration.test.ts tests/integration/five-widgets.integration.test.ts tests/unit/cli.test.ts tests/unit/types.test.ts tests/unit/core/*.test.ts tests/unit/data/*.test.ts tests/unit/utils/*.test.ts tests/unit/widgets/*.test.ts",
|
|
29
|
+
"test:snapshot:verify": "tsx --test tests/e2e/stdin-flow.test.ts tests/integration/cli-flow.integration.test.ts tests/integration/five-widgets.integration.test.ts tests/unit/cli.test.ts tests/unit/types.test.ts tests/unit/core/*.test.ts tests/unit/data/*.test.ts tests/unit/utils/*.test.ts tests/unit/widgets/*.test.ts",
|
|
22
30
|
"dev": "tsx src/index.ts"
|
|
23
31
|
},
|
|
24
32
|
"dependencies": {
|
|
25
|
-
"
|
|
33
|
+
"zod": "^4.3.5"
|
|
26
34
|
},
|
|
27
35
|
"devDependencies": {
|
|
28
36
|
"@types/node": "^22.10.2",
|