Class NarrativeTraceFeedbackTask

java.lang.Object
org.gradle.api.internal.AbstractTask
org.gradle.api.DefaultTask
ai.narrativetrace.gradle.NarrativeTraceFeedbackTask
All Implemented Interfaces:
Comparable<org.gradle.api.Task>, org.gradle.api.internal.DynamicObjectAware, org.gradle.api.internal.TaskInternal, org.gradle.api.Named, org.gradle.api.plugins.ExtensionAware, org.gradle.api.Task, org.gradle.util.Configurable<org.gradle.api.Task>

public abstract class NarrativeTraceFeedbackTask extends org.gradle.api.DefaultTask
narrativetraceFeedback: drafts a problem report about NarrativeTrace from this project, refuses to write one that carries a value from the project's own traces, and prints either the whole draft or the pre-filled issue-form URL.

INTENT: the agent-facing spelling of the same verb the narrativetrace CLI carries, for the same reason narrativetraceDoctor exists beside narrativetrace doctor — an agent skill's closed command vocabulary is the repo's own Gradle wrapper, and a skill may never instruct installing a global tool. Both entry points call the same narrativetrace-tooling classes in-process; neither depends on the other.

@llmNote Two channels here, not three. The gh channel is the CLI's, and deliberately not duplicated: deciding whether to offer it means asking an installed gh whether it is signed in, and a second copy of that probe in this plugin would be a second thing to keep true. gh is a convenience for people who already live in that tool — and those people have a terminal.

@llmNote This task sends NOTHING and opens nothing. It writes two files under the extension's own output directory and prints text. Filing is the person's act, in their own browser, under their own account.

@sideEffects Writes <outputDir>/feedback/feedback-draft.md and feedback-body.md, and only when the value-free gate cleared the report.

  • Nested Class Summary

    Nested classes/interfaces inherited from interface org.gradle.api.Task

    org.gradle.api.Task.Namer
  • Field Summary

    Fields inherited from interface org.gradle.api.Task

    TASK_ACTION, TASK_CONSTRUCTOR_ARGS, TASK_DEPENDS_ON, TASK_DESCRIPTION, TASK_GROUP, TASK_NAME, TASK_OVERWRITE, TASK_TYPE
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
     
    abstract org.gradle.api.provider.Property<String>
     
    abstract org.gradle.api.provider.Property<String>
     
    abstract org.gradle.api.file.ConfigurableFileCollection
    The resolved agent-skills carrier, read exactly as narrativetraceDoctor reads it.
    abstract org.gradle.api.provider.Property<String>
    The coordinate the carrier was asked for — what "could not resolve it" has to be able to say.
    abstract org.gradle.api.provider.Property<String>
     
    abstract org.gradle.api.provider.Property<String>
     
    abstract org.gradle.api.provider.Property<String>
     
    abstract org.gradle.api.provider.Property<String>
     
    abstract org.gradle.api.provider.Property<String>
     
    abstract org.gradle.api.provider.Property<String>
     
    abstract org.gradle.api.file.DirectoryProperty
    Where the two files land: the extension's output directory, feedback/ inside it.
    abstract org.gradle.api.provider.Property<String>
     
    abstract org.gradle.api.file.DirectoryProperty
    The project the report is about — this project's own directory in real use.
    abstract org.gradle.api.provider.Property<String>
     

    Methods inherited from class org.gradle.api.DefaultTask

    compareTo, configure, dependsOn, doFirst, doFirst, doFirst, doLast, doLast, doLast, finalizedBy, getActions, getAnt, getDependsOn, getDescription, getDestroyables, getDidWork, getEnabled, getExtensions, getFinalizedBy, getGroup, getInputs, getLocalState, getLogger, getLogging, getMustRunAfter, getName, getOutputs, getPath, getProject, getShouldRunAfter, getState, getTaskDependencies, getTemporaryDir, getTimeout, hasProperty, mustRunAfter, onlyIf, onlyIf, onlyIf, property, setActions, setDependsOn, setDescription, setDidWork, setEnabled, setFinalizedBy, setGroup, setMustRunAfter, setOnlyIf, setOnlyIf, setOnlyIf, setProperty, setShouldRunAfter, shouldRunAfter, usesService

    Methods inherited from class org.gradle.api.internal.AbstractTask

    acceptServiceReferences, appendParallelSafeAction, doNotTrackState, getAsDynamicObject, getConvention, getIdentityPath, getImpliesSubProjects, getLifecycleDependencies, getOnlyIf, getReasonNotToTrackState, getReasonTaskIsIncompatibleWithConfigurationCache, getRequiredServices, getServices, getSharedResources, getStandardOutputCapture, getTaskActions, getTaskIdentity, getTemporaryDirFactory, hasTaskActions, injectIntoNewInstance, isCompatibleWithConfigurationCache, isEnabled, isHasCustomActions, notCompatibleWithConfigurationCache, prependParallelSafeAction, setImpliesSubProjects

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface org.gradle.api.Task

    doNotTrackState, getConvention, notCompatibleWithConfigurationCache
  • Constructor Details

    • NarrativeTraceFeedbackTask

      public NarrativeTraceFeedbackTask()
  • Method Details

    • getTargetDir

      @Internal public abstract org.gradle.api.file.DirectoryProperty getTargetDir()
      The project the report is about — this project's own directory in real use.
    • getOutputDir

      @Internal public abstract org.gradle.api.file.DirectoryProperty getOutputDir()
      Where the two files land: the extension's output directory, feedback/ inside it.
    • getCarrier

      @Internal public abstract org.gradle.api.file.ConfigurableFileCollection getCarrier()
      The resolved agent-skills carrier, read exactly as narrativetraceDoctor reads it.
    • getCarrierCoordinate

      @Input public abstract org.gradle.api.provider.Property<String> getCarrierCoordinate()
      The coordinate the carrier was asked for — what "could not resolve it" has to be able to say.
    • getChannel

      @Input public abstract org.gradle.api.provider.Property<String> getChannel()
    • getCategory

      @Input public abstract org.gradle.api.provider.Property<String> getCategory()
    • getStep

      @Input public abstract org.gradle.api.provider.Property<String> getStep()
    • getDid

      @Input public abstract org.gradle.api.provider.Property<String> getDid()
    • getHappened

      @Input public abstract org.gradle.api.provider.Property<String> getHappened()
    • getExpected

      @Input public abstract org.gradle.api.provider.Property<String> getExpected()
    • getLanguage

      @Input public abstract org.gradle.api.provider.Property<String> getLanguage()
    • getAgentProduct

      @Input public abstract org.gradle.api.provider.Property<String> getAgentProduct()
    • getAgentModel

      @Input public abstract org.gradle.api.provider.Property<String> getAgentModel()
    • getTrace

      @Input public abstract org.gradle.api.provider.Property<String> getTrace()
    • draftReport

      public void draftReport()