@anaclumos/taal 1.1.7 → 1.1.8

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anaclumos/taal",
3
- "version": "1.1.7",
3
+ "version": "1.1.8",
4
4
  "description": "CLI tool to sync MCP server configs and Agent Skills across AI coding assistants",
5
5
  "type": "module",
6
6
  "bin": {
@@ -2,6 +2,20 @@ import { homedir } from "node:os";
2
2
  import { loadTaalConfig } from "../config/loader.js";
3
3
  import { initializeProviders, registry } from "../providers/index.js";
4
4
 
5
+ function sortObjectKeys(obj: unknown): unknown {
6
+ if (obj === null || typeof obj !== "object") {
7
+ return obj;
8
+ }
9
+ if (Array.isArray(obj)) {
10
+ return obj.map(sortObjectKeys);
11
+ }
12
+ const sorted: Record<string, unknown> = {};
13
+ for (const key of Object.keys(obj).sort()) {
14
+ sorted[key] = sortObjectKeys((obj as Record<string, unknown>)[key]);
15
+ }
16
+ return sorted;
17
+ }
18
+
5
19
  export interface DiffChange {
6
20
  type: "add" | "remove" | "modify";
7
21
  serverName: string;
@@ -73,9 +87,13 @@ export async function diff(
73
87
 
74
88
  for (const key of taalKeys) {
75
89
  if (currentKeys.has(key)) {
76
- const currentValue = JSON.stringify(currentServers[key]);
90
+ const currentValue = JSON.stringify(
91
+ sortObjectKeys(currentServers[key])
92
+ );
77
93
  const newValue = JSON.stringify(
78
- (transformedServers as Record<string, unknown>)[key]
94
+ sortObjectKeys(
95
+ (transformedServers as Record<string, unknown>)[key]
96
+ )
79
97
  );
80
98
 
81
99
  if (currentValue !== newValue) {
package/DIAGNOSTIC.md DELETED
@@ -1,75 +0,0 @@
1
- # Trusted Publishing Diagnostic
2
-
3
- ## Current Error
4
-
5
- The v1.1.6 workflow failed with:
6
- ```
7
- npm notice Access token expired or revoked. Please try logging in again.
8
- npm error 404 Not Found - PUT https://registry.npmjs.org/@anaclumos%2ftaal - Not found
9
- ```
10
-
11
- This means OIDC authentication is NOT working. The issue is likely in the npmjs.com configuration.
12
-
13
- ## Verification Checklist
14
-
15
- ### 1. Verify Trusted Publisher Configuration
16
-
17
- Go to: https://www.npmjs.com/package/@anaclumos/taal/access
18
-
19
- Under "Trusted Publisher", you should see:
20
- - ✅ **Provider**: GitHub Actions
21
- - ✅ **Organization or user**: `anaclumos` (EXACTLY - case sensitive)
22
- - ✅ **Repository**: `taal` (EXACTLY - case sensitive)
23
- - ✅ **Workflow filename**: `publish.yml` (EXACTLY - must include .yml extension)
24
- - ✅ **Environment name**: (leave EMPTY unless you use GitHub environments)
25
-
26
- **CRITICAL**: All fields are case-sensitive and must match EXACTLY.
27
-
28
- ### 2. Verify Publishing Access Settings
29
-
30
- Still on the same page, under "Publishing Access":
31
-
32
- You should have selected: **"Require two-factor authentication and disallow tokens"**
33
-
34
- NOT:
35
- - ❌ "Require two-factor authentication or automation tokens"
36
- - ❌ "No restrictions"
37
-
38
- ### 3. Verify You Saved
39
-
40
- Make sure you clicked **"Update Package Settings"** at the bottom of the page.
41
-
42
- ### 4. Screenshot
43
-
44
- Can you take a screenshot of your npmjs.com package settings and show me?
45
-
46
- ## Common Mistakes
47
-
48
- 1. **Workflow filename without .yml extension**: Must be `publish.yml` not just `publish`
49
- 2. **Case mismatch**: Repository name must match exactly (`taal` not `Taal` or `TAAL`)
50
- 3. **Organization vs user**: Make sure it's your username `anaclumos`, not an organization
51
- 4. **Didn't save**: Settings won't take effect until you click "Update Package Settings"
52
- 5. **Wrong publishing access setting**: Must select "disallow tokens" to allow OIDC
53
-
54
- ## Next Steps
55
-
56
- 1. Double-check ALL settings above
57
- 2. Make sure you clicked "Update Package Settings"
58
- 3. If everything looks correct, try again:
59
- ```bash
60
- npm version patch
61
- git push --follow-tags
62
- ```
63
-
64
- ## Alternative: Use Token (Temporary)
65
-
66
- If you want to publish NOW while we debug trusted publishing:
67
-
68
- 1. Create a Granular Access Token on npmjs.com (Read and write access)
69
- 2. Add it as NPM_TOKEN secret:
70
- ```bash
71
- gh secret set NPM_TOKEN --body "npm_YOUR_TOKEN_HERE"
72
- ```
73
- 3. Re-run workflow
74
-
75
- But trusted publishing is better - let's get it working!
package/FIX_2FA_ISSUE.md DELETED
@@ -1,81 +0,0 @@
1
- # FIX: 2FA Blocking Trusted Publishing
2
-
3
- ## The Problem
4
-
5
- Your workflow is failing with:
6
- ```
7
- npm error code EOTP
8
- npm error This operation requires a one-time password from your authenticator.
9
- ```
10
-
11
- This happens because your NPM account requires 2FA for publishing, which blocks OIDC authentication.
12
-
13
- ## The Solution
14
-
15
- You need to **configure your package** to allow trusted publishers to bypass 2FA:
16
-
17
- ### Step 1: Go to Package Settings
18
-
19
- Visit: https://www.npmjs.com/package/@anaclumos/taal/access
20
-
21
- ### Step 2: Configure Publishing Access
22
-
23
- Scroll down to **"Publishing Access"** section.
24
-
25
- Select: **"Require two-factor authentication and disallow tokens"**
26
-
27
- ![Publishing Access Settings](https://docs.npmjs.com/packages-and-modules/securing-your-code/trusted-publisher-security.png)
28
-
29
- This option:
30
- - ✅ **Allows** trusted publishers (OIDC) to publish without OTP
31
- - ❌ **Blocks** token-based authentication
32
- - ✅ **Maintains** security through OIDC
33
-
34
- ### Step 3: Save
35
-
36
- Click **"Update Package Settings"** at the bottom.
37
-
38
- ### Step 4: Test
39
-
40
- Re-run the failed workflow:
41
- ```bash
42
- cd /Users/cho/Developer/taal
43
- gh run rerun 21076753514
44
- ```
45
-
46
- Or create a new version:
47
- ```bash
48
- npm version patch
49
- git push --follow-tags
50
- ```
51
-
52
- ## Why This Works
53
-
54
- When you select "Require two-factor authentication and disallow tokens":
55
- - Traditional token-based publishing is **blocked**
56
- - Trusted publishing via OIDC is **allowed** (no OTP needed)
57
- - Security is **enhanced** (OIDC is more secure than tokens + OTP)
58
-
59
- ## Alternative (Less Secure)
60
-
61
- If the above doesn't work, you can temporarily disable 2FA requirement:
62
-
63
- 1. Go to: https://www.npmjs.com/package/@anaclumos/taal/access
64
- 2. Select: "Require two-factor authentication or automation/integration tokens (recommended)"
65
- 3. Save
66
-
67
- **Note**: This is less secure. The first option is better.
68
-
69
- ## Verification
70
-
71
- After configuration, the workflow should:
72
- 1. ✅ Authenticate via OIDC (no OTP needed)
73
- 2. ✅ Generate provenance automatically
74
- 3. ✅ Publish successfully
75
-
76
- ## Troubleshooting
77
-
78
- If it still fails:
79
- 1. Check that trusted publisher is configured correctly (anaclumos/taal/publish.yml)
80
- 2. Verify you saved the "Publishing Access" settings
81
- 3. Check workflow logs: `gh run view --log-failed`
@@ -1,87 +0,0 @@
1
- # NPM Trusted Publishing Setup
2
-
3
- This project uses **NPM Trusted Publishing** with OIDC authentication - no NPM tokens needed!
4
-
5
- ## What is Trusted Publishing?
6
-
7
- Trusted publishing uses OpenID Connect (OIDC) to authenticate GitHub Actions workflows directly with npm, eliminating the need for long-lived access tokens. This is more secure because:
8
-
9
- - No secrets to manage or rotate
10
- - Short-lived, workflow-specific credentials
11
- - Cannot be extracted or reused
12
- - Automatic provenance generation
13
-
14
- ## Setup Instructions
15
-
16
- ### Step 1: Configure Trusted Publisher on npmjs.com
17
-
18
- 1. **Go to your package settings**:
19
- - Visit: https://www.npmjs.com/package/@anaclumos/taal/access
20
- - Or navigate to: npmjs.com → Your package → Settings → Publishing Access
21
-
22
- 2. **Find "Trusted Publisher" section**
23
-
24
- 3. **Click "GitHub Actions" button**
25
-
26
- 4. **Fill in the configuration**:
27
- - **Organization or user**: `anaclumos`
28
- - **Repository**: `taal`
29
- - **Workflow filename**: `publish.yml`
30
- - **Environment name**: (leave empty)
31
-
32
- 5. **Save the configuration**
33
-
34
- ### Step 2: Verify Workflow Configuration
35
-
36
- The workflow is already configured correctly in `.github/workflows/publish.yml`:
37
-
38
- ```yaml
39
- permissions:
40
- id-token: write # Required for OIDC
41
- contents: read
42
-
43
- - run: npm publish --access public # No NODE_AUTH_TOKEN needed!
44
- ```
45
-
46
- ### Step 3: Test Publishing
47
-
48
- Once you've configured the trusted publisher on npmjs.com:
49
-
50
- 1. Create a new version tag:
51
- ```bash
52
- npm version patch
53
- git push --follow-tags
54
- ```
55
-
56
- 2. GitHub Actions will automatically:
57
- - Run tests and linter
58
- - Publish to npm using OIDC
59
- - Generate provenance attestations
60
-
61
- ## Troubleshooting
62
-
63
- ### "Unable to authenticate" error
64
-
65
- - Verify the workflow filename matches exactly: `publish.yml`
66
- - Check that all fields are correct (case-sensitive)
67
- - Ensure you're using GitHub-hosted runners (not self-hosted)
68
- - Confirm `id-token: write` permission is set
69
-
70
- ### Workflow still failing
71
-
72
- - Check that you saved the trusted publisher configuration on npmjs.com
73
- - Verify the repository and organization names match exactly
74
- - Review the workflow logs for specific error messages
75
-
76
- ## Benefits
77
-
78
- ✅ **No secrets management** - No NPM_TOKEN to rotate or secure
79
- ✅ **Automatic provenance** - Cryptographic proof of package origin
80
- ✅ **Enhanced security** - Short-lived, scoped credentials
81
- ✅ **Simpler workflow** - Less configuration, fewer moving parts
82
-
83
- ## Learn More
84
-
85
- - [NPM Trusted Publishing Docs](https://docs.npmjs.com/trusted-publishers)
86
- - [GitHub OIDC Documentation](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect)
87
- - [NPM Provenance](https://docs.npmjs.com/generating-provenance-statements)